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

Re: [PATCH v2 2/2] t: use test_config whenever possible

From
Firmin Martin <firminmartin24@gmail.com>
Date
May 17, 2021, 06:08 UTC
Message-ID
<87fsylgadx.fsf@Inspiron.i-did-not-set--mail-host-address--so-tickle-me>
In-Reply-To
<xmqqbl9b6zla.fsf@gitster.g>
Hi Junio,
Junio C Hamano <gitster@pobox.com> writes:
Show 6 quoted lines
> Use of test_config to replace #1 below is a correctness improvement,
> and use of test_config to replace #2 below is a readability thing.
>
>     t: use more test_config for correctness and readability
>
> perhaps?
OK.
> Adding "because this form fails to unset the config if an earlier
> step fails." would be helpful to the readers to clarify that this is
> a correctness "fix".
Will do.

To be honest, I'm completely lost in the remaining of your reply (in fact, I suspect that you misread the diff, cf. the end of the email). I copy here the full test with line number to make sure that we are in the same page.

Show 26 quoted lines
>  415 test_expect_success "'fetch.recurseSubmodules=on-demand' overrides global config" '
>  416     (
>  417         cd downstream &&
>  418         git fetch --recurse-submodules
>  419     ) &&
>  420     add_upstream_commit &&
>  421     git config --global fetch.recurseSubmodules false &&
>  422     head1=$(git rev-parse --short HEAD) &&
>  423     git add submodule &&
>  424     git commit -m "new submodule" &&
>  425     head2=$(git rev-parse --short HEAD) &&
>  426     echo "From $pwd/." > expect.err.2 &&
>  427     echo "   $head1..$head2  super      -> origin/super" >>expect.err.2 &&
>  428     head -3 expect.err >> expect.err.2 &&
>  429     (
>  430         cd downstream &&
>  431         git config fetch.recurseSubmodules on-demand &&
>  432         git fetch >../actual.out 2>../actual.err
>  433     ) &&
>  434     git config --global --unset fetch.recurseSubmodules &&
>  435     (
>  436         cd downstream &&
>  437         git config --unset fetch.recurseSubmodules
>  438     ) &&
>  439     test_must_be_empty actual.out &&
>  440     test_cmp expect.err.2 actual.err
> The original seems to be making sure that the config set in
> "downstream" repository is used successfully before it is unset from
> the global configuration
OK. 
> and then the same fetch in the downstream will work even when the

What do you mean by "the same fetch"? the one of line 432 or any instance of "git -C downstream fetch" in later tests?

> configuration is removed from the global configuration.
> The squashing of the two tests into one

Same question as above, I don't understand "the second test" you are referring to (specifically, which lines?).

> would change what is being tested, wouldn't it?

I agree that the semantic isn't the same (as test_config_global will unset global config after unsetting the "downstream" config), but since there is *not* another git-fetch after the global unset and before the "downstream" unset I thought that it is fine.

> Surely, the actual.out and actual.err in the first invocation *was*
> overwritten without being looked at, but the exit status of that
Aren't they considered in the end of the test ? (lines 439-440).
Show 10 quoted lines
> fetch (i.e. fetch before global config gets unset) was still checked
> in the original.  So I'd call this a "simplification"
>
>>  	(
>>  		cd downstream &&
>>  		git config fetch.recurseSubmodules on-demand &&
>> -		git fetch >../actual.out 2>../actual.err
>> +		git fetch
>> 	) &&
>> 	git config --global --unset fetch.recurseSubmodules &&
> I.e. these redirected output files were not used and the next fetch
> will overwrite them.
Same question as above.
> The patch I am responding to claims that 
>
>  - "make sure it succeeds with global set, and then without global
>    set, make sure it still works" is not worth testing.

In this test, there is no "make sure it still works without global set" (i.e. I didn't see any git-fetch invocation after the global configuration unset). Are you referring later tests?

>
>  - it is OK to replace it with a single "it succeeds without
>    unsetting the global config".

At this point, I have the feeling that you have misread the diff (do correct me If I'm wrong) and saw ...

Show 11 quoted lines
>  (
>      cd downstream &&
>      git config fetch.recurseSubmodules on-demand &&
>      git fetch >../actual.out 2>../actual.err
>  ) &&
>  git config --global --unset fetch.recurseSubmodules &&
>  (
>      cd downstream &&
>      git fetch >../actual.out 2>../actual.err
>      git config --unset fetch.recurseSubmodules
>  ) &&
(note the second extra git-fetch)
... instead of
Show 10 quoted lines
>  429     (
>  430         cd downstream &&
>  431         git config fetch.recurseSubmodules on-demand &&
>  432         git fetch >../actual.out 2>../actual.err
>  433     ) &&
>  434     git config --global --unset fetch.recurseSubmodules &&
>  435     (
>  436         cd downstream &&
>  437         git config --unset fetch.recurseSubmodules
>  438     ) &&
In this case, what you said (e.g. simplification etc.) makes perfect sense.
Thanks,
Firmin
Previous: Junio C HamanoNext: Junio C Hamano
Message 14 of 15 in “t/README: document test_config”
  1. 1/2 t/README: document test_configFirmin Martin, May 14, 2021
  2. 2/2 t: use test_config whenever possibleFirmin Martin, May 14, 2021
  3. Felipe ContrerasMay 15, 2021
  4. Felipe ContrerasMay 15, 2021
  5. Firmin MartinMay 15, 2021
  6. Eric SunshineMay 14, 2021
  7. Firmin MartinMay 15, 2021
  8. 0/2 document test_config & use it whenever possibleFirmin Martin, May 15, 2021
  9. 1/2 t/README: document test_configFirmin Martin, May 15, 2021
  10. Bagas SanjayaMay 16, 2021
  11. Firmin MartinMay 17, 2021
  12. 2/2 t: use test_config whenever possibleFirmin Martin, May 15, 2021
  13. Junio C HamanoMay 16, 2021
  14. Firmin MartinMay 17, 2021
  15. Junio C HamanoMay 17, 2021

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.