Mercurial > hg > audiodb
changeset 54:f258a0258755
Just testing for failure exit codes doesn't distinguish between a clean
error exit and a segfault. Define a shell function for clean error
exit, and use it everywhere.
author | mas01cr |
---|---|
date | Thu, 20 Sep 2007 09:52:16 +0000 |
parents | 944f05e65a58 |
children | 32f8b7845b30 |
files | tests/0001/run-test.sh tests/0002/run-test.sh tests/0003/run-test.sh tests/0007/run-test.sh tests/test-utils.sh |
diffstat | 5 files changed, 27 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/0001/run-test.sh Thu Sep 20 08:50:35 2007 +0000 +++ b/tests/0001/run-test.sh Thu Sep 20 09:52:16 2007 +0000 @@ -10,9 +10,9 @@ stat testdb # should fail (testdb exists) -${AUDIODB} -N -d testdb && exit 1 +expect_clean_error_exit ${AUDIODB} -N -d testdb # should fail (no db given) -${AUDIODB} -N && exit 1 +expect_clean_error_exit ${AUDIODB} -N exit 104
--- a/tests/0002/run-test.sh Thu Sep 20 08:50:35 2007 +0000 +++ b/tests/0002/run-test.sh Thu Sep 20 09:52:16 2007 +0000 @@ -12,6 +12,6 @@ ${AUDIODB} -d testdb -S # should fail (no db given) -${AUDIODB} -S && exit 1 +expect_clean_error_exit ${AUDIODB} -S exit 104
--- a/tests/0003/run-test.sh Thu Sep 20 08:50:35 2007 +0000 +++ b/tests/0003/run-test.sh Thu Sep 20 09:52:16 2007 +0000 @@ -23,10 +23,10 @@ cmp test-query-output test-expected-query-output # failure cases -${AUDIODB} -d testdb -I && exit 1 -${AUDIODB} -d testdb -f testfeature && exit 1 -${AUDIODB} -I -f testfeature && exit 1 -${AUDIODB} -d testdb -Q notpoint -f testfeature && exit 1 -${AUDIODB} -Q point -f testfeature && exit 1 +expect_clean_error_exit ${AUDIODB} -d testdb -I +expect_clean_error_exit ${AUDIODB} -d testdb -f testfeature +expect_clean_error_exit ${AUDIODB} -I -f testfeature +expect_clean_error_exit ${AUDIODB} -d testdb -Q notpoint -f testfeature +expect_clean_error_exit ${AUDIODB} -Q point -f testfeature exit 104
--- a/tests/0007/run-test.sh Thu Sep 20 08:50:35 2007 +0000 +++ b/tests/0007/run-test.sh Thu Sep 20 09:52:16 2007 +0000 @@ -2,17 +2,13 @@ . ../test-utils.sh -# this is the same as tests/0006, except without the -l 1 to ask for a -# sequence search of length 1; as of 2007-09-19, this causes -# segfaults. The default behaviour might not be to work completely -# without the -l 1, but it shouldn't segfault. (There's not much -# that's sensible other than defaulting to -l 1, because the query -# feature file is of length 1). - if [ -f testdb ]; then rm -f testdb; fi ${AUDIODB} -d testdb -N +# tests that the lack of -l when the query sequence is shorter doesn't +# segfault. + intstring 2 > testfeature floatstring 0 1 >> testfeature floatstring 1 0 >> testfeature @@ -26,22 +22,14 @@ intstring 2 > testquery floatstring 0 0.5 >> testquery -${AUDIODB} -d testdb -Q sequence -f testquery > testoutput -echo testfeature 1 0 0 > test-expected-output -cmp testoutput test-expected-output -${AUDIODB} -d testdb -Q sequence -f testquery -n 1 > testoutput -echo testfeature 0 0 0 > test-expected-output -cmp testoutput test-expected-output +expect_clean_error_exit ${AUDIODB} -d testdb -Q sequence -f testquery +expect_clean_error_exit ${AUDIODB} -d testdb -Q sequence -f testquery -n 1 echo "query point (0.5,0.0)" intstring 2 > testquery floatstring 0.5 0 >> testquery -${AUDIODB} -d testdb -Q sequence -f testquery > testoutput -echo testfeature 1 0 1 > test-expected-output -cmp testoutput test-expected-output -${AUDIODB} -d testdb -Q sequence -f testquery -n 1 > testoutput -echo testfeature 0 0 1 > test-expected-output -cmp testoutput test-expected-output +expect_clean_error_exit ${AUDIODB} -d testdb -Q sequence -f testquery +expect_clean_error_exit ${AUDIODB} -d testdb -Q sequence -f testquery -n 1 exit 104
--- a/tests/test-utils.sh Thu Sep 20 08:50:35 2007 +0000 +++ b/tests/test-utils.sh Thu Sep 20 09:52:16 2007 +0000 @@ -11,6 +11,18 @@ # encode. This might involve writing some C code, as Bash doesn't do # Floating Point. (scanf() is probably enough). +expect_clean_error_exit() { + trap - ERR + "$@" + exit_code=$? + trap "exit 1" ERR + if [ $exit_code -eq 0 ]; then + exit 1 + elif [ $exit_code -ge 126 ]; then + exit 1 + fi +} + floatstring() { for arg in "$@"; do case ${arg} in