chiark / gitweb /
test suite: checkout: Check we end up on the right branch each time
[dgit.git] / tests / tests / gdr-subcommands
index 623211292ef2c96d9fd4ddc4d43531145565026a..e59fc07aaeab6ada1e0a510e3be9ff8b3027d299 100755 (executable)
@@ -2,7 +2,7 @@
 set -e
 . tests/lib
 
-t-dependencies git-buildpackage libfile-fnmatch-perl faketime
+t-dependencies GDR
 
 t-setup-import gdr-convert-gbp
 
@@ -12,10 +12,16 @@ t-dgit setup-mergechangelogs
 
 mix-it () {
        t-git-next-date
+
        local m=$(git symbolic-ref HEAD)
        t-some-changes "subcommands $m 1"
-       t-dgit -wgf quilt-fixup
+
+       # we want patches mde by dgit, not gdr, for our test cases
+       t-dgit --git-debrebase=true -wgf quilt-fixup
+       t-git-next-date
+
        t-some-changes "subcommands $m 2"
+       t-git-next-date
 }
 
 git checkout -b stitched-laundered master
@@ -58,19 +64,40 @@ subcmd () {
                before=before-$work
                git branch $before
 
+               local xopts=''
+
+               case "$checkletters" in
+               XX*)
+                       fail "$checkletters" # for debugging
+                       ;;
+               esac
+
+               case "$checkletters" in
+               X*)
+                       t-expect-fail E:'snags: [0-9]* blockers' \
+                       t-git-debrebase $xopts $subcmd
+                       xopts+=' --force'
+                       next_checkletter
+                       ;;
+               esac
+
                case "$checkletters" in
                N*)
                        t-expect-fail E:. \
-                       t-git-debrebase $subcmd
-                       t-git-debrebase --noop-ok $subcmd
+                       t-git-debrebase $xopts $subcmd
+                       xopts+=' --noop-ok'
+                       next_checkletter
                        ;;
+               esac
+
+               case "$checkletters" in
                [EF]:*)
                        t-expect-fail "$checkletters" \
-                       t-git-debrebase $subcmd
+                       t-git-debrebase $xopts $subcmd
                        continue
                        ;;
                *)
-                       t-git-debrebase $subcmd
+                       t-git-debrebase $xopts $subcmd
                        ;;
                esac
 
@@ -130,7 +157,7 @@ make_check () {
                git reset --hard HEAD^1
                ;;
        P*)
-               t-dgit -wgf --quilt=check quilt-fixup
+               t-dgit -wgf --quilt=nofix quilt-fixup
                git diff HEAD~ debian/patches | egrep .
                git diff --quiet HEAD~ -- ':.' ':!debian/patches'
                git reset --hard HEAD~
@@ -145,10 +172,14 @@ make_check () {
        f*)
                t-has-ancestor HEAD refs/heads/$before
                ;;
+       *)
+               fail "$1"
+               ;;
        esac
 }
 
-Ec="F:xxxdunno"
+Ec="F:No ongoing git-debrebase session"
+Ep="F:Patch export produced patch amendments"
 
 # input state:
 #  stitched?           st'd    st'd    unst'd  unst'd
@@ -160,16 +191,19 @@ Ec="F:xxxdunno"
 #
 subcmd ''              Ult     Ull     Vlt     Vl
 subcmd stitch          Ns      Nu      Sltf    Stf
-#subcmd        pre-push        Ns      Nu      Sltf    Stf
+subcmd prepush         Ns      Nu      Sltf    Stf
 subcmd quick           ns      Sl      Sltf    Sl
-#subcmd        conclude        "$Ec"   "$Ec"   Sltf    Sl
-#subcmd        make-patches    sPft    sPft    uPft    uPft
-#subcmd        dgit-upload-hook Psft   Psft    SPft    SPft
+subcmd conclude        "$Ec"   "$Ec"   Sltf    Sl
+subcmd make-patches    sPft    "$Ep"   uPft    "$Ep"
+#subcmd        dgit-upload-hook Psft   "$Ep"   SPft    "$Ep"
 #
 # result codes, each one is a check:
 #   E:$pat     } this is an error (must come first)
 #   F:$pat     } arg is passed to expect-fail
 #
+#   X          should fail due to snags, but succeed when forced
+#   XX         crash out of script for manual debugging
+#
 #   N          this is a noop, error unless --noop-ok
 #   n          this is a silent noop
 # both of these imply tf; but, specify also one of   u s