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

Re: [PATCH v3 1/9] t5520: fixup file contents comparisons

From
Junio C Hamano <gitster@pobox.com>
Date
May 16, 2015, 23:32 UTC
Message-ID
<xmqqoalkdrop.fsf@gitster.dls.corp.google.com>
In-Reply-To
<xmqq617sfj05.fsf@gitster.dls.corp.google.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 20 quoted lines
> Paul Tan <pyokagan@gmail.com> writes:
>
>> So the first example would be:
>>
>>     test_output "git show HEAD:file2" new
>
> Simple things like that look fine, but when a variable is involved,
> use of eval combined with the fact that the test body is inside sq,
> makes the callers unnecessarily ugly.
>
> 	test_expect_success 'some title' '
> 		var=$(...) &&
> 		test_output "git show \$var:file2 | sed -e \"s/$old/$new/\"" new
> 	'
>
> Which is the concern this shares with the other one I sent about
> counting the number of lines in the output from a command that made
> me hesitate to suggest it.
>
> So I dunno.

I actually think that "test" that compares output from command and a constant string, and "test" that compares outputs from two commands are lazyily written forms of these:

        echo constant string >expect &&
	command >actual &&
        test_cmp expect actual
	command1 >expect &&
        command2 >actual &&
        test_cmp expect actual
The examples you gave in the earlier message were
Show 7 quoted lines
>
>      test new = "$(git show HEAD:file2)"
>
> or these:
>
>      test $(git rev-parse HEAD^2) = $(git rev-parse keep-merge)
>
and I suspect they match my observation.

My earlier test_output_count was probably in the same "lazy" category. "test $(command | wc -l) = 20" is better written as

	command >output &&
        test_line_count = 20 output
instead of using the hypothetical
	test_output_count = 20 "command"

that evals the command argument, not only because the quoting of 'command part will become complex for real world uses, but because the output itself would be the first thing we would want to inspect once the command fails. For that reason, I'd rather not to add the test_output_count I suggested earlier, so that we would encourage the more straight-forward form, i.e.

	command >output &&
        test_line_count = 20 output
to be used.
Previous: Junio C HamanoNext: Paul Tan
Message 12 of 25 in “Improve git-pull test coverage”
  1. 0/9 Improve git-pull test coveragePaul Tan, May 13, 2015
  2. 1/9 t5520: fixup file contents comparisonsPaul Tan, May 13, 2015
  3. Junio C HamanoMay 13, 2015
  4. Junio C HamanoMay 13, 2015
  5. Michael BlumeMay 14, 2015
  6. Junio C HamanoMay 14, 2015
  7. Paul TanMay 15, 2015
  8. Junio C HamanoMay 15, 2015
  9. Junio C HamanoMay 15, 2015
  10. Paul TanMay 16, 2015
  11. Junio C HamanoMay 16, 2015
  12. Junio C HamanoMay 16, 2015
  13. Paul TanMay 17, 2015
  14. 2/9 t5520: ensure origin refs are updatedPaul Tan, May 13, 2015
  15. Junio C HamanoMay 13, 2015
  16. Paul TanMay 18, 2015
  17. 3/9 t5520: test no merge candidates casesPaul Tan, May 13, 2015
  18. 4/9 t5520: test for failure if index has unresolved entriesPaul Tan, May 13, 2015
  19. Matthieu MoyMay 13, 2015
  20. Paul TanMay 15, 2015
  21. 5/9 t5520: test work tree fast-forward when fetch updates headPaul Tan, May 13, 2015
  22. 6/9 t5520: test --rebase with multiple branchesPaul Tan, May 13, 2015
  23. 7/9 t5520: test --rebase failure on unborn branch with indexPaul Tan, May 13, 2015
  24. 8/9 t5521: test --dry-run does not make any changesPaul Tan, May 13, 2015
  25. 9/9 t5520: check reflog action in fast-forward mergePaul Tan, May 13, 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.