diff options
author | Homer Hsing <homer.xing@intel.com> | 2012-09-19 09:34:58 +0800 |
---|---|---|
committer | Xiang, Haihao <haihao.xiang@intel.com> | 2012-09-26 23:27:00 -0400 |
commit | 0f6943ed72116201edb2f51f760784a92a9be2ed (patch) | |
tree | fb0fd5cec6480308716db4ce050e4f3a5110e8ad | |
parent | 5312be2ea55ee3acfd7453b71d3f7e15297eaf1a (diff) |
Automatically run all test cases.
In the past test/run-test.sh run only one test case per call.
This patch let it automatically run all test cases.
-rw-r--r-- | test/Makefile.am | 3 | ||||
-rw-r--r-- | test/run-test.sh | 88 |
2 files changed, 80 insertions, 11 deletions
diff --git a/test/Makefile.am b/test/Makefile.am index 1c5b13e..0d8d349 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -77,8 +77,7 @@ EXTRA_DIST = \ run-test.sh $(TESTS): run-test.sh - sed "s|TEST|$@|g" ${srcdir}/run-test.sh > $@ - chmod +x $@ + chmod +x ${srcdir}/run-test.sh CLEANFILES = \ *.out \ diff --git a/test/run-test.sh b/test/run-test.sh index a7de7d4..e02a6e0 100644 --- a/test/run-test.sh +++ b/test/run-test.sh @@ -1,13 +1,83 @@ #!/bin/sh +#TODO: add new test cases in environment variables ${TEST_GEN4_XXX} + DIR="$( cd -P "$( dirname "$0" )" && pwd )" +ASSEMBLER="${DIR}/../src/intel-gen4asm" + +# Tests that are expected to success because they contain correct code. +# $1 is the gen level, e.g., 4 or 7 +# $2 is the test case name +function check_if_work() +{ + GEN_LEVEL="$1" + TEST_CASE_NAME="$2" + SOURCE="${TEST_CASE_NAME}.g${1}a" + EXPECTED="${TEST_CASE_NAME}.expected" + TEMP_OUT="temp.out" + ${ASSEMBLER} -g ${GEN_LEVEL} ${DIR}/${SOURCE} -o ${TEMP_OUT} + if cmp ${TEMP_OUT} ${DIR}/${EXPECTED} 2> /dev/null; + then + echo "[ OK ] ${TEST_CASE_NAME}"; + else + echo "[FAIL] ${TEST_CASE_NAME}"; + diff -u ${DIR}/${EXPECTED} ${TEMP_OUT}; + fi +} + +# Tests that are expected to fail because they contain wrong code. +function check_if_fail() +{ + GEN_LEVEL="$1" + TEST_CASE_NAME="$2" + SOURCE="${TEST_CASE_NAME}.g${1}a" + TEMP_OUT="temp.out" + ${ASSEMBLER} -g ${GEN_LEVEL} ${DIR}/${SOURCE} -o ${TEMP_OUT} 2>/dev/null + if [ $? -eq 0 ]; + then + echo "[FAIL] ${TEST_CASE_NAME}"; + else + echo "[ OK ] ${TEST_CASE_NAME}"; + fi +} + +# Tests that are expected to success because they contain correct code. +TEST_GEN4_SHOULD_WORK="\ + mov \ + frc \ + rndd \ + rndu \ + rnde \ + rnde-intsrc \ + rndz \ + lzd \ + not \ + jmpi \ + if \ + iff \ + while \ + else \ + break \ + cont \ + halt \ + wait \ + endif \ + declare \ + immediate \ + " + +# Tests that are expected to fail because they contain wrong code. +TEST_GEN4_SHOULD_FAIL="\ + rnde-intsrc \ + " + +for T in ${TEST_GEN4_SHOULD_WORK} +do + check_if_work 4 ${T} +done + +for T in ${TEST_GEN4_SHOULD_FAIL} +do + check_if_fail 4 ${T} +done -${DIR}/../src/intel-gen4asm -o TEST.out ${DIR}/TEST.g4a -if cmp TEST.out ${DIR}/TEST.expected 2> /dev/null; -then - echo "Good"; -else - echo "Output comparison for TEST" - diff -u ${DIR}/TEST.expected TEST.out - exit 1; -fi |