summaryrefslogtreecommitdiff
path: root/tests/tests/tagupl
blob: aa47e57318babf3a584fa3f01595039ea7f5d975 (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
#!/bin/bash
set -e
. tests/lib

t-dependencies DEBORIG git-debpush

t-debpolicy

t-archive-none example
t-git-none
t-worktree 1.0

v=1.0-1

t-tagupl-settings

cd $p
git checkout -b native 

git checkout --orphan upstream quilt-tip-2
git rm -rf debian
git commit -m 'pseudo-upstream'
git tag upstream/1.0

git checkout -B master quilt-tip-2

upstream=$(git rev-parse upstream/1.0~0)
tagname=test-dummy/$v

t-tagupl-test --no-push --quilt=gbp

# xxx test pushing

# todo: test each miss/rejection

ident=ok

git cat-file tag $tagname >../basetag
v=1.0-2
tagname=test-dummy/$v

perl -i -ne '
	next if $.==1../^$/;
	next if m/^----/..0;
	s/\b1\.0-1\b/1.0-2/g;
	print or die $!;
' ../basetag

mv-ident () {
	local f=$tmp/$1
	if test -e $f; then
		mv $f $f--$ident
	fi
}

next-mangle () {
	mv-ident tagupl/overall.log
	mv-ident sendmail.log
	ident=$1
}

with-mangled () {
	local perl=$1
	perl <../basetag >../badtag-$ident -pe "$perl"
	git tag -u Senatus -f -s -m "$(cat ../badtag-$ident)" "$tagname"

	t-tagupl-run-drs
}

expect-quit () {
	next-mangle "$1"
	local perl=$2
	local mstring=$3
	with-mangled "$perl"
	grep ": $mstring" ../tagupl/overall.log
}

expect-email () {
	next-mangle "$1"
	local perl=$2
	local mstring=$3
	with-mangled "$perl"
	grep 'Was not successful' ../sendmail.log
	grep "$mstring" ../sendmail.log
	grep ": failed, emailed" ../tagupl/overall.log
}

tagname=test-dummy/1.2
t-expect-fail E:'failed command: git fetch' \
t-tagupl-run-drs

tagname=splorf/$v     ; expect-quit baddistro '' 'tag name not for us'
tagname=test-dummy/1,2; expect-quit badver    '' 'tag name not for us'
tagname=test-dummy/$v

expect-quit noplease s/please-upload/plunk/ 'tag missing please-upload'

expect-email vermatch 's/^example release /$&3/' 'reject: version mismatch'

# we are going to trash $p because it will contain corrupted objects
# which makes our end-of-test fsck fail
cp -al ../$p ../$p.save
cd ../$p

next-mangle badtagger
git cat-file tag test-dummy/1.0-1 | perl -pe '
	s/\+\d+$/xyz/ if m/^tagger /;
	exit 0 if m/^$/;
' >../tagobj-$ident
echo >>../tagobj-$ident
cat ../basetag >>../tagobj-$ident
git update-ref $tagname $(git hash-object -w -t tag ../tagobj-$ident)

cd ..
rm -rf $p
mv $p.save $p

t-ok