blob: 6523dffc6039744061fc7e078a394625fffbf169 [file] [log] [blame]
#!/bin/bash -uex
#
# this is a really dumb script for auto-generating test cases from known good-data
#
# usage: ./add_test <pass|fail> <inputfile> <testname> [opal-gard subcommand]
#
# e.g.
# ./add_test.sh fail blank.bin create-bad-instance create /sys256
# ./add_test.sh pass blank.bin create-normal create /sys0/node0/proc0
#
# this will generate a test script file and writes the stdout/stderr of the command
# to the respective files.
#
cd $(dirname $(realpath $0))/../
echo $PWD
if [ "$1" = "pass" ]; then
check='if [ "$?" -ne 0 ]; then'
test_type="pass"
else
check='if [ "$?" -eq 0 ]; then'
test_type="fails"
fi
shift
file="test/files/$1"
if [ ! -f "$file" ]; then
echo "test file not found!"
exit 1;
fi
shift
name="$1"
shift
max="$(ls test/tests/ -1|sort -n | sed 's@\(..\).*@\1@' | tail -1 | sed s@^0*@@)"
num="$(printf %02d $((max + 1)))"
echo "Adding: $num-$name"
# where we will write the script file
script_file="test/tests/$num-$name"
echo "making $num-$name: f=$script_file, normally $test_type, cmd='$*'"
cat > $script_file <<EOF
#! /bin/sh
run_binary "./opal-gard" "-9 -p -e -f $file $*"
$check
fail_test
fi
diff_with_result
pass_test
EOF
# generate the .out and .err files
stdout_file="test/results/$num-$name.out"
stderr_file="test/results/$num-$name.err"
test_input="$name-$num-input"
cp $file $test_input
./opal-gard -f $test_input -p -e $* 2>$stderr_file >$stdout_file
rm -f $test_input