svn commit: r269902 - in head: bin/sh/tests bin/sh/tests/builtins bin/sh/tests/errors bin/sh/tests/execution bin/sh/tests/expansion bin/sh/tests/parameters bin/sh/tests/parser bin/sh/tests/set-e to...

Garrett Cooper ngie at FreeBSD.org
Wed Aug 13 04:14:54 UTC 2014


Author: ngie
Date: Wed Aug 13 04:14:50 2014
New Revision: 269902
URL: http://svnweb.freebsd.org/changeset/base/269902

Log:
  Convert bin/sh/tests to ATF
  
  The new code uses a "test discovery mechanism" to determine
  what tests are available for execution
  
  The test shell can be specified via:
  
    kyua test -v test_suites.FreeBSD.bin.sh.test_shell=/path/to/test/sh
  
  Sponsored by: EMC / Isilon Storage Division
  Approved by: jmmv (mentor)
  Reviewed by: jilles (maintainer)

Added:
  head/bin/sh/tests/functional_test.sh   (contents, props changed)
Deleted:
  head/bin/sh/tests/legacy_test.sh
Modified:
  head/bin/sh/tests/Makefile
  head/bin/sh/tests/builtins/Makefile
  head/bin/sh/tests/errors/Makefile
  head/bin/sh/tests/errors/bad-parm-exp2.2.stderr
  head/bin/sh/tests/errors/bad-parm-exp3.2.stderr
  head/bin/sh/tests/errors/bad-parm-exp4.2.stderr
  head/bin/sh/tests/errors/bad-parm-exp5.2.stderr
  head/bin/sh/tests/errors/bad-parm-exp6.2.stderr
  head/bin/sh/tests/execution/Makefile
  head/bin/sh/tests/expansion/Makefile
  head/bin/sh/tests/parameters/Makefile
  head/bin/sh/tests/parser/Makefile
  head/bin/sh/tests/set-e/Makefile
  head/tools/build/mk/OptionalObsoleteFiles.inc

Modified: head/bin/sh/tests/Makefile
==============================================================================
--- head/bin/sh/tests/Makefile	Wed Aug 13 03:44:30 2014	(r269901)
+++ head/bin/sh/tests/Makefile	Wed Aug 13 04:14:50 2014	(r269902)
@@ -4,15 +4,12 @@
 
 TESTSDIR=	${TESTSBASE}/bin/sh
 
-TAP_TESTS_SH=	legacy_test
-TAP_TESTS_SH_SED_legacy_test=	-e 's,__SH__,/bin/sh,g'
-# Some tests in here are silently not run when the tests are executed as
-# root.  Explicitly tell Kyua to drop privileges.
-#
-# TODO(jmmv): Kyua needs to do this by default, not only when explicitly
-# requested.  See https://code.google.com/p/kyua/issues/detail?id=6
-TEST_METADATA.legacy_test+= required_user="unprivileged"
-
-SUBDIR+=	builtins errors execution expansion parameters parser set-e
+TESTS_SUBDIRS+=	builtins
+TESTS_SUBDIRS+=	errors
+TESTS_SUBDIRS+=	execution
+TESTS_SUBDIRS+=	expansion
+TESTS_SUBDIRS+=	parameters
+TESTS_SUBDIRS+=	parser
+TESTS_SUBDIRS+=	set-e
 
 .include <bsd.test.mk>

Modified: head/bin/sh/tests/builtins/Makefile
==============================================================================
--- head/bin/sh/tests/builtins/Makefile	Wed Aug 13 03:44:30 2014	(r269901)
+++ head/bin/sh/tests/builtins/Makefile	Wed Aug 13 04:14:50 2014	(r269902)
@@ -1,9 +1,13 @@
 # $FreeBSD$
 
-.include <bsd.own.mk>
+.include <src.opts.mk>
 
-FILESDIR=	${TESTSBASE}/bin/sh/builtins
-KYUAFILE=	no
+TESTSDIR=	${TESTSBASE}/bin/sh/${.CURDIR:T}
+
+.PATH: ${.CURDIR:H}
+ATF_TESTS_SH=	functional_test
+
+FILESDIR=	${TESTSDIR}
 
 FILES=		alias.0 alias.0.stdout
 FILES+=		alias.1 alias.1.stderr

Modified: head/bin/sh/tests/errors/Makefile
==============================================================================
--- head/bin/sh/tests/errors/Makefile	Wed Aug 13 03:44:30 2014	(r269901)
+++ head/bin/sh/tests/errors/Makefile	Wed Aug 13 04:14:50 2014	(r269902)
@@ -1,9 +1,11 @@
 # $FreeBSD$
 
-.include <bsd.own.mk>
+TESTSDIR=	${TESTSBASE}/bin/sh/${.CURDIR:T}
 
-FILESDIR=	${TESTSBASE}/bin/sh/errors
-KYUAFILE=	no
+.PATH: ${.CURDIR:H}
+ATF_TESTS_SH=	functional_test
+
+FILESDIR=	${TESTSDIR}
 
 FILES=		assignment-error1.0
 FILES+=		assignment-error2.0

Modified: head/bin/sh/tests/errors/bad-parm-exp2.2.stderr
==============================================================================
--- head/bin/sh/tests/errors/bad-parm-exp2.2.stderr	Wed Aug 13 03:44:30 2014	(r269901)
+++ head/bin/sh/tests/errors/bad-parm-exp2.2.stderr	Wed Aug 13 04:14:50 2014	(r269902)
@@ -1 +1 @@
-./errors/bad-parm-exp2.2: ${}: Bad substitution
+./bad-parm-exp2.2: ${}: Bad substitution

Modified: head/bin/sh/tests/errors/bad-parm-exp3.2.stderr
==============================================================================
--- head/bin/sh/tests/errors/bad-parm-exp3.2.stderr	Wed Aug 13 03:44:30 2014	(r269901)
+++ head/bin/sh/tests/errors/bad-parm-exp3.2.stderr	Wed Aug 13 04:14:50 2014	(r269902)
@@ -1 +1 @@
-./errors/bad-parm-exp3.2: ${foo/}: Bad substitution
+./bad-parm-exp3.2: ${foo/}: Bad substitution

Modified: head/bin/sh/tests/errors/bad-parm-exp4.2.stderr
==============================================================================
--- head/bin/sh/tests/errors/bad-parm-exp4.2.stderr	Wed Aug 13 03:44:30 2014	(r269901)
+++ head/bin/sh/tests/errors/bad-parm-exp4.2.stderr	Wed Aug 13 04:14:50 2014	(r269902)
@@ -1 +1 @@
-./errors/bad-parm-exp4.2: ${foo:@...}: Bad substitution
+./bad-parm-exp4.2: ${foo:@...}: Bad substitution

Modified: head/bin/sh/tests/errors/bad-parm-exp5.2.stderr
==============================================================================
--- head/bin/sh/tests/errors/bad-parm-exp5.2.stderr	Wed Aug 13 03:44:30 2014	(r269901)
+++ head/bin/sh/tests/errors/bad-parm-exp5.2.stderr	Wed Aug 13 04:14:50 2014	(r269902)
@@ -1 +1 @@
-./errors/bad-parm-exp5.2: ${/}: Bad substitution
+./bad-parm-exp5.2: ${/}: Bad substitution

Modified: head/bin/sh/tests/errors/bad-parm-exp6.2.stderr
==============================================================================
--- head/bin/sh/tests/errors/bad-parm-exp6.2.stderr	Wed Aug 13 03:44:30 2014	(r269901)
+++ head/bin/sh/tests/errors/bad-parm-exp6.2.stderr	Wed Aug 13 04:14:50 2014	(r269902)
@@ -1 +1 @@
-./errors/bad-parm-exp6.2: ${foo...}: Bad substitution
+./bad-parm-exp6.2: ${foo...}: Bad substitution

Modified: head/bin/sh/tests/execution/Makefile
==============================================================================
--- head/bin/sh/tests/execution/Makefile	Wed Aug 13 03:44:30 2014	(r269901)
+++ head/bin/sh/tests/execution/Makefile	Wed Aug 13 04:14:50 2014	(r269902)
@@ -1,9 +1,11 @@
 # $FreeBSD$
 
-.include <bsd.own.mk>
+TESTSDIR=	${TESTSBASE}/bin/sh/${.CURDIR:T}
 
-FILESDIR=	${TESTSBASE}/bin/sh/execution
-KYUAFILE=	no
+.PATH: ${.CURDIR:H}
+ATF_TESTS_SH=	functional_test
+
+FILESDIR=	${TESTSDIR}
 
 FILES=		bg1.0
 FILES+=		bg2.0

Modified: head/bin/sh/tests/expansion/Makefile
==============================================================================
--- head/bin/sh/tests/expansion/Makefile	Wed Aug 13 03:44:30 2014	(r269901)
+++ head/bin/sh/tests/expansion/Makefile	Wed Aug 13 04:14:50 2014	(r269902)
@@ -1,9 +1,11 @@
 # $FreeBSD$
 
-.include <bsd.own.mk>
+TESTSDIR=	${TESTSBASE}/bin/sh/${.CURDIR:T}
 
-FILESDIR=	${TESTSBASE}/bin/sh/expansion
-KYUAFILE=	no
+.PATH: ${.CURDIR:H}
+ATF_TESTS_SH=	functional_test
+
+FILESDIR=	${TESTSDIR}
 
 FILES=		arith1.0
 FILES+=		arith2.0

Added: head/bin/sh/tests/functional_test.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/bin/sh/tests/functional_test.sh	Wed Aug 13 04:14:50 2014	(r269902)
@@ -0,0 +1,78 @@
+#
+# Copyright 2014 EMC Corp.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+
+SRCDIR=$(atf_get_srcdir)
+
+check()
+{
+	local tc=${1}; shift
+
+	export SH=$(atf_config_get bin.sh.test_shell /bin/sh)
+
+	local err_file="${SRCDIR}/${tc}.stderr"
+	[ -f "${err_file}" ] && err_flag="-e file:${err_file}"
+	local out_file="${SRCDIR}/${tc}.stdout"
+	[ -f "${out_file}" ] && out_flag="-o file:${out_file}"
+
+	# We need to copy the testcase scenario file because some of the
+	# testcases hardcode relative paths in the stderr/stdout.
+	#
+	# TODO: we might be able to generate this path at build time
+	cp ${SRCDIR}/${tc} .
+
+	atf_check -s exit:${tc##*.} ${err_flag} ${out_flag} ${SH} "./${tc}"
+}
+
+add_testcase()
+{
+	local tc=${1}
+	local tc_escaped word
+
+	case "${tc%.*}" in
+	*-*)
+		local IFS="-"
+		for word in ${tc%.*}; do
+			tc_escaped="${tc_escaped:+${tc_escaped}_}${word}"
+		done
+		;;
+	*)
+		tc_escaped=${tc%.*}
+		;;
+	esac
+
+	atf_test_case ${tc_escaped}
+	eval "${tc_escaped}_body() { check ${tc}; }"
+	atf_add_test_case ${tc_escaped}
+}
+
+atf_init_test_cases()
+{
+	for path in $(find -Es "${SRCDIR}" -regex '.*\.[0-9]+$'); do
+		add_testcase ${path##*/}
+	done
+}

Modified: head/bin/sh/tests/parameters/Makefile
==============================================================================
--- head/bin/sh/tests/parameters/Makefile	Wed Aug 13 03:44:30 2014	(r269901)
+++ head/bin/sh/tests/parameters/Makefile	Wed Aug 13 04:14:50 2014	(r269902)
@@ -1,9 +1,11 @@
 # $FreeBSD$
 
-.include <bsd.own.mk>
+TESTSDIR=	${TESTSBASE}/bin/sh/${.CURDIR:T}
 
-FILESDIR=	${TESTSBASE}/bin/sh/parameters
-KYUAFILE=	no
+.PATH: ${.CURDIR:H}
+ATF_TESTS_SH=	functional_test
+
+FILESDIR=	${TESTSDIR}
 
 FILES=		env1.0
 FILES+=		exitstatus1.0

Modified: head/bin/sh/tests/parser/Makefile
==============================================================================
--- head/bin/sh/tests/parser/Makefile	Wed Aug 13 03:44:30 2014	(r269901)
+++ head/bin/sh/tests/parser/Makefile	Wed Aug 13 04:14:50 2014	(r269902)
@@ -1,9 +1,11 @@
 # $FreeBSD$
 
-.include <bsd.own.mk>
+TESTSDIR=	${TESTSBASE}/bin/sh/${.CURDIR:T}
 
-FILESDIR=	${TESTSBASE}/bin/sh/parser
-KYUAFILE=	no
+.PATH: ${.CURDIR:H}
+ATF_TESTS_SH=	functional_test
+
+FILESDIR=	${TESTSDIR}
 
 FILES=		alias1.0
 FILES+=		alias2.0

Modified: head/bin/sh/tests/set-e/Makefile
==============================================================================
--- head/bin/sh/tests/set-e/Makefile	Wed Aug 13 03:44:30 2014	(r269901)
+++ head/bin/sh/tests/set-e/Makefile	Wed Aug 13 04:14:50 2014	(r269902)
@@ -1,9 +1,11 @@
 # $FreeBSD$
 
-.include <bsd.own.mk>
+TESTSDIR=	${TESTSBASE}/bin/sh/${.CURDIR:T}
 
-FILESDIR=	${TESTSBASE}/bin/sh/set-e
-KYUAFILE=	no
+.PATH: ${.CURDIR:H}
+ATF_TESTS_SH=	functional_test
+
+FILESDIR=	${TESTSDIR}
 
 FILES=		and1.0
 FILES+=		and2.1

Modified: head/tools/build/mk/OptionalObsoleteFiles.inc
==============================================================================
--- head/tools/build/mk/OptionalObsoleteFiles.inc	Wed Aug 13 03:44:30 2014	(r269901)
+++ head/tools/build/mk/OptionalObsoleteFiles.inc	Wed Aug 13 04:14:50 2014	(r269902)
@@ -4168,6 +4168,7 @@ OLD_FILES+=usr/share/aclocal/atf-common.
 OLD_FILES+=usr/share/aclocal/atf-sh.m4
 OLD_DIRS+=usr/share/aclocal
 OLD_FILES+=usr/tests/bin/chown/units_basics
+OLD_FILES+=usr/tests/bin/sh/legacy_test
 OLD_FILES+=usr/tests/usr.bin/atf/Kyuafile
 OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/Kyuafile
 OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/atf_check_test


More information about the svn-src-head mailing list