summaryrefslogtreecommitdiff
path: root/tests/lib-import-chk
blob: 88984c1b625ebf61425aecfb882f939f1eab2fe0 (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
t-import-chk-authorship () {
	perl -ne 'print $1,"\n" if m/^ -- (\S.*\>)  /' debian/changelog \
		| sort -u \
		> $tmp/authorship.changelog
	${import_chk_changelog_massage:-:} $tmp/authorship.changelog
	git log --pretty=format:'%an <%ae>%n%cn <%ce>' \
		| sort -u \
		> $tmp/authorship.commits
	diff $tmp/authorship.{changelog,commits}
}

t-import-chk1 () {
	p=$1
	v=$2

	t-archive $p $v
}
t-import-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

	t-import-chk-authorship

	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#/$# || m#^\.git/#;
		' ../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 ..
}

t-import-chk() { t-import-chk1 "$@"; t-import-chk2; }