chiark / gitweb /
git-debrebase: test suite: introduce t-gdr-same-as-before
[dgit.git] / tests / lib-gdr
1 #
2
3 : ${GDR_TEST_DEBUG=-D}
4 export GDR_TEST_DEBUG
5
6 t-git-debrebase () {
7         local gdr=${DGIT_GITDEBREBASE_TEST-git-debrebase}
8         : '
9 {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{'
10         $gdr    $GDR_TEST_OPTS $GDR_TEST_DEBUG $t_gdr_xopts "$@"
11         : '}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
12 '
13 }
14
15 t-gdr-same-as-before () {
16         local beforetag=$1
17         git diff ${beforetag-t.before} -- ':.' ':!debian/patches'
18 }
19
20 t-gdr-branch-structure () {
21         local state=$1
22         # state should be one of
23         #   laundered
24         #   stitched
25         #   patches
26
27         local etype netype
28
29         case $state in
30         laundered)      etype=Upstream  ;;
31         stitched)       etype=Pseudomerge ;;
32         pushed)         etype=AddPatches; netype=Pseudomerge ;;
33         esac
34
35         t-git-debrebase analyse >../anal.check
36         expect=`git rev-parse HEAD`
37         exec <../anal.check
38         local cid ctype info nparents
39         while read cid ctype info; do
40                 : ===== $cid $ctype $info =====
41                 test $cid = $expect
42                 local cetype=$etype
43                 if [ "x$ctype" = "x$etype" ]; then cetype=SAME; fi
44                 local parents="`git log -n1 --pretty=format:%P $cid`"
45                 expect="$parents"
46                 enparents=1
47                 : "$ctype/$cetype" "$parents"
48                 case "$ctype/$cetype" in
49                 Pseudomerge/SAME)
50                         expect=${info#Contributor=}
51                         expect=${expect%% *}
52                         enparents=2
53                         git diff --quiet $expect..$cid
54                         etype=Upstream
55                         ;;
56                 Packaging/SAME|\
57                 Packaging/Upstream)
58                         git diff --quiet $expect..$cid -- ':.' ':!debian' 
59                         git diff --quiet $expect..$cid -- ':debian/patches'
60                         etype=Packaging
61                         ;;
62                 AddPatches/SAME)
63                         git diff --quiet $expect..$cid -- \
64                                 ':.' ':!debian/patches'
65                         etype=$netype
66                         netype=Upstream
67                         ;;
68                 Changelog/Packaging|\
69                 Changelog/Upstream)
70                         git diff --quiet $expect..$cid -- \
71                                 ':.' ':!debian/changelog'
72                         etype=Packaging
73                         ;;
74                 Upstream/SAME)
75                         git diff --quiet $expect..$cid -- ':debian'
76                         ;;
77                 BreakwaterUpstreamMerge/Upstream| \
78                 BreakwaterUpstreamMerge/Packaging)
79                         break
80                         ;;
81                 *)
82                         fail "etype=$etype ctype=$ctype cetype=$cetype $cid"
83                         ;;
84                 esac
85
86                 local cnparents=`printf "%s" "$parents" | wc -w`
87                 test $cnparents = $enparents
88
89                 case "$parents" in
90                 *"$expect"*)    ;;
91                 *)              fail 'unexpected parent' ;;
92                 esac
93
94         done
95 }
96
97 t-some-changes () {
98         local token=$1
99
100         echo >>debian/zorkmid "// debian $token"
101         git add debian/zorkmid
102         git commit -m "DEBIAN add zorkmid ($token)"
103
104         echo >>src.c "// upstream $token"
105         git commit -a -m "UPSTREAM edit src.c ($token)"
106
107         for f in debian/zorkmid src.c; do
108                 echo "// both! $token" >>$f
109                 git add $f
110         done
111         git commit -m "MIXED add both ($token)"
112 }