summaryrefslogtreecommitdiff
path: root/tests/tests/import-nonnative
blob: a1884e7ac4e6d3acc2187051cf96e3c99de137b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/bin/bash
set -e
. tests/lib

t-tstunt-parsechangelog

chk1 () {
	p=$1
	v=$2

	t-archive $p $v
}
chk2() {
	t-git-none
	rm -rf $p
	t-dgit --no-rm-on-error clone $p

	# And now we make an update using the same orig tarball, and
	# check that the orig import is stable.

	cd $p

	git branch first-import

	m='Commit for import check'
	echo "$m" >>import-check

	v=${v%-*}-99
	dch -v $v -D unstable -m "$m"

	git add import-check debian/changelog
	git commit -m "$m"

	t-dgit -wgf quilt-fixup
	t-dgit -wgf build-source

	# The resulting .dsc does not have a Dgit line (because dgit push
	# puts that in).  So we just shove it in the archive now

	ln ../${p}_${v}.* $tmp/mirror/pool/main/
	t-archive-query

	t-dgit fetch

	git branch first-2nd-import remotes/dgit/dgit/sid

	t-git-next-date

	git update-ref refs/remotes/dgit/dgit/sid first-import

	t-dgit fetch

	t-refs-same-start
	t-ref-same refs/remotes/dgit/dgit/sid
	t-ref-same refs/heads/first-2nd-import

	for orig in ../${p}_${v%-*}.orig*.tar.*; do
		tar -atf $orig | LC_ALL=C sort >../files.o
		pfx=$(perl <../files.o -ne '
			while (<>) {
				m#^([^/]+/)# or exit 0;
				$x //= $1;
				$x eq $1 or exit 0;
			}
			print "$x\n";
		')
		perl -i~ -pe '
			s#^\Q'"$pfx"'\E##;
			$_="" if m/^$/ || m#/$#;
		' ../files.o
		orig=${orig#../}
		pat="^Import ${orig//./\\.}\$"
		t-refs-same-start
		for start in first-import first-2nd-import; do
			git log --pretty='tformat:%H' --grep "$pat" $start \
				>../t.imp
			test $(wc -l <../t.imp) = 1
			imp=$(cat ../t.imp)
			t-ref-same-val "$orig $start" "$imp"
		done
		git ls-tree -r --name-only "$t_ref_val:" \
			| sort >../files.g
		diff ../files.{o,g}
	done
	cd ..
}

chk() { chk1 "$@"; chk2; }

# 1.0 with diff
chk pari-extra 3-1

# 3.0 (quilt), multiple patches, multiple origs
chk example 1.0-1

# 3.0 (quilt), single-debian-patch, one orig
chk sunxi-tools 1.2-2.~~dgittest

echo done.