aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/test-suite
diff options
Diffstat (limited to 'validation/test-suite')
-rwxr-xr-xvalidation/test-suite27
1 files changed, 27 insertions, 0 deletions
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