blob: 923af49306e3dd2a098cd63472147fb9afa6b59f (
plain) (
tree)
|
|
#! /bin/sh
#
# Copyright 2014, 2016, 2017 Chris Johns <chrisj@rtems.org>
# All rights reserved
#
#
# usage: rtems-test-check <mode> <bsp-test-database> <includes> <bsp> <tests..>
#
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"
shift
bsp="$1"
shift
tests="$*"
test_count=0
for t in ${tests};
do
test_count=$(expr ${test_count} + 1)
done
case ${mode} in
exclude)
if test -f $testdata; then
output=""
else
output="${tests}"
fi
;;
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 and must pass.
#
if test -f $testdata; then
excluded_tests=""
expected_fails=""
indeterminates=""
while [ ! -z "$testdata" ];
do
for td in $testdata;
do
ntd=""
exec 3<& 0
exec 0<$td
while read line
do
line=$(echo $line | sed -e 's/#.*$//' -e '/^$/d')
if [ ! -z "$line" ]; then
state=$(echo $line | sed -e "s/:.*//g")
case $state in
include)
inf=$(echo $line | sed -e 's/include://g;s/[[:blank:]]//g')
if test -f $includepath/$inf; then
ntd="$includepath/$inf $ntd"
fi
;;
exclude)
line=$(echo $line | sed -e 's/exclude://g;s/[[:blank:]]//g')
excluded_tests="${excluded_tests} $line"
;;
expected-fail)
line=$(echo $line | sed -e 's/expected-fail://g;s/[[:blank:]]//g')
expected_fails="${expected_fails} $line"
;;
indeterminate)
line=$(echo $line | sed -e 's/indeterminate://g;s/[[:blank:]]//g')
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
for t in ${tests};
do
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"
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 ${output}
exit 0
|