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

Re: [PATCH v2] test-lib: user-friendly alternatives to test [!] [-d|-f]

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Aug 7, 2010, 00:21 UTC
Message-ID
<AANLkTimiSJQPcZRZ06BamJPkd8PBkm7CaMcsKRSdEeP_@mail.gmail.com>
In-Reply-To
<20100806225705.GA2534@burratino>
On Fri, Aug 6, 2010 at 22:57, Jonathan Nieder <jrnieder@gmail.com> wrote:
Show 17 quoted lines
> Matthieu Moy wrote:
>        - test_file_exists <name> [<diagnosis>]
>        - test_dir_exists <name> [<diagnosis>]
>
>          Check that <name> exists and is a file or directory,
>          printing a diagnostic if it does not.  The <diagnosis>
>          if present will be used to give some added context to
>          the diagnostic.
>
>        - test_does_not_exist <name> [<diagnosis>]
>
>          Check that <name> does not exist, printing a
>          diagnostic if it does.  The <diagnosis> will be
>          printed on failure as added context if present.
>
> I think the ..._must_exist names put the emphasis in the
> wrong place, and they look funny in "if" statements.

Personally I'd prefer something where I can just think in the "test" bultin terms and still get debug info, something like (pseduocode)

    gittest() {
        test "$#" = 3 && { bool='!'; shift; } || bool=
        test=$1; shift
        args="$@"; shift
        case "$test" in
        -f)
            # Handle the common case of -f with a custom message
        ;;
        -d)
            # Same for -d
        ;;
        *)
            # Just pass a switch to test and say "test with the -X
switch", or something
esac
    }
    gittest ! -f ~/.gitconfig
    gittest -f ~/.gitconfig
    gittest -d /tmp
    gittest ! -d /tmp
    gittest -s /tmp

I'll never be able to fit more test_* functions in my brain, and I wrote the docs :)

Show 17 quoted lines
> Style nitpick: if statementss in the test-lib have tended to look like
>
>  if [ foo ]
>  then
>        bar
>  fi
>
> so far.  Here the whole function is a glorified "test -f", so I wonder
> if
>
>        [ -f "$1" ] ||
>        {
>                echo >&2 "file $1 doesn't exist. $*"
>                false
>        }
>
> would not be clearer.  I dunno.
This is the style we usually use:
    if ! test -f "$1"
    then
        echo >&2 "file $1 doesn't exist. $*"
        false
    fi
> I have often run into silent test failures of the sort your patch
> is designed to avoid.  Thanks for tackling it.

Yeah, having more intra-test progress is definitely good. Right now I just remove things from the tests in an ad-hoc fashion until they start passing if they fail when I debug them.

I mentioned that we could emit these test progress reports as TAP in a previous E-Mail. Here's how that could look like:

    $ perl -MTest::More=no_plan -E '
        subtest "A git test" => sub {
            pass("doing test -f file");
            pass("git commit ...");
            pass("test_tick...");
            done_testing();
        } for 1 .. 2
    '
        ok 1 - doing test -f file
        ok 2 - git commit ...
        ok 3 - test_tick...
        1..3
    ok 1 - A git test
        ok 1 - doing test -f file
        ok 2 - git commit ...
        ok 3 - test_tick...
        1..3
    ok 2 - A git test
    1..2
I.e. we could make these intra-test progress reports machine readable.

As the example shows the obvious next step would be to make other utility functions like test_commit() emit a progress status as well.

Previous: Jonathan NiederNext: Junio C Hamano
Message 8 of 15 in “rebase -i: add exec command to launch a shell command”
  1. rebase -i: add exec command to launch a shell commandMatthieu Moy, Aug 5, 2010
  2. Ævar Arnfjörð BjarmasonAug 5, 2010
  3. Matthieu MoyAug 5, 2010
  4. 1/2 rebase -i: add exec command to launch a shell commandMatthieu Moy, Aug 5, 2010
  5. 2/2 test-lib: user-friendly alternatives to test [!] [-d|-f]Matthieu Moy, Aug 5, 2010
  6. test-lib: user-friendly alternatives to test [!] [-d|-f]Matthieu Moy, Aug 5, 2010
  7. Jonathan NiederAug 6, 2010
  8. Ævar Arnfjörð BjarmasonAug 7, 2010
  9. Junio C HamanoAug 9, 2010
  10. test-lib: user-friendly alternatives to test [-d|-f|-e]Matthieu Moy, Aug 10, 2010
  11. Joshua JuranAug 10, 2010
  12. test-lib: user-friendly alternatives to test [-d|-f|-e]Matthieu Moy, Aug 10, 2010
  13. Erik Faye-LundAug 5, 2010
  14. Jacob HelwigAug 5, 2010
  15. Junio C HamanoAug 5, 2010

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.