git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v5 2/2] t7102: add 'reset -' tests

From
SSSudhanshu Shekhar <sudshekhar02@gmail.com>
Date
Mar 13, 2015, 18:18 UTC
Message-ID
<1426270716-22405-2-git-send-email-sudshekhar02@gmail.com>
In-Reply-To
<1426270716-22405-1-git-send-email-sudshekhar02@gmail.com>
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@sunshineco.com>
Helped-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Helped-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Sudhanshu Shekhar <sudshekhar02@gmail.com>
---
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
Previous: Sudhanshu ShekharNext: Eric Sunshine
Message 2 of 6 in “reset: enable '-' short-hand for previous branch”
  1. 1/2 reset: enable '-' short-hand for previous branchSudhanshu Shekhar, Mar 13, 2015
  2. 2/2 t7102: add 'reset -' testsSudhanshu Shekhar, Mar 13, 2015
  3. Eric SunshineMar 13, 2015
  4. Sudhanshu ShekharMar 16, 2015
  5. Eric SunshineMar 13, 2015
  6. Sudhanshu ShekharMar 16, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.