Index: third_party/xdg-utils/tests/include/testcontrol.sh |
=================================================================== |
--- third_party/xdg-utils/tests/include/testcontrol.sh (revision 0) |
+++ third_party/xdg-utils/tests/include/testcontrol.sh (revision 0) |
@@ -0,0 +1,121 @@ |
+ |
+if [ -z "$IC_NUM" ] ; then |
+ declare -i IC_NUM=1 |
+fi |
+ |
+run_test() { |
+## USAGE: |
+# run_test test_func |
+ |
+# if tests are being run with TET or the test runner |
+if [ ! -z "$USING_TET" -o ! -z "$USING_TEST_RUNNER" ]; then |
+ ## The TET framework REQUIRES variables of the form $ic1 ... $icN |
+ ## where each variable is a list of test functions. Here, there is only |
+ ## one test function per $icN variable. Each $icN variable MUST be present |
+ ## in the $iclist |
+ export ic$IC_NUM="$1" |
+ export iclist="$iclist ic$IC_NUM" |
+ |
+ ## The standalone test runner executes each function in $TEST_LIST |
+ export TEST_LIST="$TEST_LIST $1" |
+ |
+else # test is being run directly. |
+ test_setup |
+ |
+ ## Subshell is necessary for containment |
+ ( "$1" ) |
+ test_cleanup |
+fi |
+IC_NUM=$(($IC_NUM+1)) |
+ |
+} |
+ |
+repeat_test() { |
+## USAGE: |
+# repeat_test test_func N var1 ... varN var1_value1 ... var1_valueM ... varN_valueM |
+# where N is the number of values to substiute and M is the number of |
+# values each varable takes |
+# |
+# EXAMPLE |
+# repeat_test copy_file 2 INPUT OUTPUT infile1 infile2 outfile1 outfile2 |
+# |
+# NOTE - all variables MUST have the same number of arguments |
+ |
+if [ "$#" -lt 4 ] ; then |
+ echo "TEST SYNTAX ERROR: repeat_test() requires at least 4 arguments!" |
+ exit 255 |
+fi |
+ |
+FUNC="$1" |
+VARS="$2" |
+shift 2 |
+ |
+## get list of variables |
+declare -i I=1 |
+while [ "$I" -le "$VARS" ]; do |
+ eval "v$I=$1" |
+ shift 1 |
+ |
+ eval "out=\$v$I" |
+ I=$(($I+1)) |
+done |
+ |
+#echo "----" |
+ |
+## $LENGTH is the number of values each variable takes |
+declare -i LENGTH=$(( $# / $VARS )) |
+#echo "list size: $LENGTH" |
+ |
+## Main loop: create a test function for each set of values. |
+declare -i J=1 |
+while [ "$J" -le "$LENGTH" ] ; do |
+ declare -i I=1 |
+ ## Begin test function string |
+ |
+ # it is only safe to use $IC_NUM since run_test is used later in this function. |
+ str="$FUNC-$J-$IC_NUM() {" |
+ |
+ while [ "$I" -le "$VARS" ] ; do |
+ ## Assign each value to appropriate variable |
+ eval "var=\$v$I" |
+ eval "value=\$$(( ($I-1)*$LENGTH+$J ))" |
+ #echo "$var: $value" |
+ str="$str |
+ $var=\"$value\"" |
+ |
+ I=$(($I+1)) |
+ done |
+ ## Close the test function and load it |
+ str="$str |
+ $FUNC |
+ }" |
+ #echo "$str" |
+ eval "$str" |
+ run_test "$FUNC-$J-$IC_NUM" |
+ |
+ J=$(($J+1)) |
+done |
+ |
+} |
+ |
+. "$XDG_TEST_DIR/include/tempfile.sh" |
+ |
+test_setup() { |
+ get_guid "xdgt" |
+ export XDG_TEST_ID="$GUID" |
+ get_tmpsubdir "$XDG_TEST_DIR/tmp" |
+ export XDG_TEST_TMPDIR="$TMPSUBDIR" |
+ cd "$XDG_TEST_TMPDIR" |
+ |
+ get_shortid "$XDG_TEST_DIR/tmp/shortid" |
+ export XDG_TEST_SHORTID="$SHORTID" |
+} |
+ |
+test_cleanup() { |
+ if [ -z "$XDG_TEST_DONT_CLEANUP" ] ; then |
+ cd "$XDG_TEST_DIR" |
+ # ALWAYS check what you pass to 'rm -rf' |
+ [ -d "$XDG_TEST_TMPDIR" ] && rm -rf "$XDG_TEST_TMPDIR" |
+ fi |
+} |
+ |