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

Re: [PATCH v2 2/2] revision: allow --ancestry-path to take an argument

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Aug 18, 2022, 15:50 UTC
Message-ID
<220818.86ilmp8rzn.gmgdl@evledraar.gmail.com>
In-Reply-To
<ee4a7a7f-d646-6357-233a-1fefde5607bf@github.com>
On Thu, Aug 18 2022, Derrick Stolee wrote:
Show 15 quoted lines
> On 8/18/2022 2:17 AM, Elijah Newren via GitGitGadget wrote:
>> +test_expect_success 'rev-list --ancestry-path=F D..M' '
>> +	test_write_lines E F J L M >expect &&
>> +	git rev-list --ancestry-path=F --format=%s D..M |
>> +	sed -e "/^commit /d" |
>> +	sort >actual &&
>> +	test_cmp expect actual
>> +'
>
> These tests follow the patterns from other tests in this file, but
> it also has bad patterns. Specifically, the 'git rev-list' command
> is fed directly into a pipe. I include a patch below that applies
> directly on this one to rewrite these tests. If you want, you could
> rebase to have that test refactor happen before you add your new
> --ancestry-path=<X> option tests.

Thanks, I was going to comment on the same, but your solution is much better (I was just going to suggest using intermediate files).

Show 10 quoted lines
> [...]
> -test_expect_success 'rev-list --ancestry-path D..M -- M.t' '
> -	echo M >expect &&
> -	git rev-list --ancestry-path --format=%s D..M -- M.t |
> -	sed -e "/^commit /d" >actual &&
> -	test_cmp expect actual
> -'
> +test_ancestry () {
> +	args=$1
> +	expected=$2

Maybe add &&-chaining here (we do it in some cases, but I'm not sure when such assignments would ever fail).

Show 5 quoted lines
> +	test_expect_success "rev-list $args" "
> +		test_write_lines $expected >expect &&
> +		git rev-list --format=%s $args >raw &&
> +
> +		if test -n \"$expected\"

Aren't you making things harder for yourself here than required by using ""-quoting for the body of the test.

We eval it into existence, so you can use ''-quotes, and then you don't need to escape e.g. the "" quotes here for expected, no?

> +		then
> +			sed -e \"/^commit /d\" raw | sort >actual &&

nit for debuggability (and not correctness), maybe using intermediate files here would be nicer? And then perhaps call them "actual" and "actual.sorted".

> +			test_cmp expect actual || return 1

No need for a "return 1" here when we're not in a loop. It's redundant, and makes the -x output on failure confusing ("why didn't I fail on the test_cmp, but on this stray return?...").

...
> +		else
> +			test_must_be_empty raw

...which would also allow you to extract much of this if/else at the cost of not using test_must_be_empty, i.e. just make the "expected" empty unless "$expected" is provided. Just a thought/nit, we could also leave this as-is :)

Also does the "compare rev" part of this want test_cmp_rev instead?
Previous: Derrick StoleeNext: Derrick Stolee
Message 10 of 29 in “Allow --ancestry-path to take an argument”
  1. 0/2 Allow --ancestry-path to take an argumentElijah Newren via GitGitGadget, Aug 17, 2022
  2. 1/2 rev-list-options.txt: fix simple typoElijah Newren via GitGitGadget, Aug 17, 2022
  3. 2/2 revision: allow --ancestry-path to take an argumentElijah Newren via GitGitGadget, Aug 17, 2022
  4. Junio C HamanoAug 17, 2022
  5. Elijah NewrenAug 18, 2022
  6. 0/2 Allow --ancestry-path to take an argumentElijah Newren via GitGitGadget, Aug 18, 2022
  7. 1/2 rev-list-options.txt: fix simple typoElijah Newren via GitGitGadget, Aug 18, 2022
  8. 2/2 revision: allow --ancestry-path to take an argumentElijah Newren via GitGitGadget, Aug 18, 2022
  9. Derrick StoleeAug 18, 2022
  10. Ævar Arnfjörð BjarmasonAug 18, 2022
  11. Derrick StoleeAug 18, 2022
  12. Eric SunshineAug 18, 2022
  13. Elijah NewrenAug 19, 2022
  14. Ævar Arnfjörð BjarmasonAug 19, 2022
  15. Eric SunshineAug 18, 2022
  16. Elijah NewrenAug 19, 2022
  17. Jonathan TanAug 18, 2022
  18. Elijah NewrenAug 19, 2022
  19. Jonathan TanAug 19, 2022
  20. Junio C HamanoAug 18, 2022
  21. 0/3 Allow --ancestry-path to take an argumentElijah Newren via GitGitGadget, Aug 19, 2022
  22. 1/3 rev-list-options.txt: fix simple typoElijah Newren via GitGitGadget, Aug 19, 2022
  23. 2/3 t6019: modernize tests with helperDerrick Stolee via GitGitGadget, Aug 19, 2022
  24. 3/3 revision: allow --ancestry-path to take an argumentElijah Newren via GitGitGadget, Aug 19, 2022
  25. Junio C HamanoAug 19, 2022
  26. Elijah NewrenAug 20, 2022
  27. Derrick StoleeAug 19, 2022
  28. Junio C HamanoAug 19, 2022
  29. Elijah NewrenAug 20, 2022

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.