diff options
Diffstat (limited to 'validation')
| -rw-r--r-- | validation/optim/testsuite.c | 1 | ||||
| -rwxr-xr-x | validation/test-suite | 27 |
2 files changed, 28 insertions, 0 deletions
diff --git a/validation/optim/testsuite.c b/validation/optim/testsuite.c index 15c9bdd6..f4535522 100644 --- a/validation/optim/testsuite.c +++ b/validation/optim/testsuite.c @@ -9,4 +9,5 @@ int foo(void) * * check-output-ignore * check-output-match(ret): \\$0 + * check-output-returns: 0 */ diff --git a/validation/test-suite b/validation/test-suite index 37f9cdb5..6935d40c 100755 --- a/validation/test-suite +++ b/validation/test-suite @@ -78,6 +78,7 @@ get_tag_value() check_output_excludes=0 check_output_pattern=0 check_output_match=0 + check_output_returns=0 check_arch_ignore="" check_arch_only="" check_assert="" @@ -102,6 +103,7 @@ get_tag_value() check-output-excludes:) check_output_excludes=1 ;; check-output-pattern) check_output_pattern=1 ;; check-output-match) check_output_match=1 ;; + check-output-returns:) check_output_returns=1 ;; check-arch-ignore:) arch=$(uname -m) check_arch_ignore="$val" ;; check-arch-only:) arch=$(uname -m) @@ -225,6 +227,24 @@ match_patterns() } ## +return_patterns() +{ + ifile="$1" + patt="$2" + ofile="$3" + grep "$patt:" "$ifile" | sed -e "s/^.*$patt: *\(.*\)$/\1/" | \ + while read ret; do + grep -s "^ ret\\.[0-9]" "$ofile" | grep -v -s -q "[ \$]${ret}\$" + if [ "$?" -ne 1 ]; then + error " Return doesn't match '$ret'" + return 1 + fi + done + + return $? +} + +## # arg_file(filename) - checks if filename exists arg_file() { @@ -422,6 +442,13 @@ do_test() test_failed=1 fi fi + if [ $check_output_returns -eq 1 ]; then + # verify the 'check-output-return: $value' tags + return_patterns "$file" 'check-output-returns' $file.output.got + if [ "$?" -ne "0" ]; then + test_failed=1 + fi + fi if [ "$must_fail" -eq "1" ]; then if [ "$test_failed" -eq "1" ]; then |
