commit 71a293558dcac7d17b10ae63f911aaf3f5b30df2 from: Stefan Sperling date: Wed Mar 27 06:48:54 2019 UTC fix behaviour when 'got rm' is used twice commit - 5c99ca9fe447187c440a413772fb14201f30a1d2 commit + 71a293558dcac7d17b10ae63f911aaf3f5b30df2 blob - f03a291f54519d33c2b6fe8f0a15db38ae579f7f blob + c7e43f24fcf6a959ee0878eb5068515bd4b4ffdd --- lib/worktree.c +++ lib/worktree.c @@ -1754,6 +1754,10 @@ got_worktree_schedule_delete(struct got_worktree *work goto done; if (status != GOT_STATUS_NO_CHANGE) { + if (status == GOT_STATUS_DELETE) { + err = got_error_set_errno(ENOENT); + goto done; + } if (status != GOT_STATUS_MODIFY) { err = got_error(GOT_ERR_FILE_STATUS); goto done; blob - 8753e23b6747409f7a3892319ef732fac8c6a45c blob + 581cd66614db2ea20eaec0082fa7a5c0188032fb --- regress/cmdline/rm.sh +++ regress/cmdline/rm.sh @@ -84,5 +84,37 @@ function test_rm_with_local_mods { test_done "$testroot" "$ret" } +function test_double_rm { + local testroot=`test_init double_rm` + + 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) + + for fflag in "" "-f"; do + echo "got: No such file or directory" > $testroot/stderr.expected + (cd $testroot/wt && got rm $fflag beta 2> $testroot/stderr) + ret="$?" + if [ "$ret" == "0" ]; then + echo "got rm command succeeded unexpectedly" >&2 + test_done "$testroot" 1 + fi + + cmp $testroot/stderr.expected $testroot/stderr + ret="$?" + if [ "$ret" != "0" ]; then + diff -u $testroot/stderr.expected $testroot/stderr + test_done "$testroot" "$ret" + fi + done + test_done "$testroot" "0" +} + run_test test_rm_basic run_test test_rm_with_local_mods +run_test test_double_rm