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

Re: [PATCHv4 02/15] t4017 (diff-retval): replace manual exit code check with test_expect_code

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Oct 1, 2010, 10:38 UTC
Message-ID
<AANLkTinqVTqxiHL5tEv+-SS6YURGUoWaPxCgpccZgjEq@mail.gmail.com>
In-Reply-To
<20101001102315.GA6816@burratino>
On Fri, Oct 1, 2010 at 10:23, Jonathan Nieder <jrnieder@gmail.com> wrote:
Show 16 quoted lines
> Ævar Arnfjörð Bjarmason wrote:
>> On Wed, Sep 29, 2010 at 18:07, Junio C Hamano <gitster@pobox.com> wrote:
>>> Elijah Newren <newren@gmail.com> writes:
>
>>>> -test_expect_success 'git diff-tree HEAD^ HEAD' '
>>>> +test_expect_code 1 'git diff-tree HEAD^ HEAD' '
>>>>       git diff-tree --exit-code HEAD^ HEAD
>>>> -     test $? = 1
>>>>  '
>>
>> It also looks like this will pass for for all exit codes that *aren't*
>> 1, because if $? != 1 +test_expect_code will get the exit code of
>> 1.
>
> You probably missed the - indicating that the "test $? = 1" was being
> removed.
Correct. I misread that.
Show 7 quoted lines
> +check_exit_status () {
> +       echo "$1" >expect.status
> +       shift
> +       "$@"
> +       echo "$?" >actual.status
> +       test_cmp expect.status actual.status
> +}

If we add this it should be in the test-lib.sh, it'll probably be useful for other tests.

Show 10 quoted lines
>  test_expect_success 'setup' '
>        echo "1 " >a &&
>        git add . &&
> @@ -21,110 +29,81 @@ test_expect_success 'git diff --quiet -w  HEAD^^ HEAD^' '
>  '
>
>  test_expect_success 'git diff --quiet HEAD^^ HEAD^' '
> -       test_must_fail git diff --quiet HEAD^^ HEAD^
> +       check_exit_status 1 git diff --quiet HEAD^^ HEAD^
>  '

In most uses of check_exit_status you're using it is the very last command within a test_expect_success. Isn't it redundant to using just "test_expect_code $code ..." there?

Show 14 quoted lines
>  test_expect_success 'check detects leftover conflict markers' '
> @@ -133,10 +112,8 @@ test_expect_success 'check detects leftover conflict markers' '
>        echo binary >>b &&
>        git commit -m "side" b &&
>        test_must_fail git merge master &&
> -       git add b && (
> -               git --no-pager diff --cached --check >test.out
> -               test $? = 2
> -       ) &&
> +       git add b &&
> +       check_exit_status 2 git --no-pager diff --cached --check >test.out &&
>        test 3 = $(grep "conflict marker" test.out | wc -l) &&
>        git reset --hard
>  '
But of course in cases like these it's needed.

In any case, we only use test_expect_code for two tests in the whole test suite now, and checking the exit status for individual commands is more self-documenting and less prone to break if we add more tests to a given test.

So IMO the best thing to do would be to re-appropriate "test_expect_code" so that it runs inside a test (i.e. does what your check_exit_status does), and not at the top-level.

Then do s/check_exit_status/test_expect_code/g on your patch, and change the tests using test_expect_code in t1504-ceiling-dirs.sh and t6020-merge-df.sh to use test_expect_success + test_expect_code.

Previous: Jonathan NiederNext: Jonathan Nieder
Message 7 of 51 in “[PATCHv4 00/15] Add missing &&'s in the testsuite”
  1. Elijah NewrenSep 26, 2010
  2. 01/15 t3020 (ls-files-error-unmatch): remove stray '1' from end of fileElijah Newren, Sep 26, 2010
  3. 02/15 t4017 (diff-retval): replace manual exit code check with test_expect_codeElijah Newren, Sep 26, 2010
  4. Junio C HamanoSep 29, 2010
  5. Ævar Arnfjörð BjarmasonSep 29, 2010
  6. Jonathan NiederOct 1, 2010
  7. Ævar Arnfjörð BjarmasonOct 1, 2010
  8. Jonathan NiederOct 1, 2010
  9. Junio C HamanoOct 1, 2010
  10. test-lib: make test_expect_code a test commandÆvar Arnfjörð Bjarmason, Oct 1, 2010
  11. Sverre RabbelierOct 1, 2010
  12. Ævar Arnfjörð BjarmasonOct 1, 2010
  13. Sverre RabbelierOct 1, 2010
  14. test-lib: make test_expect_code a test commandÆvar Arnfjörð Bjarmason, Oct 1, 2010
  15. Jonathan NiederOct 1, 2010
  16. 03/15 t100[12] (read-tree-m-2way, read_tree_m_u_2way): add missing &&Elijah Newren, Sep 26, 2010
  17. Junio C HamanoSep 29, 2010
  18. Jonathan NiederOct 1, 2010
  19. 04/15 t4002 (diff-basic): use test_might_fail for commands that might failElijah Newren, Sep 26, 2010
  20. Jonathan NiederOct 1, 2010
  21. 05/15 t4202 (log): Replace '<git-command> || :' with test_might_failElijah Newren, Sep 26, 2010
  22. 06/15 t3600 (rm): add lots of missing &&Elijah Newren, Sep 26, 2010
  23. Jonathan NiederOct 1, 2010
  24. Elijah NewrenOct 3, 2010
  25. 07/15 t4019 (diff-wserror): add lots of missing &&Elijah Newren, Sep 26, 2010
  26. Junio C HamanoSep 29, 2010
  27. Elijah NewrenOct 3, 2010
  28. Jonathan NiederOct 1, 2010
  29. 08/15 t4026 (color): remove unneeded and unchained commandElijah Newren, Sep 26, 2010
  30. 09/15 t5602 (clone-remote-exec): add missing &&Elijah Newren, Sep 26, 2010
  31. Junio C HamanoSep 29, 2010
  32. Jonathan NiederOct 1, 2010
  33. Elijah NewrenOct 3, 2010
  34. 10/15 t6016 (rev-list-graph-simplify-history): add missing &&Elijah Newren, Sep 26, 2010
  35. Jonathan NiederSep 27, 2010
  36. 11/15 t7001 (mv): add missing &&Elijah Newren, Sep 26, 2010
  37. 12/15 t7601 (merge-pull-config): add missing &&Elijah Newren, Sep 26, 2010
  38. 13/15 t7800 (difftool): add missing &&Elijah Newren, Sep 26, 2010
  39. Jonathan NiederOct 1, 2010
  40. 14/15 Add missing &&'s throughout the testsuiteElijah Newren, Sep 26, 2010
  41. Junio C HamanoSep 29, 2010
  42. Ævar Arnfjörð BjarmasonOct 1, 2010
  43. Jonathan NiederOct 1, 2010
  44. 15/15 Replace "unset VAR" with "unset VAR;" in testsuite as per t/READMEElijah Newren, Sep 26, 2010
  45. Junio C HamanoSep 29, 2010
  46. Ævar Arnfjörð BjarmasonSep 29, 2010
  47. Elijah NewrenSep 29, 2010
  48. Junio C HamanoSep 30, 2010
  49. Elijah NewrenSep 30, 2010
  50. Jonathan NiederOct 1, 2010
  51. Sverre RabbelierOct 1, 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.