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