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

Re: [PATCH 5/6] t1500: avoid setting environment variables outside of tests

From
SZEDER Gábor <szeder@ira.uka.de>
Date
May 10, 2016, 21:01 UTC
Message-ID
<20160510230111.Horde.JpLRouwWbSCYp7yuvqhy5SS@webmail.informatik.kit.edu>
In-Reply-To
<CAPig+cTtU9_3=2eu0boaPbXKXh2gngEe7byDpJuSFAR4rcbrMA@mail.gmail.com>
Quoting Eric Sunshine <sunshine@sunshineco.com>:
Show 48 quoted lines
> On Tue, May 10, 2016 at 3:12 PM, Eric Sunshine  
> <sunshine@sunshineco.com> wrote:
>> On Tue, May 10, 2016 at 2:39 PM, Jeff King <peff@peff.net> wrote:
>>> On Tue, May 10, 2016 at 01:20:54AM -0400, Eric Sunshine wrote:
>>>>       while :
>>>>       do
>>>>               case "$1" in
>>>>               -C) dir="-C $2"; shift; shift ;;
>>>>               -b) bare="$2"; shift; shift ;;
>>>> +             -g) env="GIT_DIR=$2; export GIT_DIR"; shift; shift ;;
>>>> @@ -36,6 +38,8 @@ test_rev_parse () {
>>>>       do
>>>>               expect="$1"
>>>>               test_expect_success "$name: $o" '
>>>> +                     test_when_finished "sane_unset GIT_DIR" &&
>>>> +                     eval $env &&
>>>
>>> This will set up the sane_unset regardless of whether $env does
>>> anything. Would it make more sense to stick the test_when_finished
>>> inside $env? You could use regular unset then, too, since you know the
>>> variable would be set.
>>
>> I didn't worry about it too much because the end result is effectively
>> the same and, with all the 'case' arms being short one-liners, I think
>> the code is a bit easier to read as-is; bundling 'test_when_finished'
>> into the 'env' assignment line would probably require wrapping the
>> line. I do like the improved encapsulation of your suggestion but
>> don't otherwise feel strongly about it.
>
> Actually, I think we can have improved encapsulation and maintain
> readability like this:
>
>     case "$1" in
>     ...
>     -g) env="$2"; shift;  shift ;;
>     ...
>     esac
>
>     ...
>     test_expect_success "..." '
>         if test -n "$env"
>         do
>             test_when_finished "unset GIT_DIR"
>             GIT_DIR="$env"
>             export GIT_DIR
>         fi
>         ...
>     '

I wonder if is it really necessary to specify the path to the .git directory via $GIT_DIR. Would 'git --git-dir=/over/there' be just as good? If yes, then how about

   git ${gitdir:+--git-dir="$gitdir"} rev-parse ...
Previous: Junio C HamanoNext: Junio C Hamano
Message 16 of 24 in “modernize t1500”
  1. 0/6 modernize t1500Eric Sunshine, May 10, 2016
  2. 1/6 t1500: test_rev_parse: facilitate future test enhancementsEric Sunshine, May 10, 2016
  3. 2/6 t1500: reduce dependence upon global stateEric Sunshine, May 10, 2016
  4. 3/6 t1500: avoid changing working directory outside of testsEric Sunshine, May 10, 2016
  5. 4/6 t1500: avoid setting configuration options outside of testsEric Sunshine, May 10, 2016
  6. Eric SunshineMay 10, 2016
  7. Junio C HamanoMay 10, 2016
  8. 5/6 t1500: avoid setting environment variables outside of testsEric Sunshine, May 10, 2016
  9. Jeff KingMay 10, 2016
  10. Eric SunshineMay 10, 2016
  11. Junio C HamanoMay 10, 2016
  12. Eric SunshineMay 10, 2016
  13. Eric SunshineMay 10, 2016
  14. Jeff KingMay 10, 2016
  15. Junio C HamanoMay 10, 2016
  16. SZEDER GáborMay 10, 2016
  17. Junio C HamanoMay 10, 2016
  18. Eric SunshineMay 10, 2016
  19. 6/6 t1500: be considerate to future potential testsEric Sunshine, May 10, 2016
  20. Junio C HamanoMay 10, 2016
  21. Junio C HamanoMay 10, 2016
  22. Junio C HamanoMay 10, 2016
  23. Eric SunshineMay 16, 2016
  24. Junio C HamanoMay 16, 2016

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.