aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/test-suite
diff options
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2018-04-28 13:28:04 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2018-05-04 18:55:44 +0200
commit78389300348804c26c231f56e1c8156082957a64 (patch)
treedc3b64aa26dc3dca4538967b2f9f2e08fe273bc0 /validation/test-suite
parent5f8653250bdcb034d57c29e8dccfd23e39d19443 (diff)
downloadsparse-dev-78389300348804c26c231f56e1c8156082957a64.tar.gz
testsuite: add check-cp-if
Ideally, the testcases should be universal but it happen than some of them need to test some specificities or are meaningless or plainly wrong in some situations. In such cases, these tests must but ignored. Currently, the only the only mechanisms a test are: 1) ignoring the tests depending on a tool which cannot be compiled (like, for example, those using sparse-llvm when LLVM is not installed. 2) some rather corse criteria using the name of the arch used to run the tests. Allow more flexibility by allowing to exclude some tests based on the evaluation of some pre-processor expression at test-time. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation/test-suite')
-rwxr-xr-xvalidation/test-suite14
1 files changed, 14 insertions, 0 deletions
diff --git a/validation/test-suite b/validation/test-suite
index 4fdc9e9f..6c6d34b2 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_cpp_if=""
lines=$(grep 'check-[a-z-]*' $1 | \
sed -e 's/^.*\(check-[a-z-]*:*\) *\(.*\)$/\1 \2/')
@@ -102,6 +103,7 @@ get_tag_value()
check_arch_ignore="$val" ;;
check-arch-only:) arch=$(uname -m)
check_arch_only="$val" ;;
+ check-cpp-if:) check_cpp_if="$val" ;;
check-description:) ;; # ignore
check-note:) ;; # ignore
@@ -301,6 +303,18 @@ do_test()
return 3
fi
fi
+ if [ "$check_cpp_if" != "" ]; then
+ res=$(../sparse -E - 2>/dev/null <<- EOF
+ #if !($check_cpp_if)
+ fail
+ #endif
+ EOF
+ )
+ if [ "$res" != "" ]; then
+ disable "$test_name" "$file"
+ return 3
+ fi
+ fi
if [ -z "$vquiet" ]; then
echo " TEST $test_name ($file)"