commit e70a841e31bd4ee0543f62e77fa61dfd23584344 from: Stefan Sperling date: Thu Aug 08 12:15:39 2019 UTC test repeated stage -p on added and deleted files commit - af5a81b2eac713f9ff649d8a82c984af072118e9 commit + e70a841e31bd4ee0543f62e77fa61dfd23584344 blob - 5c1b2314ca3927e9ef85f9dacf370e17809169b5 blob + b243918da52c5dd89f59a9cf7576437b4a03ea4b --- regress/cmdline/stage.sh +++ regress/cmdline/stage.sh @@ -1856,11 +1856,76 @@ function test_stage_patch_added { echo "+++ epsilon/new" >> $testroot/stdout.expected echo "@@ -0,0 +1 @@" >> $testroot/stdout.expected echo "+new" >> $testroot/stdout.expected + 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_stage_patch_added_twice { + local testroot=`test_init stage_patch_added_twice` + local commit_id=`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/epsilon/new + (cd $testroot/wt && got add epsilon/new > /dev/null) + + printf "y\n" > $testroot/patchscript + (cd $testroot/wt && got stage -F $testroot/patchscript -p \ + epsilon/new > $testroot/stdout) + + echo "A epsilon/new" > $testroot/stdout.expected + echo "stage this addition? [y/n] y" >> $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 + + (cd $testroot/wt && got status > $testroot/stdout) + echo " A epsilon/new" > $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 + + (cd $testroot/wt && got stage -F $testroot/patchscript -p \ + epsilon/new > $testroot/stdout 2> $testroot/stderr) + ret="$?" + if [ "$ret" == "0" ]; then + echo "got stage command succeeded unexpectedly" >&2 + test_done "$testroot" "1" + return 1 + fi + + echo "got: epsilon/new: no changes to stage" > $testroot/stderr.expected + cmp -s $testroot/stderr.expected $testroot/stderr + ret="$?" + if [ "$ret" != "0" ]; then + diff -u $testroot/stderr.expected $testroot/stderr + test_done "$testroot" "$ret" + return 1 + fi + + echo -n > $testroot/stdout.expected + cmp -s $testroot/stdout.expected $testroot/stdout + ret="$?" + if [ "$ret" != "0" ]; then + diff -u $testroot/stdout.expected $testroot/stdout + fi test_done "$testroot" "$ret" } @@ -1923,6 +1988,72 @@ function test_stage_patch_removed { test_done "$testroot" "$ret" } +function test_stage_patch_removed_twice { + local testroot=`test_init stage_patch_removed_twice` + local commit_id=`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 + + (cd $testroot/wt && got rm beta > /dev/null) + + printf "y\n" > $testroot/patchscript + (cd $testroot/wt && got stage -F $testroot/patchscript -p \ + beta > $testroot/stdout) + + echo -n > $testroot/stdout.expected + + echo "D beta" > $testroot/stdout.expected + echo "stage this deletion? [y/n] y" >> $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 + + (cd $testroot/wt && got status > $testroot/stdout) + echo " D beta" > $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 + + (cd $testroot/wt && got stage -F $testroot/patchscript -p beta \ + > $testroot/stdout 2> $testroot/stderr) + ret="$?" + if [ "$ret" != "0" ]; then + echo "got stage command failed unexpectedly" >&2 + test_done "$testroot" "$ret" + return 1 + fi + + echo -n > $testroot/stderr.expected + cmp -s $testroot/stderr.expected $testroot/stderr + ret="$?" + if [ "$ret" != "0" ]; then + diff -u $testroot/stderr.expected $testroot/stderr + test_done "$testroot" "$ret" + return 1 + fi + + echo -n > $testroot/stdout.expected + 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_stage_patch_quit { local testroot=`test_init stage_patch_quit` @@ -2147,6 +2278,8 @@ run_test test_stage_commit run_test test_stage_patch run_test test_stage_patch_twice run_test test_stage_patch_added +run_test test_stage_patch_added_twice run_test test_stage_patch_removed +run_test test_stage_patch_removed_twice run_test test_stage_patch_quit run_test test_stage_patch_incomplete_script