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

[PATCH] t2024: fix loose/strict local base branch DWIM test

From
Andrei Rybak <rybak.a.v@gmail.com>
Date
Apr 8, 2023, 20:54 UTC
Message-ID
<20230408205450.569548-1-rybak.a.v@gmail.com>
In-Reply-To
<230406.86h6tttn21.gmgdl@evledraar.gmail.com>

Test 'loosely defined local base branch is reported correctly' in t2024-checkout-dwim.sh, which was introduced in [1] compares output of two invocations of "git checkout", invoked with two different branches named "strict" and "loose". As per description in [1], the test is validating that output of tracking information for these two branches. This tracking information is printed to standard output:

    Your branch is behind 'main' by 1 commit, and can be fast-forwarded.
      (use "git pull" to update your local branch)

The test assumes that the names of the two branches (strict and loose) are in that output, and pipes the output through sed to replace names of the branches with "BRANCHNAME". Command "git checkout", however, outputs the branch name to standard error, not standard output -- see message "Switched to branch '%s'\n" in function "update_refs_for_switch" in "builtin/checkout.c". This means that the two invocations of sed do nothing.

Redirect both the standard output and the standard error of "git checkout" for these assertions. Ensure that compared files have the string "BRANCHNAME".

In a series of piped commands, only the return code of the last command is used. Thus, all other commands will have their return codes masked. Avoid piping of output of git directly into sed to preserve the exit status code of "git checkout", while we're here.

[1] 05e73682cd (checkout: report upstream correctly even with loosely
    defined branch.*.merge, 2014-10-14)
Signed-off-by: Andrei Rybak <rybak.a.v@gmail.com>
---
On 2023-04-07T04:19, Andrei Rybak wrote:
Show 17 quoted lines
> 3. t2024-checkout-dwim.sh
> Test 'loosely defined local base branch is reported correctly' in t2024
> has an interesting validation of output of "git checkout":
> 
>      git checkout strict | sed -e "s/strict/BRANCHNAME/g" >expect &&
>      status_uno_is_clean &&
>      git checkout loose | sed -e "s/loose/BRANCHNAME/g" >actual &&
>      status_uno_is_clean &&
> 
>      test_cmp expect actual
> 
> which is fine, except that neither file "expect" nor "actual" contain
> the string "BRANCHNAME".  And this test was broken when it was
> introduced in 05e73682cd (checkout: report upstream correctly even with
> loosely defined branch.*.merge, 2014-10-14).  It was probably intended
> for this test to redirect standard error of "git checkout".  It should
> be cleaned up as a separate patch/topic.

Here's the patch. Alternatively, the fix could be to just drop the sed invocation from this test.

 t/t2024-checkout-dwim.sh | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/t/t2024-checkout-dwim.sh b/t/t2024-checkout-dwim.sh
index 4a1c901456..74049a9812 100755
--- a/t/t2024-checkout-dwim.sh
+++ b/t/t2024-checkout-dwim.sh
@@ -305,10 +305,13 @@ test_expect_success 'loosely defined local base branch is reported correctly' '
 	test_config branch.strict.merge refs/heads/main &&
 	test_config branch.loose.merge main &&
 
-	git checkout strict | sed -e "s/strict/BRANCHNAME/g" >expect &&
+	git checkout strict >expect.raw 2>&1 &&
+	sed -e "s/strict/BRANCHNAME/g" <expect.raw >expect &&
 	status_uno_is_clean &&
-	git checkout loose | sed -e "s/loose/BRANCHNAME/g" >actual &&
+	git checkout loose >actual.raw 2>&1 &&
+	sed -e "s/loose/BRANCHNAME/g" <actual.raw >actual &&
 	status_uno_is_clean &&
+	grep BRANCHNAME actual &&
 
 	test_cmp expect actual
 '
-- 
2.40.0
Previous: Andrei RybakNext: Junio C Hamano
Message 20 of 58 in “t: fix unused files, part 2”
  1. 0/6 t: fix unused files, part 2Andrei Rybak, Apr 1, 2023
  2. 1/6 t0300: don't create unused fileAndrei Rybak, Apr 1, 2023
  3. Eric SunshineApr 2, 2023
  4. 5/6 t1502: don't create unused filesAndrei Rybak, Apr 1, 2023
  5. 2/6 t1300: fix config file syntax error descriptionsAndrei Rybak, Apr 1, 2023
  6. 3/6 t1300: don't create unused filesAndrei Rybak, Apr 1, 2023
  7. 4/6 t1450: don't create unused filesAndrei Rybak, Apr 1, 2023
  8. 6/6 t2019: don't create unused filesAndrei Rybak, Apr 1, 2023
  9. 0/6 t: fix unused files, part 2Andrei Rybak, Apr 3, 2023
  10. 1/6 t0300: don't create unused fileAndrei Rybak, Apr 3, 2023
  11. Ævar Arnfjörð BjarmasonApr 6, 2023
  12. Andrei RybakApr 6, 2023
  13. 2/6 t1300: fix config file syntax error descriptionsAndrei Rybak, Apr 3, 2023
  14. 4/6 t1450: don't create unused filesAndrei Rybak, Apr 3, 2023
  15. Ævar Arnfjörð BjarmasonApr 6, 2023
  16. Andrei RybakApr 6, 2023
  17. 6/6 t2019: don't create unused filesAndrei Rybak, Apr 3, 2023
  18. Ævar Arnfjörð BjarmasonApr 6, 2023
  19. Andrei RybakApr 7, 2023
  20. t2024: fix loose/strict local base branch DWIM testAndrei Rybak, Apr 8, 2023
  21. Junio C HamanoApr 10, 2023
  22. 5/6 t1502: don't create unused filesAndrei Rybak, Apr 3, 2023
  23. Øystein WalleApr 6, 2023
  24. Ævar Arnfjörð BjarmasonApr 6, 2023
  25. Andrei RybakApr 6, 2023
  26. 3/6 t1300: don't create unused filesAndrei Rybak, Apr 3, 2023
  27. Ævar Arnfjörð BjarmasonApr 6, 2023
  28. Andrei RybakApr 6, 2023
  29. git config tests for "'git config ignores pairs ..." (was Re: [PATCH v2 3/6] t1300: don't create unused files)Andrei Rybak, Apr 6, 2023
  30. 0/2 git config tests for "'git config ignores pairs ..."Andrei Rybak, Apr 14, 2023
  31. 1/2 t1300: drop duplicate testAndrei Rybak, Apr 14, 2023
  32. 2/2 t1300: check stderr for "ignores pairs" testsAndrei Rybak, Apr 14, 2023
  33. Andrei RybakApr 14, 2023
  34. 0/3 git config tests for "'git config ignores pairs ..."Andrei Rybak, Apr 18, 2023
  35. 1/3 t1300: drop duplicate testAndrei Rybak, Apr 18, 2023
  36. Junio C HamanoApr 18, 2023
  37. 2/3 t1300: check stderr for "ignores pairs" testsAndrei Rybak, Apr 18, 2023
  38. Junio C HamanoApr 18, 2023
  39. 3/3 t1300: add tests for missing keysAndrei Rybak, Apr 18, 2023
  40. Junio C HamanoApr 18, 2023
  41. Andrei RybakApr 18, 2023
  42. 0/3 git config tests for "'git config ignores pairs ..."Andrei Rybak, Apr 23, 2023
  43. 1/3 t1300: drop duplicate testAndrei Rybak, Apr 23, 2023
  44. 2/3 t1300: check stderr for "ignores pairs" testsAndrei Rybak, Apr 23, 2023
  45. 3/3 t1300: add tests for missing keysAndrei Rybak, Apr 23, 2023
  46. Junio C HamanoMay 1, 2023
  47. Andrei RybakMay 2, 2023
  48. 0/6 t: fix unused files, part 2Andrei Rybak, Apr 17, 2023
  49. 1/6 t0300: don't create unused fileAndrei Rybak, Apr 17, 2023
  50. 2/6 t1300: fix config file syntax error descriptionsAndrei Rybak, Apr 17, 2023
  51. 3/6 t1300: don't create unused filesAndrei Rybak, Apr 17, 2023
  52. 4/6 t1450: don't create unused filesAndrei Rybak, Apr 17, 2023
  53. 5/6 t1502: don't create unused filesAndrei Rybak, Apr 17, 2023
  54. 6/6 t2019: don't create unused filesAndrei Rybak, Apr 17, 2023
  55. Junio C HamanoMay 1, 2023
  56. Andrei RybakMay 2, 2023
  57. Elijah NewrenMay 3, 2023
  58. Junio C HamanoMay 3, 2023

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.