summaryrefslogtreecommitdiff
path: root/pkgtools
diff options
context:
space:
mode:
authorrillig <rillig>2016-06-11 09:37:16 +0000
committerrillig <rillig>2016-06-11 09:37:16 +0000
commitc832775e57a0c42e99b2f29bf3bf8ec2d69fdb09 (patch)
treeb4b673f4f69336437bc27084082dccec30d30107 /pkgtools
parent549698f108d05a32993b3fa8482e2f1635ce2681 (diff)
downloadpkgsrc-c832775e57a0c42e99b2f29bf3bf8ec2d69fdb09.tar.gz
Updated pkg_regress to 0.3.
Changes since 0.2: * provide usage message when called with invalid options * moved do_test_default() from public API section in the source * renamed private variables to not be in uppercase * indented consistently * replaced unnecessary ${VAR} with simple $VAR * moved actual test execution into its own function * when invoked with the -v option, announce which test will be run
Diffstat (limited to 'pkgtools')
-rw-r--r--pkgtools/pkg_regress/Makefile4
-rwxr-xr-xpkgtools/pkg_regress/files/pkg_regress.sh151
2 files changed, 72 insertions, 83 deletions
diff --git a/pkgtools/pkg_regress/Makefile b/pkgtools/pkg_regress/Makefile
index e083e211630..08f321aeb35 100644
--- a/pkgtools/pkg_regress/Makefile
+++ b/pkgtools/pkg_regress/Makefile
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.13 2014/10/09 14:06:50 wiz Exp $
+# $NetBSD: Makefile,v 1.14 2016/06/11 09:37:16 rillig Exp $
-PKGNAME= pkg_regress-0.2
+PKGNAME= pkg_regress-0.3
CATEGORIES= pkgtools
MAINTAINER= pkgsrc-users@NetBSD.org
diff --git a/pkgtools/pkg_regress/files/pkg_regress.sh b/pkgtools/pkg_regress/files/pkg_regress.sh
index 4af6c0c7d87..cde08558140 100755
--- a/pkgtools/pkg_regress/files/pkg_regress.sh
+++ b/pkgtools/pkg_regress/files/pkg_regress.sh
@@ -1,6 +1,6 @@
#! @SH@
#
-# $NetBSD: pkg_regress.sh,v 1.4 2006/07/10 12:44:19 rillig Exp $
+# $NetBSD: pkg_regress.sh,v 1.5 2016/06/11 09:37:16 rillig Exp $
#
set -e
@@ -10,43 +10,34 @@ set -e
# hooks overridable by test spec file
-do_setup()
-{
+do_setup() {
return
}
-do_cleanup()
-{
+do_cleanup() {
return
}
-do_test()
-{
+do_test() {
do_test_default
}
-do_test_default()
-{
- # Run the test. We use an if statement to ensure that the script
- # isn't terminated if it is executed with sh -e.
- if ${TEST_MAKE} ${MAKEARGS_TEST} >${TEST_OUTFILE} 2>&1
- then
- TEST_EXITSTATUS=$?
- else
- TEST_EXITSTATUS=$?
- fi
-}
-
-check_result()
-{
+check_result() {
return
}
-#
-# Internal helper routines
-#
+# Internal helper functions
-# regress_fail <msg>
+do_test_default() {
+ # The if is necessary to prevent sh -e from exiting.
+ if $TEST_MAKE $MAKEARGS_TEST >$TEST_OUTFILE 2>&1; then
+ TEST_EXITSTATUS=$?
+ else
+ TEST_EXITSTATUS=$?
+ fi
+}
+
+# usage: regress_fail msg...
regress_fail() {
echo "ERROR: $*" 1>&2
@@ -55,40 +46,34 @@ regress_fail() {
# result checking routines
-# Test exit status
-exit_status()
-{
+# Text exit status
+exit_status() {
- [ "$1" -eq "${TEST_EXITSTATUS}" ] \
- || regress_fail "Expected exit code $1, but got ${TEST_EXITSTATUS}."
+ [ "$1" -eq "$TEST_EXITSTATUS" ] \
+ || regress_fail "Expected exit code $1, but got $TEST_EXITSTATUS."
}
# Test positive match against output
-output_require()
-{
+output_require() {
for re in "$@"; do
- ${TEST_EGREP} "${re}" < ${TEST_OUTFILE} >/dev/null \
- || regress_fail "Expected \"${re}\" in the output, but it is not there."
+ $TEST_EGREP "$re" < $TEST_OUTFILE >/dev/null \
+ || regress_fail "Expected \"$re\" in the output, but it is not there."
done
}
# Test negative match against output
-output_prohibit()
-{
+output_prohibit() {
for re in "$@"; do
- if ${TEST_EGREP} "${re}" < ${TEST_OUTFILE} >/dev/null; then
- regress_fail "Didn't expect \"${re}\" in the output, but found it."
+ if $TEST_EGREP "$re" < $TEST_OUTFILE >/dev/null; then
+ regress_fail "Didn't expect \"$re\" in the output, but found it."
fi
done
}
-# runtest runs a test in a subshell, so that environment settings etc in
-# one test do not interfere with other tests.
-runtest() {
- if (
- cd $1
+do_runtest() {
+ cd "$1"
TEST_RESULT=0
TEST_EXITSTATUS=0
TEST_OUTFILE=`mktemp -t pkg_regress` || exit 1
@@ -104,59 +89,63 @@ runtest() {
do_cleanup
- if [ -n "${MAKEARGS_CLEAN}" ]
- then
- ${TEST_MAKE} ${MAKEARGS_CLEAN} >>${TEST_OUTFILE}
+ if [ -n "$MAKEARGS_CLEAN" ]; then
+ $TEST_MAKE $MAKEARGS_CLEAN >>$TEST_OUTFILE
fi
- if [ -n "${TEST_VERBOSE}" ]
- then
- cat ${TEST_OUTFILE}
+ if [ "$verbose" = "yes" ]; then
+ cat $TEST_OUTFILE
fi
- rm -f ${TEST_OUTFILE}
- exit ${TEST_RESULT}
- )
- then
- TEST_PASS=`expr ${TEST_PASS} + 1`
- else
- TEST_FAIL=`expr ${TEST_FAIL} + 1`
- TEST_FAILURES="${TEST_FAILURES} $1"
- fi
+ rm -f $TEST_OUTFILE
+ exit $TEST_RESULT
}
+# runtest runs a test in a subshell, so that environment settings etc in
+# one test do not interfere with other tests.
+runtest() {
+ if [ "$verbose" = "yes" ]; then
+ echo "Running $1"
+ fi
-TEST_PASS=0
-TEST_FAIL=0
-TEST_FAILURES=
+ if (do_runtest "$1"); then
+ passed=`expr $passed + 1`
+ else
+ failed=`expr $failed + 1`
+ failed_names="$failed_names $1"
+ fi
+}
+
+verbose=no
+passed=0
+failed=0
+failed_names=""
cd $PKGSRCDIR/regress
-case $1 in
- -v) TEST_VERBOSE=1
- shift ;;
-esac
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -v) shift; verbose=yes;;
+ --) shift; break;;
+ -*) echo "usage: $0 [-v] [directory...]" 1>&2; exit 1 ;;
+ *) break
+ esac
+done
-if [ $# -ne 0 ]
-then
- TEST_LIST="$@"
-else
- TEST_LIST="*"
+if [ $# -eq 0 ]; then
+ set -- *
fi
-for dir in ${TEST_LIST}
-do
- if [ -f $dir/spec ]
- then
- runtest $dir
- fi
+for dir in "$@"; do
+ if [ -f $dir/spec ]; then
+ runtest $dir
+ fi
done
-if [ -n "${TEST_FAILURES}" ]
-then
- echo "Tests failed: ${TEST_FAILURES}"
- echo
+if [ -n "$failed_names" ]; then
+ echo "Tests failed:$failed_names"
+ echo
fi
echo "Statistics:"
-echo " $TEST_PASS passed, $TEST_FAIL failed"
+echo " $passed passed, $failed failed"