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

Re: [PATCH v3 2/3] test-lib-functions: optionally keep HOME, TERM and SHELL in 'test_pause'

From
Elijah Newren <newren@gmail.com>
Date
Sep 1, 2021, 21:52 UTC
Message-ID
<CABPp-BFEvSXHAzFFs8VaWK5QUTj6Zyow9863p=qM6G8v3OPy1g@mail.gmail.com>
In-Reply-To
<xmqq7dg0oxdm.fsf@gitster.g>
On Wed, Sep 1, 2021 at 1:26 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 25 quoted lines
>
> "Philippe Blain via GitGitGadget" <gitgitgadget@gmail.com> writes:
>
> > +# Usage: test_pause [options]
> > +#   -t
> > +#    Use your original TERM instead of test-lib.sh's "dumb".
> > +#    This usually restores color output in the invoked shell.
> > +#    WARNING: this can break test reproducibility.
> > +#   -s
> > +#    Invoke $SHELL instead of $TEST_SHELL_PATH
> > +#    WARNING: this can break test reproducibility.
> > +#   -h
> > +#    Use your original HOME instead of test-lib.sh's "$TRASH_DIRECTORY".
> > +#    This allows you to use your regular shell environment and Git aliases.
> > +#    WARNING: this can break test reproducibility.
> > +#    CAUTION: this can overwrite files in your HOME.
> > +#   -a
> > +#    Shortcut for -t -s -h
>
> As this is not end-user facing but facing our developer, I do not
> deeply care, but I find the warnings in this help text problematic.
>
> Because a new process instance of $PAUSE_SHELL is run, the options
> you add when inserting test_pause does not affect what happens in
> the tests after you exit the $PAUSE_SHELL [*], right?

I think the warning was less about what happens after test_pause is complete and the testcase resumes, and more intended to convey that if the user tries to manually copy & paste snippets of code from the test into $PAUSE_SHELL, then the use of these flags can cause the result of those pasted commands to differ. If so, a small rewording might be in order, e.g. "WARNING: this can cause commands run in the paused shell to give different results". I'd also say the CAUTION would perhaps benefit from some rewording (since the option itself doesn't cause files to be overwritten), e.g. "CAUTION: using this option and copying commands from the test script into the paused shell might result in files in your HOME being overwritten".

Show 32 quoted lines
> Of course, you can modify the repository or the working tree files
> used in the test in the $PAUSE_SHELL, and that can break "test
> reproducibility"---if you run "git ls-files -s" and take its output
> in a temporary file, a step later in the test that runs "git status"
> will see an extra untracked file, for example, and such a change may
> (or may not) unnecessarily break the tests.
>
> But it is not anything new introduced by these options.  It is
> inherent to test_pause itself.
>
> If we want to add a warning to the help text here, I think it should
> be written in such a way that it is clear that the warning applies
> to any use of the test_pause helper, not just to the form with the
> options.
>
> Thanks.
>
>
> [Footnote]
>
> * If we had an alternative implementation of test_pause that does
>   not use a separate $PAUSE_SHELL process, but instead like
>   inserting a read-eval-print loop, that would be far more powerful
>   and useful debugging aid.  You can not just stop the execution of
>   the test, and observe the files in the test repository and the
>   environment variables---you can also access shell variables and
>   functions.
>
>   Such a test_pause from another world would deserve a "if you touch
>   anything, the damage is permanent" warning even more than the
>   current one, because you can modify even a shell variable to
>   affect the execution of the test after you leave the paused state.
Previous: Junio C HamanoNext: Junio C Hamano
Message 25 of 39 in “test-lib-functions.sh: keep user's HOME, TERM and SHELL for 'test_pause' and 'debug'”
  1. 0/2 test-lib-functions.sh: keep user's HOME, TERM and SHELL for 'test_pause' and 'debug'Philippe Blain via GitGitGadget, Aug 19, 2021
  2. 1/2 test-lib-functions: use user's SHELL, HOME and TERM for 'test_pause'Philippe Blain via GitGitGadget, Aug 19, 2021
  3. Carlo ArenasAug 20, 2021
  4. Philippe BlainAug 20, 2021
  5. 2/2 test-lib-functions: use user's TERM and HOME for 'debug'Philippe Blain via GitGitGadget, Aug 19, 2021
  6. Taylor BlauAug 19, 2021
  7. Carlo ArenasAug 20, 2021
  8. Eric SunshineAug 19, 2021
  9. Junio C HamanoAug 19, 2021
  10. Eric SunshineAug 19, 2021
  11. Elijah NewrenAug 19, 2021
  12. Eric SunshineAug 19, 2021
  13. Philippe BlainAug 20, 2021
  14. Eric SunshineAug 20, 2021
  15. Jeff KingAug 20, 2021
  16. 0/3 test-lib-functions.sh: keep user's HOME, TERM and SHELL for 'test_pause' and 'debug'Philippe Blain via GitGitGadget, Aug 28, 2021
  17. 1/3 test-lib-functions: use 'TEST_SHELL_PATH' in 'test_pause'Philippe Blain via GitGitGadget, Aug 28, 2021
  18. 2/3 test-lib-functions: optionally keep HOME, TERM and SHELL in 'test_pause'Philippe Blain via GitGitGadget, Aug 28, 2021
  19. Elijah NewrenAug 28, 2021
  20. Philippe BlainAug 28, 2021
  21. 3/3 test-lib-functions: optionally keep HOME and TERM in 'debug'Philippe Blain via GitGitGadget, Aug 28, 2021
  22. 0/3 test-lib-functions.sh: keep user's HOME, TERM and SHELL for 'test_pause' and 'debug'Philippe Blain via GitGitGadget, Sep 1, 2021
  23. 2/3 test-lib-functions: optionally keep HOME, TERM and SHELL in 'test_pause'Philippe Blain via GitGitGadget, Sep 1, 2021
  24. Junio C HamanoSep 1, 2021
  25. Elijah NewrenSep 1, 2021
  26. Junio C HamanoSep 1, 2021
  27. Philippe BlainSep 2, 2021
  28. 1/3 test-lib-functions: use 'TEST_SHELL_PATH' in 'test_pause'Philippe Blain via GitGitGadget, Sep 1, 2021
  29. Junio C HamanoSep 1, 2021
  30. 3/3 test-lib-functions: optionally keep HOME and TERM in 'debug'Philippe Blain via GitGitGadget, Sep 1, 2021
  31. 0/3 test-lib-functions.sh: keep user's HOME, TERM and SHELL for 'test_pause' and 'debug'Philippe Blain via GitGitGadget, Sep 6, 2021
  32. 1/3 test-lib-functions: use 'TEST_SHELL_PATH' in 'test_pause'Philippe Blain via GitGitGadget, Sep 6, 2021
  33. 2/3 test-lib-functions: optionally keep HOME, TERM and SHELL in 'test_pause'Philippe Blain via GitGitGadget, Sep 6, 2021
  34. 3/3 test-lib-functions: keep user's debugger config files and TERM in 'debug'Philippe Blain via GitGitGadget, Sep 6, 2021
  35. 0/3 test-lib-functions.sh: keep user's HOME, TERM and SHELL for 'test_pause' and 'debug'Philippe Blain via GitGitGadget, Sep 6, 2021
  36. 1/3 test-lib-functions: use 'TEST_SHELL_PATH' in 'test_pause'Philippe Blain via GitGitGadget, Sep 6, 2021
  37. 2/3 test-lib-functions: optionally keep HOME, TERM and SHELL in 'test_pause'Philippe Blain via GitGitGadget, Sep 6, 2021
  38. 3/3 test-lib-functions: keep user's debugger config files and TERM in 'debug'Philippe Blain via GitGitGadget, Sep 6, 2021
  39. Elijah NewrenSep 7, 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.