From e711f77e2f95226013b1553e713f2ba820da94e5 Mon Sep 17 00:00:00 2001
From: an7s <an7s@git.zephyr-software.com>
Date: Tue, 18 Oct 2011 20:46:12 +0000
Subject: [PATCH] Added exit code status check

Former-commit-id: 41a9f99dd0317533728377482340149546c3a30a
---
 tools/manual_test_import.sh | 25 +++++++++++++++++++++++--
 tools/run_one_test.sh       | 14 ++++++++++++++
 2 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/tools/manual_test_import.sh b/tools/manual_test_import.sh
index b5cc2a11b..292f2b63e 100755
--- a/tools/manual_test_import.sh
+++ b/tools/manual_test_import.sh
@@ -18,6 +18,7 @@
 INFILES=""
 OUTFILES=""
 TEST_NAME=""
+EXIT_CODE=""
 while [ $# -gt 0 ]
 do
   case "$1" in
@@ -26,6 +27,7 @@ do
 	"--infile")	INFILES="$2 $INFILES"; shift;;
 	"--outfile")	OUTFILES="$2 $OUTFILES"; shift;;
 	"--name")	TEST_NAME=$2; shift;;
+	"--exitcode")	EXIT_CODE=$2; shift;;
  	*) break;;
   esac
   shift
@@ -36,6 +38,7 @@ TEST_TIMEOUT=30
 echo "TEST_NAME = $TEST_NAME"
 echo "INFILES = $INFILES"
 echo "OUTFILES = $OUTFILES"
+echo "EXIT_CODE = $EXIT_CODE"
 echo "PROG = $PROG"
 echo "CMD = $CMD"
 
@@ -62,17 +65,23 @@ fi
 TEST_SPEC_DIR=${TEST_DIR}/spec
 SPEC_INPUT_DIR=$TEST_SPEC_DIR/input
 SPEC_OUTPUT_DIR=$TEST_SPEC_DIR/output
+SPEC_EXIT_CODE_DIR=$TEST_SPEC_DIR/exitcode
+EXIT_CODE_FILE=$SPEC_EXIT_CODE_DIR/exitcode.txt
+
 TEST_ORIG_COVERAGE=$TEST_SPEC_DIR/coverage
 TEST_ORIG_CMD_SCRIPT=$TEST_SPEC_DIR/generate_cover_orig_cmd.sh
-
 TEST_DIR_XFORMED=$TEST_DIR/transformed
 TEST_XFORMED_CMD_SCRIPT=$TEST_DIR_XFORMED/test_new_cmd.sh
 TEST_XFORMED_OUTPUT_DIR=$TEST_DIR_XFORMED/output
+TEST_XFORMED_EXIT_CODE_DIR=$TEST_DIR_XFORMED/exitcode
+TEST_XFORMED_EXIT_CODE_FILE=$TEST_XFORMED_EXIT_CODE_DIR/exitcode.txt
 
+mkdir -p $TEST_ORIG_COVERAGE
 mkdir -p $SPEC_INPUT_DIR
 mkdir -p $SPEC_OUTPUT_DIR
+mkdir -p $SPEC_EXIT_CODE_DIR
 mkdir -p $TEST_XFORMED_OUTPUT_DIR
-mkdir -p $TEST_ORIG_COVERAGE
+mkdir -p $TEST_XFORMED_EXIT_CODE_DIR
 
 # copy input files
 for i in $INFILES
@@ -86,6 +95,10 @@ do
   cp $i $SPEC_OUTPUT_DIR
 done
 
+if [ ! -z $EXIT_CODE ]; then
+	echo $EXIT_CODE > $EXIT_CODE_FILE
+fi
+
 #---------------------------------------
 # Original cmd/program
 #---------------------------------------
@@ -139,6 +152,9 @@ do
   echo " rm $TEST_XFORMED_OUTPUT_DIR/$i 2>/dev/null" >> $TEST_XFORMED_CMD_SCRIPT
 done
 
+# cleanup any old exit status code
+echo " rm $TEST_XFORMED_EXIT_CODE_FILE 2>/dev/null" >> $TEST_XFORMED_CMD_SCRIPT
+
 # stage in input (if any)
 for i in $INFILES
 do
@@ -150,6 +166,11 @@ done
 echo "STRATA_SPRI_FILE=\$1 timeout $TEST_TIMEOUT $CMD" >> $TEST_XFORMED_CMD_SCRIPT
 echo "status=\$?" >> $TEST_XFORMED_CMD_SCRIPT
 echo "echo \$status" >> $TEST_XFORMED_CMD_SCRIPT
+
+if [ ! -z $EXIT_CODE ]; then
+	echo "echo \$status > $TEST_XFORMED_EXIT_CODE_FILE" >> $TEST_XFORMED_CMD_SCRIPT
+fi
+
 echo "if [ \$status -eq 139 ]; then" >> $TEST_XFORMED_CMD_SCRIPT
 echo "  exit \$status" >> $TEST_XFORMED_CMD_SCRIPT
 echo "fi" >> $TEST_XFORMED_CMD_SCRIPT
diff --git a/tools/run_one_test.sh b/tools/run_one_test.sh
index bf53a3e10..48f5b9c2c 100755
--- a/tools/run_one_test.sh
+++ b/tools/run_one_test.sh
@@ -15,6 +15,9 @@ BSPRI=$2
 SPEC_DIR=$TEST_DIR/spec
 XFORMED_DIR=$TEST_DIR/transformed
 
+ORIG_EXIT_CODE_FILE=$SPEC_DIR/exitcode/exitcode.txt
+XFORMED_EXIT_CODE_FILE=$XFORMED_DIR/exitcode/exitcode.txt
+
 echo "running test $TEST_DIR from $XFORMED_DIR using bspri file: $BSPRI"
 cd $XFORMED_DIR
 ./test_new_cmd.sh $BSPRI
@@ -26,6 +29,15 @@ else
   echo "test command status code: $status"
 fi
 
+# compare exit codes when exit code file is found
+if [ -f $ORIG_EXIT_CODE_FILE ]; then
+	diff $ORIG_EXIT_CODE_FILE $XFORMED_EXIT_CODE_FILE
+	if [ ! $? -eq 0 ]; then
+		echo "test $TEST_DIR: exit codes do not match"
+		exit 1
+	fi
+fi
+
 cd output
 
 # make sure we have same number of files in the output directory
@@ -37,6 +49,7 @@ if [ "$num_files_orig" != "$num_files_xformed" ]; then
   exit 1
 fi
 
+# compare outputs
 for i in `ls`
 do
   diff $i $SPEC_DIR/output/$i
@@ -51,5 +64,6 @@ do
   fi
 done
 
+
 echo "Test $1 passed"
 exit 0
-- 
GitLab