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

Re: [GUILT v3 09/31] Test suite: properly check the exit status of commands.

From
Per Cederqvist <cederp@opera.com>
Date
May 18, 2014, 19:12 UTC
Message-ID
<CAP=KgsSXL=rGb0PABSHQVBB1izZMKnxMVxegdu7NZAfSoRAHSQ@mail.gmail.com>
In-Reply-To
<20140516154513.GI1770@meili.valhalla.31bits.net>
On Fri, May 16, 2014 at 5:45 PM, Jeff Sipek <jeffpc@josefsipek.net> wrote:
Show 31 quoted lines
> On Fri, May 16, 2014 at 04:45:56PM +0200, Per Cederqvist wrote:
>> The "cmd" and "shouldfail" functions checked the exit status of the
>> replace_path function instead of the actual command that was running.
>> (The $? construct checks the exit status of the last command in a
>> pipeline, not the first command.)
>>
>> Updated t-032.sh, which used "shouldfail" instead of "cmd" in one
>> place.  (The comment in the script makes it clear that the command is
>> expected to succeed.)
>>
>> Signed-off-by: Per Cederqvist <cederp@opera.com>
>> ---
>>  regression/scaffold | 17 +++++++++++------
>>  regression/t-032.sh |  2 +-
>>  2 files changed, 12 insertions(+), 7 deletions(-)
>>
>> diff --git a/regression/scaffold b/regression/scaffold
>> index 5c8b73e..e4d7487 100644
>> --- a/regression/scaffold
>> +++ b/regression/scaffold
>> @@ -51,18 +51,23 @@ function filter_dd
>>  function cmd
>>  {
>>       echo "% $@"
>> -     "$@" 2>&1 | replace_path && return 0
>> -     return 1
>> +     (
>> +             exec 3>&1
>> +             rv=`(("$@" 2>&1; echo $? >&4) | replace_path >&3 ) 4>&1`
>
> Wow.  This took a while to decipher :)

Ancien wisdom from the "Csh Programming Considered Harmful" article: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/

These functions work only because of the "set -e" earlier in scaffold. The final return statements are not actually reached. I don't like that. So the next version of the patch series will print an explicit message like "% FAIL: The above command should succeed but failed." or "% FAIL: The above command should fail but succeeded." and do an explicit "exit 1" on failure. I think it makes it easier to debug issues. (I recently spent a few hours trying to figure our why the test just silently exited. Turns out the old git version I was running didn't like my .gitconfig, so it exited with a non-zero exit code...)

> Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
I'll let you re-check the next version of the code.
    /ceder
Show 40 quoted lines
>> +             exit $rv
>> +     )
>> +     return $?
>>  }
>>
>>  # usage: shouldfail <cmd>..
>>  function shouldfail
>>  {
>>       echo "% $@"
>> -     (
>> -             "$@" 2>&1 || return 0
>> -             return 1
>> -     ) | replace_path
>> +     ! (
>> +             exec 3>&1
>> +             rv=`(("$@" 2>&1; echo $? >&4) | replace_path >&3 ) 4>&1`
>> +             exit $rv
>> +     )
>>       return $?
>>  }
>>
>> diff --git a/regression/t-032.sh b/regression/t-032.sh
>> index b1d5f19..bba401e 100755
>> --- a/regression/t-032.sh
>> +++ b/regression/t-032.sh
>> @@ -28,7 +28,7 @@ shouldfail guilt import -P foo3 foo
>>  cmd guilt import -P foo2 foo
>>
>>  # ok
>> -shouldfail guilt import foo
>> +cmd guilt import foo
>>
>>  # duplicate patch name (implicit)
>>  shouldfail guilt import foo
>> --
>> 1.8.3.1
>>
>
> --
> Fact: 28.1% of all statistics are generated randomly.
Previous: Jeff SipekNext: Per Cederqvist
Message 13 of 41 in “[GUILT v3 00/31] Teach guilt import-commit how to create legal patch names, and more”
  1. Per CederqvistMay 16, 2014
  2. 01/31 The tests should not fail if guilt.diffstat is set.Per Cederqvist, May 16, 2014
  3. 02/31 Allow "guilt delete -f" to run from a dir which contains spaces.Per Cederqvist, May 16, 2014
  4. 03/31 Added test case for "guilt delete -f".Per Cederqvist, May 16, 2014
  5. 04/31 Allow "guilt import-commit" to run from a dir which contains spaces.Per Cederqvist, May 16, 2014
  6. 05/31 "guilt new": Accept more than 4 arguments.Per Cederqvist, May 16, 2014
  7. 06/31 Fix the do_get_patch function.Per Cederqvist, May 16, 2014
  8. 07/31 Added test cases for "guilt fold".Per Cederqvist, May 16, 2014
  9. 08/31 Added more test cases for "guilt new": empty patches.Per Cederqvist, May 16, 2014
  10. Jeff SipekMay 16, 2014
  11. 09/31 Test suite: properly check the exit status of commands.Per Cederqvist, May 16, 2014
  12. Jeff SipekMay 16, 2014
  13. Per CederqvistMay 18, 2014
  14. 10/31 Run test_failed if the exit status of a test script is bad.Per Cederqvist, May 16, 2014
  15. 11/31 test suite: remove pointless redirection.Per Cederqvist, May 16, 2014
  16. 12/31 "guilt header": more robust header selection.Per Cederqvist, May 16, 2014
  17. Jeff SipekMay 16, 2014
  18. 13/31 Check that "guilt header '.*'" fails.Per Cederqvist, May 16, 2014
  19. 14/31 Use "git check-ref-format" to validate patch names.Per Cederqvist, May 16, 2014
  20. Jeff SipekMay 16, 2014
  21. Per CederqvistMay 18, 2014
  22. 15/31 Produce legal patch names in guilt-import-commit.Per Cederqvist, May 16, 2014
  23. 16/31 Fix backslash handling when creating names of imported patches.Per Cederqvist, May 16, 2014
  24. 17/31 "guilt graph" no longer loops when no patches are applied.Per Cederqvist, May 16, 2014
  25. 18/31 guilt-graph: Handle commas in branch names.Per Cederqvist, May 16, 2014
  26. 19/31 Check that "guilt graph" works when working on a branch with a comma.Per Cederqvist, May 16, 2014
  27. 20/31 "guilt graph": Handle patch names containing quotes.Per Cederqvist, May 16, 2014
  28. 21/31 The log.decorate setting should not influence import-commit.Per Cederqvist, May 16, 2014
  29. 22/31 The log.decorate setting should not influence patchbomb.Per Cederqvist, May 16, 2014
  30. 23/31 The log.decorate setting should not influence guilt rebase.Per Cederqvist, May 16, 2014
  31. 24/31 disp no longer processes backslashes.Per Cederqvist, May 16, 2014
  32. 25/31 "guilt push" now fails when there are no more patches to push.Per Cederqvist, May 16, 2014
  33. 26/31 "guilt pop" now fails when there are no more patches to pop.Per Cederqvist, May 16, 2014
  34. 27/31 Minor testsuite fix.Per Cederqvist, May 16, 2014
  35. 28/31 Fix coding style errors in t-061.sh.Per Cederqvist, May 16, 2014
  36. Jeff SipekMay 16, 2014
  37. 29/31 Added guilt.reusebranch configuration option.Per Cederqvist, May 16, 2014
  38. Jeff SipekMay 16, 2014
  39. 30/31 Added a short style guide, and Emacs settings.Per Cederqvist, May 16, 2014
  40. 31/31 Don't use "git log -p" in the test suite.Per Cederqvist, May 16, 2014
  41. Jeff SipekMay 16, 2014

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.