[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FYI 5/7] {tap-test-protocols} testsuite: improve and refactor our custo
From: |
Stefano Lattarini |
Subject: |
[FYI 5/7] {tap-test-protocols} testsuite: improve and refactor our custom TAP shell library |
Date: |
Sun, 7 Aug 2011 16:05:36 +0200 |
This change is mostly done in preparation for the next one.
* tests/tap-functions.sh (result_with_directive_): Merge into ...
(result_): ... this function, which has been greatly extended and
improved in various ways.
(ok_, not_ok_, skip_, xfail_, xpass_): Adjust.
Adjust comments. Remove an extra empty line.
* tests/instspc.tap: Use the new improved interface of `result_'.
* tests/tap-bad-prog.tap: Likewise.
---
ChangeLog | 12 ++++++++
tests/instspc.tap | 11 +++++--
tests/tap-bad-prog.tap | 3 +-
tests/tap-functions.sh | 74 +++++++++++++++++++++++++++++-------------------
4 files changed, 67 insertions(+), 33 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index a87953c..f181624 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
2011-08-07 Stefano Lattarini <address@hidden>
+ testsuite: improve and refactor our custom TAP shell library
+ This change is mostly done in preparation for the next one.
+ * tests/tap-functions.sh (result_with_directive_): Merge into ...
+ (result_): ... this function, which has been greatly extended and
+ improved in various ways.
+ (ok_, not_ok_, skip_, xfail_, xpass_): Adjust.
+ Adjust comments. Remove an extra empty line.
+ * tests/instspc.tap: Use the new improved interface of `result_'.
+ * tests/tap-bad-prog.tap: Likewise.
+
+2011-08-07 Stefano Lattarini <address@hidden>
+
testsuite: update "user interface" description in tests/README
* tests/README (Subsection "Interpretation"): Mention the "ERROR"
outcome.
diff --git a/tests/instspc.tap b/tests/instspc.tap
index 4c81151..f421fc7 100755
--- a/tests/instspc.tap
+++ b/tests/instspc.tap
@@ -257,11 +257,16 @@ for test_name in $test_names_list; do
&& DESTDIR="$dest" file="./$test_string" $MAKE -e test-inst \
|| r='not ok'
- tap_text="$test_name in ${where}dir"
+ description="$test_name in ${where}dir"
if expected_to_fail "$where" "$test_name"; then
- tap_text="$tap_text # TODO long-standing limitation"
+ directive=TODO
+ reason="long-standing limitation"
+ else
+ directive=
+ reason=
fi
- result_ "$r" "$tap_text" # Test case outcome is here.
+ # Test case outcome is here.
+ result_ "$r" -D "$directive" -r "$reason" -- "$description"
cd "$ocwd" || fatal_ "cannot chdir back to test directory"
diff --git a/tests/tap-bad-prog.tap b/tests/tap-bad-prog.tap
index 0cc3a11..086b38e 100755
--- a/tests/tap-bad-prog.tap
+++ b/tests/tap-bad-prog.tap
@@ -82,6 +82,7 @@ then
else
r='not ok'
fi
-result_ "$r" 'no spurious results # TODO still get "missing plan"'
+result_ "$r" --directive TODO --reason 'still get "missing plan"' \
+ 'no spurious results'
:
diff --git a/tests/tap-functions.sh b/tests/tap-functions.sh
index d87a32c..b638e6f 100644
--- a/tests/tap-functions.sh
+++ b/tests/tap-functions.sh
@@ -83,29 +83,46 @@ warn_ ()
diag_ "WARNING:" ${1-"(unknown warning)"} ${1+"$@"}
}
-# result_ RESULT [DESCRIPTION...]
-# -------------------------------
-# Report a test case with the given result.
+# result_ RESULT [-D DIRECTIVE] [-r REASON] [--] [DESCRIPTION...]
+# ---------------------------------------------------------------
+# Report a test case with the given RESULT (valid values are "ok" and
+# "not ok") and the given DESCRIPTION (if any). If DIRECTIVE is given
+# and non-empty (valid values being "TODO" and "SKIP"), it will be
+# reported too, with the REASON (if given) appended.
result_ ()
{
- incr_tap_count_
+ set +x # Don't pollute the log files.
+ test $# -gt 0 || bailout_ "result_: missing argument"
tap_result_=$1; shift
- echo "$tap_result_" $tap_count_ ${1+"- $*"}
-}
-
-# tap_with_directive_ RESULT DIRECTIVE [-r REASON] [DESCRIPTION...]
-# -----------------------------------------------------------------
-# Write a tap result with the given directive (can be "TODO" or "SKIP").
-# The REASON, if given is appended after the directive. This function is
-# for internal use only.
-result_with_directive_ ()
-{
+ case $tap_result_ in
+ "ok"|"not ok") ;;
+ *) bailout_ "result_: invalid result '$tap_result'" ;;
+ esac
+ tap_directive_= tap_reason_=
+ while test $# -gt 0; do
+ case $1 in
+ -D|--directive) tap_directive_=$2; shift;;
+ -r|--reason) tap_reason_=$2; shift;;
+ --) shift; break;;
+ -*) bailout_ "result_: invalid option '$1'";;
+ *) break;;
+ esac
+ shift
+ done
+ case $tap_directive_ in
+ ""|TODO|SKIP) ;;
+ *) bailout_ "result_: invalid directive '$directive_'" ;;
+ esac
incr_tap_count_
- tap_result_=$1; shift
- tap_directive_=$1; shift
- case $1 in -r) tap_reason_=" $2" shift 2;; *) tap_reason_="";; esac
- echo "$tap_result_" $tap_count_ ${1+"- $*"} \
- "# ${tap_directive_}${tap_reason_}"
+ tap_text_="$tap_result_ $tap_count_"
+ if test x"$*" != x; then
+ tap_text_="$tap_text_ - $*"
+ fi
+ if test x"$tap_directive_" != x; then
+ tap_text_="$tap_text_ # $tap_directive_"${tap_reason_:+" $tap_reason_"}
+ fi
+ printf '%s\n' "$tap_text_"
+ set -x # Restore shell xtraces.
}
# ok_ [DESCRIPTION...]
@@ -113,7 +130,7 @@ result_with_directive_ ()
# Report a successful test.
ok_ ()
{
- result_ 'ok' ${1+"$@"}
+ result_ 'ok' -- ${1+"$@"}
}
# not_ok_ [DESCRIPTION...]
@@ -121,20 +138,20 @@ ok_ ()
# Report a failed test.
not_ok_ ()
{
- result_ 'not ok' ${1+"$@"}
+ result_ 'not ok' -- ${1+"$@"}
}
-# skip_ [-r REASON] [DESCRIPTION...]
-# ----------------------------------
+# skip_ [-r REASON] [--] [DESCRIPTION...]
+# ---------------------------------------
# Report a skipped test. If the `-r' option is present, its argument is
# give as the reason of the skip.
skip_ ()
{
- result_with_directive_ 'ok' SKIP ${1+"$@"}
+ result_ 'ok' -D SKIP ${1+"$@"}
}
-# skip_row_ COUNT [-r REASON] [DESCRIPTION...]
-# --------------------------------------------
+# skip_row_ COUNT [-r REASON] [--] [DESCRIPTION...]
+# -------------------------------------------------
# Report a COUNT of skipped test, with the given reason and descriptions
# (if any). Useful to avoid cascade failures in case a fair number of
# tests depend on an earlier one that failed.
@@ -150,7 +167,7 @@ skip_row_ ()
# argument is give as the reason why the failure is expected.
xfail_ ()
{
- result_with_directive_ 'not ok' TODO ${1+"$@"}
+ result_ 'not ok' -D TODO ${1+"$@"}
}
# xpass_ [-r REASON] [DESCRIPTION...]
@@ -159,7 +176,7 @@ xfail_ ()
# argument is give as the reason why the failure is expected.
xpass_ ()
{
- result_with_directive_ 'ok' TODO ${1+"$@"}
+ result_ 'ok' -D TODO ${1+"$@"}
}
# skip_all_ [REASON ...]
@@ -231,7 +248,6 @@ command_not_ok_ ()
fi
}
-
# reset_test_count_ COUNT
# -----------------------
# Reset the count of the TAP test results seen so far to COUNT.
--
1.7.2.3
- [FYI 1/7] {tap-test-protocols} testsuite: run TAP and "plain" tests with the same $(LOG_COMPILER), Stefano Lattarini, 2011/08/07
- [FYI 2/7] {tap-test-protocols} testsuite: run autogenerated tests with $(LOG_COMPILER) too, Stefano Lattarini, 2011/08/07
- [FYI 3/7] {tap-test-protocols} testsuite: TAP tests can have early plan now, Stefano Lattarini, 2011/08/07
- [FYI 4/7] {tap-test-protocols} testsuite: update "user interface" description in tests/README, Stefano Lattarini, 2011/08/07
- [FYI 5/7] {tap-test-protocols} testsuite: improve and refactor our custom TAP shell library,
Stefano Lattarini <=
- [FYI 6/7] {tap-test-protocols} testsuite: TAP tests properly decide when to remove tempdirs, Stefano Lattarini, 2011/08/07
- [FYI 7/7] {tap-test-protocols} test defs: get name of TAP-using tests correctly, Stefano Lattarini, 2011/08/07