chiark / gitweb /
git-debrebase: test suite: lib-gdr: add some t-git-next-date calls
[dgit.git] / tests / lib-gdr
index 6ffdd4b08b4110b9ac4d64bbeaee7f9d64ff9a36..17058f96108c93023000ae667250c15170f5c899 100644 (file)
@@ -1,5 +1,8 @@
 #
 
+: ${GDR_TEST_DEBUG=-D}
+export GDR_TEST_DEBUG
+
 t-git-debrebase () {
        local gdr=${DGIT_GITDEBREBASE_TEST-git-debrebase}
        : '
@@ -7,5 +10,137 @@ t-git-debrebase () {
        $gdr    $GDR_TEST_OPTS $GDR_TEST_DEBUG $t_gdr_xopts "$@"
        : '}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
 '
-       
+}
+
+t-gdr-good () {
+       local state=$1
+       local beforetag=$2 # say HEAD to skip this check
+       # state should be one of
+       #   laundered
+       #   stitched
+       #   patches
+
+       git diff --quiet ${beforetag-t.before} -- ':.' ':!debian/patches'
+
+       local etype netype bwtip
+
+       case $state in
+       laundered)
+                       etype=Upstream
+                       bwtip=Y:`t-git-debrebase breakwater`
+               ;;
+       stitched)       etype=Pseudomerge ;;
+       pushed)         etype=AddPatches; netype=Pseudomerge ;;
+       esac
+
+       t-git-debrebase analyse >../anal.check
+       expect=`git rev-parse HEAD`
+       exec <../anal.check
+       local cid ctype info nparents
+       while read cid ctype info; do
+               : ===== $cid $ctype $info =====
+               test $cid = $expect
+               local cetype=$etype
+               if [ "x$ctype" = "x$etype" ]; then cetype=SAME; fi
+               local parents="`git log -n1 --pretty=format:%P $cid`"
+               expect="$parents"
+               enparents=1
+               : "$ctype/$cetype" "$parents"
+
+               case "$ctype/$cetype" in
+               Pseudomerge/SAME)                       ;;
+               Packaging/SAME)                         ;;
+               Packaging/Upstream)                     ;;
+               AddPatches/SAME)                        ;;
+               Changelog/Packaging)                    ;;
+               Changelog/Upstream)                     ;;
+               Upstream/SAME)                          ;;
+               BreakwaterUpstreamMerge/Upstream)       ;;
+               BreakwaterUpstreamMerge/Packaging)      ;;
+               *)
+                       fail "etype=$etype ctype=$ctype cetype=$cetype $cid"
+                       ;;
+               esac
+
+               case "$ctype/$etype" in
+               Packaging/Upstream|\
+               Changelog/Upstream)
+                       if [ "x$bwtip" != x ]; then
+                               test "$bwtip" = "Y:$cid"
+                               bwtip=''
+                       fi
+               esac
+
+               case "$ctype" in
+               Pseudomerge)
+                       expect=${info#Contributor=}
+                       expect=${expect%% *}
+                       enparents=2
+                       git diff --quiet $expect..$cid
+                       etype=Upstream
+                       ;;
+               Packaging)
+                       git diff --quiet $expect..$cid -- ':.' ':!debian' 
+                       git diff --quiet $expect..$cid -- ':debian/patches'
+                       etype=Packaging
+                       ;;
+               AddPatches)
+                       git diff --quiet $expect..$cid -- \
+                               ':.' ':!debian/patches'
+                       etype=$netype
+                       netype=Upstream
+                       ;;
+               Changelog)
+                       git diff --quiet $expect..$cid -- \
+                               ':.' ':!debian/changelog'
+                       etype=Packaging
+                       ;;
+               Upstream/SAME)
+                       git diff --quiet $expect..$cid -- ':debian'
+                       ;;
+               BreakwaterUpstreamMerge)
+                       break
+                       ;;
+               esac
+
+               local cnparents=`printf "%s" "$parents" | wc -w`
+               test $cnparents = $enparents
+
+               case "$parents" in
+               *"$expect"*)    ;;
+               *)              fail 'unexpected parent' ;;
+               esac
+
+       done
+}
+
+t-some-changes () {
+       local token=$1
+
+       t-git-next-date
+
+       echo >>debian/zorkmid "// debian $token"
+       git add debian/zorkmid
+       git commit -m "DEBIAN add zorkmid ($token)"
+
+       echo >>src.c "// upstream $token"
+       git commit -a -m "UPSTREAM edit src.c ($token)"
+
+       for f in debian/zorkmid src.c; do
+               echo "// both! $token" >>$f
+               git add $f
+       done
+       git commit -m "MIXED add both ($token)"
+
+       t-git-next-date
+}
+
+t-make-new-upstream-tarball () {
+       local uv=$1
+       git checkout make-upstream
+       # leaves ust set to filename of orig tarball
+       echo "upstream $uv" >>docs/README
+       git commit -a -m "upstream $uv tarball"
+       ust=example_$uv.orig.tar.gz
+       git archive -o ../$ust --prefix=example-2.0/ make-upstream
 }