forked from Imagelibrary/rtems
BSD sed does not support '\t' and treated '[ \t]' as 3 characters. This patch uses a standard method of supporting blank spaces.
155 lines
3.2 KiB
Bash
Executable File
155 lines
3.2 KiB
Bash
Executable File
#! /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
|