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

Re: [PATCH v2 2/2] var: allow GIT_EDITOR to return null

From
Sean Allred <allred.sean@gmail.com>
Date
Nov 26, 2022, 13:54 UTC
Message-ID
<87fse5ssyo.fsf@gmail.com>
In-Reply-To
<221125.86pmdamyv5.gmgdl@evledraar.gmail.com>
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
Show 9 quoted lines
> Negate git with "test_must_fail", not "!", this would e.g. hide
> segfaults. See t/README's discussion about it.
>
>> +		test_cmp expect actual
>
> Looks like this should be:
>
> 	test_must_fail git ... >out &&
> 	test_must_be_empty out

Nice! I don't know why I didn't look for t/README, but I also found test_expect_code, which seems to be even more specific as to what is being expected. I assume it has the same segfault detection.

This has now been incorporated in my branch; I'll submit it in v3 later today.

Show 24 quoted lines
>> +test_expect_success 'get GIT_EDITOR with configuration and environment variable EDITOR' '
>> +	test_config core.editor foo &&
>> +	(
>> +		sane_unset GIT_EDITOR &&
>> +		sane_unset VISUAL &&
>> +		sane_unset EDITOR &&
>> +		echo foo >expect &&
>> +		EDITOR=bar git var GIT_EDITOR >actual &&
>> +		test_cmp expect actual
>> +	)
>
> Perhaps these can all be factored into a helper to hide this repetition
> in a function, but maybe not. E.g:
>
> 	test_git_var () {
> 		cat >expect &&
> 		(
> 			[...common part of subshell ...]
> 		        "$@" >actual &&
> 			test_cmp expect actual
> 		)
> 	}
>
> (untested)

In all honesty, I think too much abstraction would do more harm than good here. I definitely share the instinct to factor out the common pieces, but in other codebases I've worked in, that tends to stifle future changes in the tests themselves.

That said, I can't realistically imagine a world where a 'sane_unset_all_editors' would stifle code changes -- and I think that accounts for the lion's share of the repetition. I've incorporated such a helper in my branch now.

If you're not convinced there should be further abstraction, I'd rather leave things 'stupid simple' -- but if you think this would block merge, I'd be happy to take a crack at further factoring out what I can.

-- Sean Allred

Previous: Ævar Arnfjörð BjarmasonNext: Sean Allred via GitGitGadget
Message 12 of 15 in “Improve consistency of git-var”
  1. 0/3 Improve consistency of git-varSean Allred via GitGitGadget, Nov 24, 2022
  2. 1/3 var: do not print usage() with a correct invocationSean Allred via GitGitGadget, Nov 24, 2022
  3. 2/3 var: remove read_varSean Allred via GitGitGadget, Nov 24, 2022
  4. Junio C HamanoNov 25, 2022
  5. 3/3 var: allow GIT_EDITOR to return nullSean Allred via GitGitGadget, Nov 24, 2022
  6. 0/2 Improve consistency of git-varSean Allred via GitGitGadget, Nov 25, 2022
  7. 1/2 var: do not print usage() with a correct invocationSean Allred via GitGitGadget, Nov 25, 2022
  8. Ævar Arnfjörð BjarmasonNov 25, 2022
  9. Sean AllredNov 26, 2022
  10. 2/2 var: allow GIT_EDITOR to return nullSean Allred via GitGitGadget, Nov 25, 2022
  11. Ævar Arnfjörð BjarmasonNov 25, 2022
  12. Sean AllredNov 26, 2022
  13. 0/2 Improve consistency of git-varSean Allred via GitGitGadget, Nov 26, 2022
  14. 1/2 var: do not print usage() with a correct invocationSean Allred via GitGitGadget, Nov 26, 2022
  15. 2/2 var: allow GIT_EDITOR to return nullSean Allred via GitGitGadget, Nov 26, 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.