commit - 833eae2911c004d4184a5d629403327fb85f9b07
commit + 5bda3ef83752a447e1afc97850d2bd6bd250ca55
blob - 32c922210f36d14f9c0ec9049fbeca34d9690528
blob + 9784f978ae60d478844d4cb437e1bb1a6113a07e
--- regress/cmdline/backout.sh
+++ regress/cmdline/backout.sh
return 1
fi
+ echo "new" > $testroot/wt/new
+ (cd $testroot/wt && got add new > /dev/null)
echo "modified alpha" > $testroot/wt/alpha
- (cd $testroot/wt && got commit -m "changing alpha" > /dev/null)
+ (cd $testroot/wt && got rm epsilon/zeta > /dev/null)
+ (cd $testroot/wt && got commit -m "bad changes" > /dev/null)
local bad_commit=`git_show_head $testroot/repo`
(cd $testroot/wt && got backout $bad_commit > $testroot/stdout)
echo "G alpha" > $testroot/stdout.expected
+ echo "A epsilon/zeta" >> $testroot/stdout.expected
+ echo "D new" >> $testroot/stdout.expected
echo "Backed out commit $bad_commit" >> $testroot/stdout.expected
cmp -s $testroot/stdout.expected $testroot/stdout
ret="$?"
return 1
fi
+ if [ -e "$testroot/wt/new" ]; then
+ echo "file '$testroot/wt/new' still exists on disk" >&2
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+
+ if [ ! -e "$testroot/wt/epsilon/zeta" ]; then
+ echo "file '$testroot/wt/epsilon/zeta' is missing on disk" >&2
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+
echo 'M alpha' > $testroot/stdout.expected
+ echo 'A epsilon/zeta' >> $testroot/stdout.expected
+ echo 'D new' >> $testroot/stdout.expected
(cd $testroot/wt && got status > $testroot/stdout)
cmp -s $testroot/stdout.expected $testroot/stdout
ret="$?"
test_done "$testroot" "$ret"
}
+function test_backout_edits_for_file_since_deleted {
+ local testroot=`test_init backout_edits_for_file_since_deleted`
+
+ got checkout $testroot/repo $testroot/wt > /dev/null
+ ret="$?"
+ if [ "$ret" != "0" ]; then
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+
+ echo "modified alpha" > $testroot/wt/alpha
+ (cd $testroot/wt && got commit -m "changing alpha" > /dev/null)
+
+ local bad_commit=`git_show_head $testroot/repo`
+
+
+ (cd $testroot/wt && got update > /dev/null)
+
+ (cd $testroot/wt && got rm alpha > /dev/null)
+ (cd $testroot/wt && got commit -m "removing alpha" > /dev/null)
+
+ (cd $testroot/wt && got update > /dev/null)
+
+ (cd $testroot/wt && got backout $bad_commit > $testroot/stdout)
+
+ echo "! alpha" > $testroot/stdout.expected
+ echo "Backed out commit $bad_commit" >> $testroot/stdout.expected
+ cmp -s $testroot/stdout.expected $testroot/stdout
+ ret="$?"
+ if [ "$ret" != "0" ]; then
+ diff -u $testroot/stdout.expected $testroot/stdout
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+
+ if [ -e "$testroot/wt/alpha" ]; then
+ echo "file '$testroot/wt/alpha' still exists on disk" >&2
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+
+ echo -n '' > $testroot/stdout.expected
+ (cd $testroot/wt && got status > $testroot/stdout)
+ cmp -s $testroot/stdout.expected $testroot/stdout
+ ret="$?"
+ if [ "$ret" != "0" ]; then
+ diff -u $testroot/stdout.expected $testroot/stdout
+ fi
+ test_done "$testroot" "$ret"
+}
+
+function test_backout_next_commit {
+ local testroot=`test_init backout_next_commit`
+ local commit0=`git_show_head $testroot/repo`
+
+ got checkout $testroot/repo $testroot/wt > /dev/null
+ ret="$?"
+ if [ "$ret" != "0" ]; then
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+
+ echo "new" > $testroot/wt/new
+ (cd $testroot/wt && got add new > /dev/null)
+ echo "modified alpha" > $testroot/wt/alpha
+ (cd $testroot/wt && got rm epsilon/zeta > /dev/null)
+ (cd $testroot/wt && got commit -m "bad changes" > /dev/null)
+
+ local bad_commit=`git_show_head $testroot/repo`
+
+ (cd $testroot/wt && got update -c $commit0 > /dev/null)
+
+ (cd $testroot/wt && got backout $bad_commit > $testroot/stdout)
+
+ echo "G alpha" > $testroot/stdout.expected
+ echo "G epsilon/zeta" >> $testroot/stdout.expected
+ echo "! new" >> $testroot/stdout.expected
+ echo "Backed out commit $bad_commit" >> $testroot/stdout.expected
+ cmp -s $testroot/stdout.expected $testroot/stdout
+ ret="$?"
+ if [ "$ret" != "0" ]; then
+ diff -u $testroot/stdout.expected $testroot/stdout
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+
+ if [ -e "$testroot/wt/new" ]; then
+ echo "file '$testroot/wt/new' still exists on disk" >&2
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+
+ echo "zeta" > $testroot/content.expected
+ cat $testroot/wt/epsilon/zeta > $testroot/content
+ cmp -s $testroot/content.expected $testroot/content
+ ret="$?"
+ if [ "$ret" != "0" ]; then
+ diff -u $testroot/content.expected $testroot/content
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+
+ echo -n '' > $testroot/stdout.expected
+ (cd $testroot/wt && got status > $testroot/stdout)
+ cmp -s $testroot/stdout.expected $testroot/stdout
+ ret="$?"
+ if [ "$ret" != "0" ]; then
+ diff -u $testroot/stdout.expected $testroot/stdout
+ fi
+ test_done "$testroot" "$ret"
+}
+
+
run_test test_backout_basic
+run_test test_backout_edits_for_file_since_deleted
+run_test test_backout_next_commit