Add following test cases: 1) Confirm error message when git reset is used with no previous branch 2) Confirm git reset - works like git reset @{-1} 3) Confirm "-" is always treated as a commit unless the -- file option is specified 4) Confirm "git reset -" works normally even when a file named @{-1} is present Helped-by: Eric Sunshine <sunshine@xxxxxxxxxxxxxx> Helped-by: Matthieu Moy <Matthieu.Moy@xxxxxxxxxxxxxxx> Helped-by: David Aguilar <davvid@xxxxxxxxx> Signed-off-by: Sudhanshu Shekhar <sudshekhar02@xxxxxxxxx> --- Eric: Thank you for pointing out the mistake. The '&&' after the Here Docs was causing the issue. I have removed the concatenation from there, hope that's okay. Regarding the @{-1} test case, I created it as a check for Junio's comment on the error message generated by "git reset -" when a file named @{-1} is there. Since, in this situation "git reset @{-1}" will return an error (but "reset -" shouldn't). I have renamed the folder to 'dash' as suggested by you, keeping the old name only where it made sense. t/t7102-reset.sh | 158 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) diff --git a/t/t7102-reset.sh b/t/t7102-reset.sh index 98bcfe2..18523c1 100755 --- a/t/t7102-reset.sh +++ b/t/t7102-reset.sh @@ -568,4 +568,162 @@ test_expect_success 'reset --mixed sets up work tree' ' test_cmp expect actual ' +test_expect_success 'reset - with no previous branch fails' ' + git init no_previous && + test_when_finished rm -rf no_previous && + ( + cd no_previous && + test_must_fail git reset - 2>actual + ) && + test_i18ngrep "ambiguous argument" no_previous/actual +' + +test_expect_success 'reset - while having file named - and no previous branch fails' ' + git init no_previous && + test_when_finished rm -rf no_previous && + ( + cd no_previous && + >- && + test_must_fail git reset - 2>actual + ) && + test_i18ngrep "ambiguous argument" no_previous/actual +' + + +test_expect_success \ + 'reset - in the presence of file named - with previous branch resets commit' ' + cat >expect <<-EOF + Unstaged changes after reset: + M - + M file + EOF + git init dash && + test_when_finished rm -rf dash && + ( + cd dash && + >- && + >file && + git add file - && + git commit -m "add base files" && + git checkout -b new_branch && + echo "random" >- && + echo "wow" >file && + git add file - && + git reset - >../actual + ) && + test_cmp expect actual +' +test_expect_success \ + 'reset - in the presence of file named - with -- option resets commit' ' + cat >expect <<-EOF + Unstaged changes after reset: + M - + M file + EOF + git init dash && + test_when_finished rm -rf dash && + ( + cd dash && + >- && + >file && + git add file - && + git commit -m "add base files" && + git checkout -b new_branch && + echo "random" >- && + echo "wow" >file && + git add file - && + git reset - -- >../actual + ) && + test_cmp expect actual +' + +test_expect_success 'reset - in the presence of file named - with -- file option resets file' ' + cat >expect <<-EOF + Unstaged changes after reset: + M - + EOF + git init dash && + test_when_finished rm -rf dash && + ( + cd dash && + >- && + >file && + git add file - && + git commit -m "add base files" && + git checkout -b new_branch && + echo "random" >- && + echo "wow" >file && + git add file - && + git reset -- - >../actual + ) && + test_cmp expect actual +' +test_expect_success \ + 'reset - in the presence of file named - with both pre and post -- option resets file' ' + cat >expect <<-EOF + Unstaged changes after reset: + M - + EOF + git init dash && + test_when_finished rm -rf dash && + ( + cd dash && + >- && + >file && + git add file - && + git commit -m "add base files" && + git checkout -b new_branch && + echo "random" >- && + echo "wow" >file && + git add file - && + git reset - -- - >../actual + ) && + test_cmp expect actual +' + +test_expect_success 'reset - works same as reset @{-1}' ' + git init dash && + test_when_finished rm -rf dash && + ( + cd dash && + echo "file1" >file1 && + git add file1 && + git commit -m "base commit" && + git checkout -b temp && + echo "new file" >file && + git add file && + git commit -m "added file" && + git reset - && + git status --porcelain >../actual && + git add file && + git commit -m "added file" && + git reset @{-1} && + git status --porcelain >../expect + ) && + test_cmp expect actual +' + +test_expect_success 'reset - with file named @{-1} succeeds' ' + cat >expect <<-EOF + Unstaged changes after reset: + M @{-1} + M file + EOF + git init dash && + test_when_finished rm -rf dash && + ( + cd dash && + echo "random" >@{-1} && + echo "random" >file && + git add @{-1} file && + git commit -m "base commit" && + git checkout -b new_branch && + echo "additional stuff" >>file && + echo "additional stuff" >>@{-1} && + git add file @{-1} && + git reset - >../actual + ) && + test_cmp expect actual +' + test_done -- 2.3.1.277.gd67f9d5.dirty -- 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