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

Re: [PATCH 1/2] t9400-git-cvsserver-server: don't rely on the output of 'test_cmp'

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Mar 8, 2018, 18:51 UTC
Message-ID
<CAPig+cTtV2unsixsMCWytdJMiYYytgdvbavfENhBrwvXq_79Bw@mail.gmail.com>
In-Reply-To
<20180308123844.15163-2-szeder.dev@gmail.com>
On Thu, Mar 8, 2018 at 7:38 AM, SZEDER Gábor <szeder.dev@gmail.com> wrote:
Show 6 quoted lines
> The test 'cvs update (-p)' redirects and checks 'test_cmp's stdout and
> even its stderr.  The commit introducing this test in 6e8937a084
> (cvsserver: Add test for update -p, 2008-03-27) doesn't discuss why,
> in fact its log message only consists of that subject line.  Anyway,
> weird as it is, it kind of made sense due to the way that test was
> structured:
[excellent explanation snipped]
Show 5 quoted lines
> Unroll that for loop, so we can check the files' contents the usual
> way and rely on 'test_cmp's exit code failing the && chain.  Extract
> updating a file via CVS and verifying its contents using 'test_cmp'
> into a helper function requiring the file's name as parameter to avoid
> much of the repetition resulting from unrolling the loop.

An alternative approach used elsewhere in the test suite[1] would be simply to 'exit' if test_cmp fails:

    for i in merge no-lf empty really-empty; do
        GIT_CONFIG="$git_config" cvs update -p "$i" >$i.out
        test_cmp $i.out ../$i || exit 1
    done &&

(And, like the existing patch, this removes the need for capturing test_cmp's output into a "failures" file.)

[1]: For example, the "setup" test of t2204-add-ignored.sh.
Show 18 quoted lines
> Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
> ---
> diff --git a/t/t9400-git-cvsserver-server.sh b/t/t9400-git-cvsserver-server.sh
> @@ -447,12 +452,10 @@ test_expect_success 'cvs update (-p)' '
>      git push gitcvs.git >/dev/null &&
>      cd cvswork &&
>      GIT_CONFIG="$git_config" cvs update &&
> -    rm -f failures &&
> -    for i in merge no-lf empty really-empty; do
> -        GIT_CONFIG="$git_config" cvs update -p "$i" >$i.out
> -       test_cmp $i.out ../$i >>failures 2>&1
> -    done &&
> -    test -z "$(cat failures)"
> +    check_cvs_update_p merge &&
> +    check_cvs_update_p no-lf &&
> +    check_cvs_update_p empty &&
> +    check_cvs_update_p really-empty
>  '
Previous: SZEDER GáborNext: SZEDER Gábor
Message 4 of 14 in “Make cvs tests pass with '-x' tracing and /bin/sh”
  1. 0/2 Make cvs tests pass with '-x' tracing and /bin/shSZEDER Gábor, Mar 8, 2018
  2. 2/2 t9402-git-cvsserver-refs: don't check the stderr of a subshellSZEDER Gábor, Mar 8, 2018
  3. 1/2 t9400-git-cvsserver-server: don't rely on the output of 'test_cmp'SZEDER Gábor, Mar 8, 2018
  4. Eric SunshineMar 8, 2018
  5. SZEDER GáborMar 8, 2018
  6. Eric SunshineMar 8, 2018
  7. Eric SunshineMar 8, 2018
  8. SZEDER GáborMar 8, 2018
  9. 1/2 t9400-git-cvsserver-server: don't rely on the output of 'test_cmp'SZEDER Gábor, Mar 8, 2018
  10. Junio C HamanoMar 8, 2018
  11. SZEDER GáborMar 8, 2018
  12. Junio C HamanoMar 8, 2018
  13. SZEDER GáborMar 9, 2018
  14. Jeff KingMar 13, 2018

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.