aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
-rw-r--r--Documentation/test-suite4
-rwxr-xr-xvalidation/test-suite12
2 files changed, 16 insertions, 0 deletions
diff --git a/Documentation/test-suite b/Documentation/test-suite
index 626bc3fe..bf4518a2 100644
--- a/Documentation/test-suite
+++ b/Documentation/test-suite
@@ -27,6 +27,10 @@ check-arch-only: <arch[|...]>
Ignore the test if the current architecture (as returned by 'uname -m')
match or not one of the archs given in the pattern.
+check-assert: <condition>
+ Ignore the test if the given condition is false when evaluated as a
+ static assertion (_Static_assert).
+
check-cpp-if: <condition>
Ignore the test if the given condition is false when evaluated
by sparse's pre-processor.
diff --git a/validation/test-suite b/validation/test-suite
index 6c6d34b2..04607a3e 100755
--- a/validation/test-suite
+++ b/validation/test-suite
@@ -79,6 +79,7 @@ get_tag_value()
check_output_pattern=0
check_arch_ignore=""
check_arch_only=""
+ check_assert=""
check_cpp_if=""
lines=$(grep 'check-[a-z-]*' $1 | \
@@ -103,6 +104,7 @@ get_tag_value()
check_arch_ignore="$val" ;;
check-arch-only:) arch=$(uname -m)
check_arch_only="$val" ;;
+ check-assert:) check_assert="$val" ;;
check-cpp-if:) check_cpp_if="$val" ;;
check-description:) ;; # ignore
@@ -303,6 +305,16 @@ do_test()
return 3
fi
fi
+ if [ "$check_assert" != "" ]; then
+ res=$(../sparse - 2>&1 >/dev/null <<- EOF
+ _Static_assert($check_assert, "$check_assert");
+ EOF
+ )
+ if [ "$res" != "" ]; then
+ disable "$test_name" "$file"
+ return 3
+ fi
+ fi
if [ "$check_cpp_if" != "" ]; then
res=$(../sparse -E - 2>/dev/null <<- EOF
#if !($check_cpp_if)