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

Re: [PATCH v5 3/4] commit test: test_set_editor in each test

From
Caleb Thompson <caleb@calebthompson.io>
Date
Jun 13, 2014, 16:36 UTC
Message-ID
<20140613163644.GB85151@sirius.local>
In-Reply-To
<20140613065942.GB7908@sigill.intra.peff.net>
On Fri, Jun 13, 2014 at 02:59:42AM -0400, Jeff King wrote:
Show 21 quoted lines
> On Thu, Jun 12, 2014 at 02:39:01PM -0500, Caleb Thompson wrote:
>
> > t/t7507-commit-verbose.sh was using a global test_set_editor call to
> > build its environment.
> >
> > Improve robustness against global state changes by having only tests
> > which intend to use the $EDITOR to check for presence of a diff in the
> > editor set up the test-editor to use check-for-diff rather than relying
> > upon the editor set once at script start.
>
> This implies to me that EDITOR is unset after leaving these tests. I
> don't think that is how it works, though.  The tests themselves run in
> the main environment of the test script. A call to test_set_editor from
> one of them will still affect the other tests[1].
>
> I think it works anyway because every subsequent test that cares
> actually sets the editor itself.
>
> Or did you just mean that the new rule is "every test sets the editor as
> they need", which means that we do not have to worry anymore about
> polluting the environment for other tests?

That's exactly what I meant. We can stop relying on the global state *as it is initially set* and instead move the setup into the tests which rely on it.

Show 10 quoted lines
>
> -Peff
>
> [1] It might make sense for test_set_editor, when run from within a
>     test, to behave more like test_config, and do:
>
>       test_when_finished '
>         sane_unset FAKE_EDITOR &&
>         sane_unset EDITOR
>       '

It might, but it's a little out of scope in addition to your concern about other test scripts.

>
>     I don't know if there would be fallouts with other test scripts,
>     though.
How is this for a reword of that commit description:
    t/t7507-commit-verbose.sh was using a global test_set_editor call to
    build its environment. The $EDITOR being used was not necessary for
    all tests, and was in fact circumvented using subshells in some
    cases.
    To improve robustness against global state changes and avoid the
    use of subshells to temporarily switch the editor, set the editor
    explicitly wherever it will be important.
    Specifically, in tests that need to check for the presence of a diff in the
    editor, make calls to set_test_editor to set $EDITOR to check-for-diff
    rather than relying on that editor being configured globally. This also
    helps readers grok the tests as the setup is closer to the verification.
Caleb Thompson
Previous: Jeff KingNext: Jakub Narębski
Message 9 of 28 in “commit: Add commit.verbose configuration”
  1. 0/4 commit: Add commit.verbose configurationCaleb Thompson, Jun 12, 2014
  2. 1/4 commit test: Use test_config instead of git-configCaleb Thompson, Jun 12, 2014
  3. 2/4 commit test: Use write_scriptCaleb Thompson, Jun 12, 2014
  4. Jeff KingJun 13, 2014
  5. Caleb ThompsonJun 13, 2014
  6. Jeff KingJun 13, 2014
  7. 3/4 commit test: test_set_editor in each testCaleb Thompson, Jun 12, 2014
  8. Jeff KingJun 13, 2014
  9. Caleb ThompsonJun 13, 2014
  10. Jakub NarębskiJun 13, 2014
  11. Caleb ThompsonJun 13, 2014
  12. Jakub NarębskiJun 13, 2014
  13. Jeff KingJun 13, 2014
  14. Junio C HamanoJun 13, 2014
  15. Jeff KingJun 13, 2014
  16. Caleb ThompsonJun 16, 2014
  17. Junio C HamanoJun 16, 2014
  18. 4/4 commit: Add commit.verbose configurationCaleb Thompson, Jun 12, 2014
  19. Junio C HamanoJun 13, 2014
  20. Caleb ThompsonJun 16, 2014
  21. Caleb ThompsonJun 16, 2014
  22. Junio C HamanoJun 16, 2014
  23. Caleb ThompsonJun 16, 2014
  24. Junio C HamanoJun 16, 2014
  25. Jeremiah MahlerJun 12, 2014
  26. Caleb ThompsonJun 13, 2014
  27. Jeremiah MahlerJun 14, 2014
  28. Junio C HamanoJun 16, 2014

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.