chiark / gitweb /
c626c08d08702568e9dfd1f90eceabf0545624d9
[dgit.git] / tests / tests / tagupl
1 #!/bin/bash
2 set -e
3 . tests/lib
4
5 t-dependencies DEBORIG git-debpush
6
7 t-debpolicy
8
9 t-archive-none example
10 t-git-none
11 t-worktree 1.0
12
13 v=1.0-1
14
15 cd $p
16 git checkout -b native 
17
18 git checkout --orphan upstream quilt-tip-2
19 git rm -rf debian
20 git commit -m 'pseudo-upstream'
21 upstreamtag=UPSTREAM/RELEASE/1.0
22 git tag $upstreamtag
23
24 git checkout -B master quilt-tip-2
25
26 t-tagupl-settings
27
28 tagname=test-dummy/$v
29
30 t-tagupl-test --quilt=gbp --upstream=$upstreamtag
31
32 # todo: test each miss/rejection
33
34 ident=ok
35
36 git cat-file tag $tagname >../basetag
37 v=1.0-2
38 tagname=test-dummy/$v
39
40 perl -i -ne '
41         next if $.==1../^$/;
42         next if m/^----/..0;
43         s/\b1\.0-1\b/1.0-2/g;
44         print or die $!;
45 ' ../basetag
46
47 mv-ident () {
48         local f=$tmp/$1
49         if test -e $f; then
50                 mv $f $f--$ident
51         fi
52 }
53
54 next-mangle () {
55         mv-ident tagupl/overall.log
56         mv-ident sendmail.log
57         ident=$1
58 }
59
60 with-mangled () {
61         local perl=$1
62         perl <../basetag >../badtag-$ident -pe "$perl"
63         git tag -u Senatus -f -s -m "$(cat ../badtag-$ident)" "$tagname"
64
65         t-tagupl-run-drs $tmp/$p
66 }
67
68 expect-quit () {
69         next-mangle "$1"
70         local perl=$2
71         local mstring=$3
72         with-mangled "$perl"
73         grep ": $mstring" ../tagupl/overall.log
74 }
75
76 expect-email () {
77         next-mangle "$1"
78         local perl=$2
79         local mstring=$3
80         with-mangled "$perl"
81         grep 'Was not successful' ../sendmail.log
82         grep "$mstring" ../sendmail.log
83         grep ": failed, emailed" ../tagupl/overall.log
84 }
85
86 raw-mangled () {
87         git update-ref refs/tags/$tagname \
88                 $(git hash-object -w -t tag ../tagobj-$ident)
89         t-tagupl-run-drs $tmp/$p
90 }
91
92 tagname=test-dummy/1.2
93 t-expect-fail E:'failed command: git fetch' \
94 t-tagupl-run-drs $tmp/$p
95
96 tagname=splorf/$v     ; expect-quit baddistro '' 'tag name not for us'
97 tagname=test-dummy/1,2; expect-quit badver    '' 'tag name not for us'
98 tagname=test-dummy/$v
99
100 expect-quit noplease s/please-upload/plunk/ 'tag missing please-upload'
101
102 expect-email vermatch 's/^example release /$&3/' 'reject: version mismatch'
103
104 expect-email unkinfo 's/^\[dgit please-upload/$& Rejectme/' \
105         'unknown dgit info in tag'
106
107 expect-quit unkdistro 's/test-dummy/ubuntu/ if m/^\[dgit/' \
108         'not for this distro'
109
110 expect-email notsplit 's/ split / no-split /' 'reject: missing "split"'
111
112 expect-email upsnot1 's/ upstream=/ uxstream=/' \
113         'reject: upstream tag and not commitish'
114
115 expect-email upsnot2 's/ upstream-tag=/ uxstream-tag=/' \
116         'reject: upstream tag and not commitish'
117
118 expect-email bupstag1 's/ upstream-tag=/$&:/' \
119         "failed command: git check-ref-format"
120
121 expect-email bupstag2 's/ upstream-tag=/$&x/' \
122         "Couldn't find remote ref refs/tags/xUPSTREAM"
123
124 expect-email wrongver '' 'mismatch: changelog Version'
125
126 v=1.0-2
127
128 t-dch-commit -v $v -m bump
129
130 expect-email upsmism 's/ upstream=/$&3/' \
131         "but tag refers to"
132
133 expect-email wrongpkg 's/^example /explosive /' 'mismatch: changelog Source'
134
135 # we are going to trash $p because it will contain corrupted objects
136 # which makes our end-of-test fsck fail
137 cp -al ../$p ../$p.save
138 cd ../$p
139
140 git cat-file tag $tagname >../raw-base
141
142 next-mangle sigfail
143 perl -pe <../raw-base >../tagobj-$ident 's/ split / split ignoreme /'
144 raw-mangled
145 grep 'gpgv: BAD signature' ../sendmail.log
146
147 next-mangle nosig
148 perl -ne <../raw-base >../tagobj-$ident 'print unless m/^-----/..0'
149 raw-mangled
150 grep 'missing signature' ../sendmail.log
151
152 git cat-file tag test-dummy/1.0-1 >../raw-base
153
154 next-mangle badtagger
155 perl -pe <../raw-base '
156         s/\+\d+$/xyz/ if m/^tagger /;
157         exit 0 if m/^$/;
158 ' >../tagobj-$ident
159 echo >>../tagobj-$ident
160 cat ../basetag >>../tagobj-$ident
161 raw-mangled
162 grep 'failed to fish tagger out of tag' ../tagupl/overall.log
163
164 cd ..
165 rm -rf $p
166 mv $p.save $p
167
168 t-ok