[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Octave-patch-tracker] [patch #9633] Add test for correct exit status be
From: |
Karl Wette |
Subject: |
[Octave-patch-tracker] [patch #9633] Add test for correct exit status behaviour |
Date: |
Tue, 8 May 2018 04:22:25 -0400 (EDT) |
User-agent: |
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0 |
Follow-up Comment #1, patch #9633 (project octave):
(Apologies: the original submission had some formatting problems.)
I use Octave primarily as a command-line script interpreter (i.e. I run
executable scripts with #!/usr/bin/octave to invoke Octave) for scientific
applications on computer clusters. It is important for this application that
Octave conform to standard exit status behaviour:
* zero exit status is returned on success, either through normal completion or
by calling exit(0), and
* non-zero exit status is returned on failure, either through raising an
error() or by calling exit(n) with n != 0.
In Octave 4.2.2 the standard exit status behaviour was broken:
> $ octave --version
> GNU Octave, version 4.2.2
> ...
>
> $ echo '0;' > script.m; octave script.m; echo $?
> 0 # ok
>
> $ echo 'error("msg");' > script.m; octave script.m; echo $?
> error: msg
> error: called from
> script at line 1 column 1
> 0 # should return not 0
>
> $ echo 'exit(0);' > script.m; octave script.m; echo $?
> terminate called after throwing an instance of 'octave::exit_exception'
> panic: Aborted -- stopping myself...
> Aborted
> 134 # should return 0
>
> $ echo 'exit(1);' > script.m; octave script.m; echo $?
> terminate called after throwing an instance of 'octave::exit_exception'
> panic: Aborted -- stopping myself...
> Aborted
> 134 # should return 1
However it seems to have been fixed recently in development:
> $ cat ./HG-ID
> 3d5f953e2ef6
>
> $ echo '0;' > script.m; ./run-octave script.m; echo $?
> 0 # ok
>
> $ echo 'error("msg");' > script.m; ./run-octave script.m; echo $?
> error: msg
> error: called from
> script at line 1 column 1
> 1 # ok
>
> $ echo 'exit(0);' > script.m; ./run-octave script.m; echo $?
> 0 # ok
>
> $ echo 'exit(1);' > script.m; ./run-octave script.m; echo $?
> 1 # ok
I was unable to find a unit test for Octave's exit status behaviour, so the
attached patch adds such a unit test to ensure the exit status behaviour is
not broken in future. The patch adds a script ./test-octave-exit-status.sh
which runs Octave code snippets either as a script or using --eval, and then
tests Octave's exit status for the standard behaviour given above.
The script ./test-octave-exit-status.sh is called from "make check" before the
rest of the Octave test suite; a failed test in ./test-octave-exit-status.sh
will cause "make check" to fail; since the exit status tests are separate from
the rest of the Octave test suite, a silent test failure might otherwise go
unnoticed.
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/patch/?9633>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/