chiark / gitweb /
autopkgtests: provide t-git and pari-extra_3-1.git.tar (not currently used)
[dgit.git] / tests / lib
1 #
2
3 exec 2>&1
4 set -x
5
6 root=`pwd`
7 troot=$root/tests
8 testname="${0##*/}"
9
10 tmp=$ADTTMP
11 if [ x"$tmp" = x ]; then
12         mkdir -p tests/tmp
13         tmp=tests/tmp/$testname
14         rm -rf $tmp
15         mkdir $tmp
16 fi
17 cd $tmp
18 tmp=`pwd`
19 export DGIT_TEST_DUMMY_DIR=$tmp
20 ln $troot/ssh ssh
21
22 mkdir $tmp/gnupg
23 cp $troot/gnupg/* $tmp/gnupg
24 chmod go-rw $tmp/gnupg/*
25 export GNUPGHOME=$tmp/gnupg
26
27 mkdir $tmp/incoming
28 cat <<END >$tmp/dput.cf
29 [test-dummy]
30 method                  = local
31 incoming                = $tmp/incoming
32 run_dinstall            = 0
33 END
34
35 t-worktree () {
36         rm -rf $p
37         tar xf $troot/worktrees/${p}_$1.tar
38 }
39
40 t-git () {
41         mkdir -p $tmp/git
42         (set -e; cd $tmp/git; tar xf $troot/git-srcs/${p}_$v.git.tar)
43 }
44
45 t-git-none () {
46         mkdir -p $tmp/git
47         (set -e; cd $tmp/git; tar xf $troot/git-template.tar)
48 }
49
50 t-has-ancestor () {
51         local ancestor=`git rev-parse $1`
52         local now=`git rev-parse HEAD`
53         local mbase=`git merge-base $ancestor $now`
54         if [ x$mbase != x$ancestor ]; then
55                 echo "not ff $ancestor..$now, $mbase != $ancestor"
56                 exit 1
57         fi
58 }       
59
60 t-archive-none () {
61         p=$1
62         mkdir -p $tmp/aq $tmp/mirror
63         echo sid >$tmp/aq/suite.unstable
64 }
65
66 t-archive () {
67         t-archive-none $1
68         v=$2
69         local dscf=${p}_$2.dsc
70         rm -f $tmp/mirror/${p}_*
71         ln $troot/pkg-srcs/${p}_${2%-*}* $tmp/mirror/
72         echo "$2 $dscf" >>$tmp/aq/package.sid.${p}
73         rm -rf $tmp/extract
74         mkdir $tmp/extract
75         (set -e; cd $tmp/extract; dpkg-source -x ../mirror/$dscf)
76 }
77
78 t-dgit () {
79         : '{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{'
80         ${DGIT_TEST-dgit} --dget:-u --dput:--config=$tmp/dput.cf \
81                 -dtest-dummy -D -k39B13D8A "$@"
82         : '}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}'
83 }
84
85 t-diff-nogit () {
86         diff --exclude=.git -ruN $*
87 }
88
89 t-cloned-fetched-good () {
90         t-diff-nogit ../extract/$p-${v%-*} .
91         t-clean-on-branch dgit/sid
92         t-refs-same \
93                 refs/heads/dgit/sid \
94                 refs/remotes/dgit/dgit/sid
95         t-refs-notexist dgit/unstable remotes/dgit/dgit/unstable
96 }
97
98 t-output () {
99         printf "%s\n" "$1" >$tmp/t.want
100         shift
101         "$@" >$tmp/t.got
102         diff $tmp/t.want $tmp/t.got
103 }
104
105 t-clean-on-branch () {
106         t-output "## $1" git status -b --porcelain
107 }
108
109 t-git-get-ref () {
110         local ref=$1
111         git show-ref -d $1 | perl -ne '
112                 $x = $1 if m#^(\w+) \Q'$1'\E(?:\^\{\})?$#;
113                 END { print "$x\n" if length $x; }
114         '
115 }
116
117 t-refs-same () {
118         local f=$1
119         t-git-get-ref $f >$tmp/t.ref1
120         t-refs-same-more "$@"
121 }
122
123 t-refs-same-more () {
124         local g
125         for g in $*; do
126                 t-git-get-ref $g >$tmp/t.refn
127                 diff $tmp/t.ref1 $tmp/t.refn
128         done
129 }
130
131 t-refs-notexist () {
132         for g in $*; do
133                 t-git-get-ref $g >$tmp/t.refx
134                 diff /dev/null $tmp/t.refx
135         done
136 }
137
138 t-v-tag () {
139         echo refs/tags/debian/${v//\~/_}
140 }
141
142 t-pushed-good () {
143         local branch=$1
144         t-ref-dsc-dgit
145         t-refs-same-more \
146                 refs/heads/$branch \
147                 `t-v-tag` \
148                 refs/remotes/dgit/dgit/sid
149         t-refs-notexist \
150                 refs/heads/dgit/unstable \
151                 refs/remotes/dgit/dgit/unstable
152         (set -e; cd $tmp/git/$p.git
153          t-refs-same-more \
154                 refs/dgit/sid \
155                 `t-v-tag`
156          t-refs-notexist \
157                 refs/dgit/unstable
158         )
159 }
160
161 t-ref-dsc-dgit () {
162         perl -e '
163                 use Dpkg::Control::Hash;
164                 my $h = new Dpkg::Control::Hash allow_pgp=>1;
165                 $h->parse(\*STDIN,"dsc");
166                 my $ref = $h->{"Dgit"},"\n";
167                 die unless $ref =~ m/^\w+\b/;
168                 print $ref,"\n";
169         ' <$tmp/incoming/${p}_${v}.dsc >$tmp/t.ref1
170 }
171
172 t-apply-diff () {
173         local v1=$1
174         local v2=$2
175         (cd $troot/pkg-srcs; debdiff ${p}_${v1}.dsc ${p}_${v2}.dsc) \
176                 | patch -p1 -u
177 }