The failure case which occurs on teaching git is taught the '-' shorthand is when there exists no branch pointed to by '@{-1}'. The ambiguous cases occur when there exist files named '-' or '@{-1}' in the work tree. These are also treated as failure cases but here the user is given advice as to how he can proceed. Add tests to check the handling of these cases. Also add a test to verify that reset - behaves like reset @{-1} when none of the above cases are true. Helped-by: Junio C Hamano <gitster@xxxxxxxxx> Helped-by: Torsten Bögershausen <tboegi@xxxxxx> Helped-by: Eric Sunshine <sunshine@xxxxxxxxxxxxxx> Helped-by: Matthieu Moy <Matthieu.Moy@xxxxxxxxxxxxxxx> Signed-off-by: Sundararajan R <dyoucme@xxxxxxxxx> --- Thank you for your feedback Torsten and Eric. I have now made the modifications suggested by you. I have also incorporated the suggestions given by Matthieu on the archive. Please let me know if there is something else I should add. t/t7102-reset.sh | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/t/t7102-reset.sh b/t/t7102-reset.sh index 98bcfe2..c05dab0 100755 --- a/t/t7102-reset.sh +++ b/t/t7102-reset.sh @@ -568,4 +568,94 @@ test_expect_success 'reset --mixed sets up work tree' ' test_cmp expect actual ' +test_expect_success 'reset - with no @{-1} should fail' ' + git init new && + ( + cd new && + test_must_fail git reset - 2>actual + ) && + test_i18ngrep "unknown revision" new/actual + test_when_finished rm -rf new +' + +test_expect_success 'reset - with no @{-1} and file named - should fail' ' + git init new && + ( + cd new && + echo "Hello" >- && + git add - && + test_must_fail git reset - 2>actual + ) && + test_i18ngrep "both revision and filename" new/actual + test_when_finished rm -rf new +' + +test_expect_success 'reset - with @{-1} and file named @{-1} should fail' ' + git init new && + ( + cd new && + echo "Hello" >@{-1} && + git add @{-1} && + git commit -m "first_commit" && + git checkout -b new_branch && + >@{-1} && + git add @{-1} && + test_must_fail git reset - 2>actual + ) && + test_i18ngrep "both revision and filename" new/actual + test_when_finished rm -rf new +' + +test_expect_success 'reset - with @{-1} and file named - should fail' ' + git init new && + ( + cd new && + echo "Hello" >- && + git add - && + git commit -m "first_commit" && + git checkout -b new_branch && + >- && + git add - && + test_must_fail git reset - 2>actual + ) && + test_i18ngrep "both revision and filename" new/actual + test_when_finished rm -rf new +' + +test_expect_success 'reset - with @{-1} and file named @{-1} and - should fail' ' + git init new && + ( + cd new && + >- && + git add - && + git commit -m "first_commit" && + git checkout -b new_branch + >@{-1} && + git add @{-1} && + test_must_fail git reset - 2>actual + ) && + test_i18ngrep "both revision and filename" new/actual + test_when_finished rm -rf new +' + +test_expect_success 'reset - with @{-1} and no file named - or @{-1} should succeed' ' + git init new && + ( + cd new && + echo "Hey" >new_file && + git add new_file && + git commit -m "first_commit" && + git checkout -b new_branch && + >new_file && + git add new_file && + git reset - && + git status -uno >file1 && + git add new_file && + git reset @{-1} && + git status -uno >file2 + ) && + test_cmp new/file1 new/file2 + test_when_finished rm -rf new +' + test_done -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html