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