summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2016-12-05 14:53:54 +1100
committerChris Johns <chrisj@rtems.org>2016-12-07 17:22:41 +1100
commit28fda6279b82c07a673a8ebf875b77bb69695f1a (patch)
treeb6c1b6a199664fa9bf6acb977c631e05efcaa4a9 /tools
parent4b579c5f5170e1fb6a0573729444c289643b7d84 (diff)
downloadrtems-28fda6279b82c07a673a8ebf875b77bb69695f1a.tar.bz2
testsuite: Add test states to the testsuit configuration files.
Change the testsuite configuration files to hold state information about a test. The states are: exclude - Do not build the test expected-fail - The test is expected to fail indeterminate - The test may pass or may fail A message is printed just after the test's BEGIN message to indicate there is a special state for the test. No state message means the test is expected to pass. This support requires tests are correctly written to the use standard support to begin and end a test.
Diffstat (limited to 'tools')
-rwxr-xr-xtools/build/rtems-test-check128
1 files changed, 101 insertions, 27 deletions
diff --git a/tools/build/rtems-test-check b/tools/build/rtems-test-check
index 2411dd12fc..e02f8e939e 100755
--- a/tools/build/rtems-test-check
+++ b/tools/build/rtems-test-check
@@ -1,18 +1,21 @@
#! /bin/sh
#
-# Copyright 2014 Chris Johns <chrisj@rtems.org>
+# Copyright 2014, 2016 Chris Johns <chrisj@rtems.org>
# All rights reserved
#
#
-# usage: rtems-test-check <bsp-test-database> <includes> <bsp> <tests..>
+# usage: rtems-test-check <mode> <bsp-test-database> <includes> <bsp> <tests..>
#
-if test $# -lt 3; then
+if test $# -lt 4; then
echo "error: invalid command line" >&2
+ echo "INVALID-TEST-DATA"
exit 2
fi
+mode="$1"
+shift
testdata="$1"
shift
includepath="$1"
@@ -20,14 +23,39 @@ shift
bsp="$1"
shift
tests="$*"
-bsp_tests=${tests}
+
+test_count=0
+for t in ${tests};
+do
+ test_count=$(expr ${test_count} + 1)
+done
+
+case ${mode} in
+ exclude)
+ output=${tests}
+ ;;
+ flags)
+ if [ $test_count != 1 ]; then
+ echo "error: test count not 1 for ${mode}" 1>&2
+ exit 1
+ fi
+ output=""
+ ;;
+ *)
+ echo "error: invalid mode" 1>&2
+ echo "INVALID-TEST-DATA"
+ exit 1
+ ;;
+esac
#
-# If there is no testdata all tests are valid.
+# If there is no testdata all tests are valid and must pass.
#
if test -f $testdata; then
- disabled_tests=""
+ excluded_tests=""
+ expected_fails=""
+ indeterminates=""
while [ ! -z "$testdata" ];
do
for td in $testdata;
@@ -39,38 +67,84 @@ if test -f $testdata; then
do
line=$(echo $line | sed -e 's/#.*$//' -e '/^$/d')
if [ ! -z "$line" ]; then
- include=$(echo $line | sed -e "s/include:.*/yes/g")
- if [ "$include" = "yes" ]; then
- inf=$(echo $line | sed -e "s/include://g" -e 's/^[ \t]//;s/[ \t]$//')
- if test -f $includepath/$inf; then
- ntd="$includepath/$inf $ntd"
- fi
- else
- disabled_tests="${disabled_tests} $line"
- fi
+ state=$(echo $line | sed -e "s/:.*//g")
+ case $state in
+ include)
+ inf=$(echo $line | sed -e "s/include://g" -e 's/^[ \t]//;s/[ \t]$//')
+ if test -f $includepath/$inf; then
+ ntd="$includepath/$inf $ntd"
+ fi
+ ;;
+ exclude)
+ line=$(echo $line | sed -e "s/exclude://g" -e 's/^[ \t]//;s/[ \t]$//')
+ excluded_tests="${excluded_tests} $line"
+ ;;
+ expected-fail)
+ line=$(echo $line | sed -e "s/expected-fail://g" -e 's/^[ \t]//;s/[ \t]$//')
+ expected_fails="${expected_fails} $line"
+ ;;
+ indeterminate)
+ line=$(echo $line | sed -e "s/indeterminate://g" -e 's/^[ \t]//;s/[ \t]$//')
+ indeterminates="${indeterminates} $line"
+ ;;
+ *)
+ echo "error: invalid test state: $state in $td" 1>&2
+ echo "INVALID-TEST-DATA"
+ exit 1
+ ;;
+ esac
fi
done
done
testdata=$ntd
done
- bsp_tests=""
for t in ${tests};
do
- allow="yes"
- for dt in ${disabled_tests};
- do
- if test ${t} = ${dt}; then
+ case ${mode} in
+ exclude)
+ allow="yes"
+ for dt in ${excluded_tests};
+ do
+ if test ${t} = ${dt}; then
+ allow="no"
+ fi
+ done
+ if test ${allow} = yes; then
+ output="${output} ${t}"
+ fi
+ ;;
+ flags)
allow="no"
- fi
- done
- if test ${allow} = yes; then
- bsp_tests="${bsp_tests} ${t}"
- fi
+ for et in ${expected_fails};
+ do
+ if test ${t} = ${et}; then
+ allow="yes"
+ fi
+ done
+ if test ${allow} = yes; then
+ output="-DTEST_STATE_EXPECTED_FAIL=1"
+ fi
+ allow="no"
+ for it in ${indeterminates};
+ do
+ if test ${t} = ${it}; then
+ allow="yes"
+ fi
+ done
+ if test ${allow} = yes; then
+ output="${output} -DTEST_STATE_INDETERMINATE=1"
+ fi
+ ;;
+ *)
+ echo "error: invalid mode" 1>&2
+ echo "INVALID-TEST-DATA"
+ exit 1
+ ;;
+ esac
done
fi
-echo ${bsp_tests}
+echo ${output}
exit 0
-