summaryrefslogtreecommitdiff
path: root/tests/tests/import-nonnative
blob: 244077eceec30fd8f06f37347bdc9c1e302fa7dc (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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/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#/$# || 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 ..
}

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

mangle1 () {
	rm -f ${1}_*
	chk1 "$@"
	cd $tmp/mirror/pool/main
	dpkg-source -x ${p}_${v}.dsc td
	orig=${p}_${v%-*}.orig.tar.gz
	tar zxf $orig
	rm $orig ${p}_${v}.*
	cd $p
	mkdir urk
	echo urk >urk/urk
	export GZIP=-1
}
mangle2 () {
	cd ..
	dpkg-source -b td
	rm -rf $p td
	cd $tmp
	t-archive-none $p
	t-archive-query
	chk2
}

# 3.0 (quilt), multiple patches, tarbomb orig
mangle1 example 1.0-1
tar zvcf ../$orig *
mangle2

# 3.0 (quilt), multiple patches, tarbomb orig with dot
mangle1 example 1.0-1
tar zvcf ../$orig .
mangle2

# 3.0 (quilt), multiple patches, tarbomb orig with dot and .git
mangle1 example 1.0-1
git init
tar zvcf ../$orig .
mangle2

echo done.