chiark / gitweb /
git-debrebase: merge: test suite: Check wreckage saving
[dgit.git] / tests / tests / badcommit-rewrite
index bcec8e66b2df1d9d3299d7391ba61792c1fcdd68..3e2f37e71da47ab893a671e8dfa147a6283bb6d3 100755 (executable)
@@ -3,8 +3,14 @@ set -e
 . tests/lib
 
 t-setup-import examplegit
+t-tstunt-parsechangelog
 
-cd example
+cd $tmp/git/$p.git
+git config core.sharedRepository true
+chmod -R g+w objects
+umask 022
+
+cd $tmp/example
 
 suite=stable
 
@@ -22,15 +28,35 @@ rstable=refs/remotes/dgit/dgit/stable
 t-dgit fetch stable
 t-has-parent-or-is $rstable $badcommit
 
+fixup=${DGIT_BADCOMMIT_FIXUP-dgit-badcommit-fixup}
+
 cd $tmp/git/$p.git
-${DGIT_BADCOMMIT_FIXUP} --real
+git gc --aggressive --prune=all
+rmdir objects/* ||:
+
+$fixup --real
 
 cd $tmp/$p
-${DGIT_BADCOMMIT_FIXUP} --real
+git symbolic-ref HEAD >../sym.before
+git rev-parse HEAD >../ref.before
+
+$fixup --real
+
+git symbolic-ref HEAD >../sym.after
+git rev-parse HEAD >../ref.after
+diff ../sym.before ../sym.after
+set +e; diff ../ref.before ../ref.after; rc=$?; set -e; test $rc = 1
 
 t-dgit fetch stable
 
 t-expect-fail "child $rstable lacks parent $badcommit" \
 t-has-parent-or-is $rstable $badcommit
 
+check_shared () {
+       find "$1" -perm -200 \! -perm -020 -ls |tee $tmp/badperm
+       test -f $tmp/badperm -a ! -s $tmp/badperm
+}
+
+check_shared $tmp/git/$p.git/objects
+
 t-ok