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

Re: [PATCH] don't use test_must_fail with grep

From
Johannes Sixt <j6t@kdbg.org>
Date
Jan 1, 2017, 14:50 UTC
Message-ID
<285ed013-5c59-0b98-7dc0-8f729587a313@kdbg.org>
In-Reply-To
<CAE5ih7-7e+ZLUbE7iquWV2=qP4ofzAHUC2ZPg3b-ivSpCo4eRw@mail.gmail.com>
Am 01.01.2017 um 15:23 schrieb Luke Diamand:
Show 21 quoted lines
> On 31 December 2016 at 11:44, Pranit Bauva <pranit.bauva@gmail.com> wrote:
>> diff --git a/t/t9813-git-p4-preserve-users.sh b/t/t9813-git-p4-preserve-users.sh
>> index 0fe231280..2384535a7 100755
>> --- a/t/t9813-git-p4-preserve-users.sh
>> +++ b/t/t9813-git-p4-preserve-users.sh
>> @@ -126,13 +126,13 @@ test_expect_success 'not preserving user with mixed authorship' '
>>                 grep "git author charlie@example.com does not match" &&
>>
>>                 make_change_by_user usernamefile3 alice alice@example.com &&
>> -               git p4 commit |\
>> -               test_must_fail grep "git author.*does not match" &&
>> +               ! git p4 commit |\
>> +               grep "git author.*does not match" &&
>
> Would it be clearer to use this?
>
>     git p4 commit |\
>     grep -q -v "git author.*does not match" &&
>
> With your original change, I think that if "git p4 commit" fails, then
> that expression will be treated as a pass.

No. The exit code of the upstream in a pipe is ignored. For this reason, having a git invocation as the upstream of a pipe *anywhere* in the test suite is frowned upon. Hence, a better rewrite would be

	git p4 commit >actual &&
	! grep "git author.*does not match" actual &&

which makes me wonder: Is the message that we do expect not to occur actually printed on stdout? It sounds much more like an error message, i.e., text that is printed on stderr. Wouldn't we need this?

	git p4 commit >actual 2>&1 &&
	! grep "git author.*does not match" actual &&
-- Hannes
Previous: Luke DiamandNext: Luke Diamand
Message 3 of 21 in “don't use test_must_fail with grep”
  1. don't use test_must_fail with grepPranit Bauva, Dec 31, 2016
  2. Luke DiamandJan 1, 2017
  3. Johannes SixtJan 1, 2017
  4. Luke DiamandJan 1, 2017
  5. Pranit BauvaJan 2, 2017
  6. Junio C HamanoJan 7, 2017
  7. Pranit BauvaJan 8, 2017
  8. 1/2 don't use test_must_fail with grepPranit Bauva, Jan 2, 2017
  9. 2/2 t9813: avoid using pipesPranit Bauva, Jan 2, 2017
  10. Stefan BellerJan 3, 2017
  11. Pranit BauvaJan 3, 2017
  12. Stefan BellerJan 3, 2017
  13. 1/2 don't use test_must_fail with grepPranit Bauva, Jan 3, 2017
  14. 2/2 t9813: avoid using pipesPranit Bauva, Jan 3, 2017
  15. Luke DiamandJan 4, 2017
  16. Pranit BauvaJan 4, 2017
  17. 1/2 don't use test_must_fail with grepPranit Bauva, Jan 8, 2017
  18. 2/2 t9813: avoid using pipesPranit Bauva, Jan 8, 2017
  19. Luke DiamandJan 9, 2017
  20. Junio C HamanoJan 9, 2017
  21. Stefan BellerJan 3, 2017

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.