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

Re: [PATCH v3 1/3] test-lib-functions: handle --add in test_config

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Dec 21, 2020, 07:07 UTC
Message-ID
<CAPig+cSaq4vTK7CtvxB2bd0=WTW+d=s0H2RMquyCEf+q0YVn2w@mail.gmail.com>
In-Reply-To
<733c674bd1901c931a8917045eb72f661872f462.1608516320.git.gitgitgadget@gmail.com>

On Sun, Dec 20, 2020 at 9:05 PM Nipunn Koorapati via GitGitGadget <gitgitgadget@gmail.com> wrote:

Show 14 quoted lines
> test_config fails to unset the configuration variable when
> using --add, as it tries to run git config --unset-all --add
>
> Tell test_config to invoke test_unconfig with the arg $2 when
> the arg $1 is --add
>
> Signed-off-by: Nipunn Koorapati <nipunn@dropbox.com>
> ---
> diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
> @@ -381,6 +381,7 @@ test_unconfig () {
>                 config_dir=$1
>                 shift
>         fi
> +       echo git ${config_dir:+-C "$config_dir"} config --unset-all "$@"
Stray debugging gunk?
Show 9 quoted lines
> @@ -400,7 +401,13 @@ test_config () {
> -       test_when_finished "test_unconfig ${config_dir:+-C '$config_dir'} '$1'" &&
> +
> +       first_arg=$1
> +       if test "$1" = --add; then
> +               first_arg=$2
> +       fi
> +
> +       test_when_finished "test_unconfig ${config_dir:+-C '$config_dir'} '$first_arg'" &&
Several comments...

Style on this project is to place `then` on its own line (as seen a few lines above this change):

    if test "$1" = --add
    then
        ...

This logic would be easier to understand if the variable was named `varname` or `cfgvar` (or something), which better conveys intention, rather than `first_arg`.

It feels odd to single out `--add` when there are other similar options, such as `--replace-all`, `--fixed-value`, or even `--type` which people might try using in the future.

This new option parsing is somewhat brittle. If a caller uses `test_config --add -C <dir> ...`, it won't work as expected. Perhaps that's not likely to happen, but it would be easy enough to fix by unifying and generalizing option parsing a bit. Doing so would also make it easy for the other options mentioned above to be added later if ever needed. For instance:

    options=
    while test $# != 0
    do
        case "$1" in
        -C)
            config_dir=$2
            shift
            ;;
        --add)
            options="$options $1"
            ;;
        *)
            break
            ;;
        esac
        shift
    done

Finally, as this is a one-off case, it might be simpler just to drop this patch altogether and open-code the cleanup in the test itself in patch [2/3] rather than bothering with test_config() in that particular case. For example:

    test_when_finished "test_unconfig -C two remote.one.push" &&
    git config -C two --add remote.one.push : &&
    test_must_fail git -C two push one &&
    git config -C two --add remote.one.push ^refs/heads/master &&
    git -C two push one
Previous: Nipunn Koorapati via GitGitGadgetNext: Junio C Hamano
Message 13 of 33 in “negative-refspec: fix segfault on : refspec”
  1. negative-refspec: fix segfault on : refspecNipunn Koorapati via GitGitGadget, Dec 19, 2020
  2. Junio C HamanoDec 19, 2020
  3. Jacob KellerFeb 19, 2021
  4. 0/2 negative-refspec: fix segfault on : refspecNipunn Koorapati via GitGitGadget, Dec 19, 2020
  5. 1/2 negative-refspec: fix segfault on : refspecNipunn Koorapati via GitGitGadget, Dec 19, 2020
  6. Eric SunshineDec 20, 2020
  7. 2/2 negative-refspec: improve comment on query_matches_negative_refspecNipunn Koorapati via GitGitGadget, Dec 19, 2020
  8. 0/3 negative-refspec: fix segfault on : refspecNipunn Koorapati via GitGitGadget, Dec 21, 2020
  9. 3/3 negative-refspec: improve comment on query_matches_negative_refspecNipunn Koorapati via GitGitGadget, Dec 21, 2020
  10. 2/3 negative-refspec: fix segfault on : refspecNipunn Koorapati via GitGitGadget, Dec 21, 2020
  11. Eric SunshineDec 21, 2020
  12. 1/3 test-lib-functions: handle --add in test_configNipunn Koorapati via GitGitGadget, Dec 21, 2020
  13. Eric SunshineDec 21, 2020
  14. Junio C HamanoDec 21, 2020
  15. Eric SunshineDec 21, 2020
  16. Nipunn KoorapatiDec 22, 2020
  17. Eric SunshineDec 22, 2020
  18. Nipunn KoorapatiDec 22, 2020
  19. Eric SunshineDec 22, 2020
  20. 0/2 negative-refspec: fix segfault on : refspecNipunn Koorapati via GitGitGadget, Dec 22, 2020
  21. 2/2 negative-refspec: improve comment on query_matches_negative_refspecNipunn Koorapati via GitGitGadget, Dec 22, 2020
  22. 1/2 negative-refspec: fix segfault on : refspecNipunn Koorapati via GitGitGadget, Dec 22, 2020
  23. Junio C HamanoDec 22, 2020
  24. Junio C HamanoDec 22, 2020
  25. 0/2 negative-refspec: fix segfault on : refspecNipunn Koorapati via GitGitGadget, Dec 22, 2020
  26. 2/2 negative-refspec: improve comment on query_matches_negative_refspecNipunn Koorapati via GitGitGadget, Dec 22, 2020
  27. 1/2 negative-refspec: fix segfault on : refspecNipunn Koorapati via GitGitGadget, Dec 22, 2020
  28. Jacob KellerFeb 19, 2021
  29. Junio C HamanoDec 22, 2020
  30. Nipunn KoorapatiDec 23, 2020
  31. Junio C HamanoDec 24, 2020
  32. Nipunn KoorapatiJan 11, 2021
  33. Junio C HamanoJan 12, 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.