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

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

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Mar 13, 2015, 21:10 UTC
Message-ID
<CAPig+cRQ9ZZ9573SvA9HPNLtE6s0U6TGnDfgpRD-osReAQgJJA@mail.gmail.com>
In-Reply-To
<1426270716-22405-2-git-send-email-sudshekhar02@gmail.com>

On Fri, Mar 13, 2015 at 2:18 PM, Sudhanshu Shekhar <sudshekhar02@gmail.com> wrote:

Show 16 quoted lines
> 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.
The && needs to go on the first line, not the last line of the here-doc.

However, that was not my main concern in the previous review. What disturbed me was that the new tests, which were supposed to be checking if "-" behaved as @{-1}, were succeeding even without patch 1/2 applied which implemented the "-" alias for @{-1}. That seems wrong. I don't think you particularly addressed that issue in this version (even though the first couple tests will now fail without 1/2 due to the changed error message).

> 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).
Reminder: Wrap commentary to about column 72, as you would the commit
message. (I re-wrapped it manually to reply to it.)
> I have renamed the folder to 'dash' as suggested by you, keeping the
> old name only where it made sense.

Considering that the test titles already tell us the intent of the tests, I don't find that the directory name "no_previous" adds much value to tests checking the behavior of "-" with no previous branch. A single, consistent name used throughout all these tests would be less surprising and place smaller cognitive load on the reader.

More below.
Show 30 quoted lines
> 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
> +'
> +
> +
Style: Unnecessary extra blank line.
> +test_expect_success \
> +       'reset - in the presence of file named - with previous branch resets commit' '
> +       cat >expect <<-EOF

Place the && at the end of this line. Also, prefix EOF with a backslash to indicate that you don't intend any interpolation to occur within the here-doc. So:

    cat >expect <<-\EOF &&
Ditto for the remaining tests.
Show 136 quoted lines
> +       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: Sudhanshu Shekhar
Message 3 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.