svn commit: r260037 - in stable/10: etc/mtree share share/examples share/examples/tests share/examples/tests/tests/plain share/mk share/tests

Julio Merino jmmv at FreeBSD.org
Sun Dec 29 12:30:07 UTC 2013


Author: jmmv
Date: Sun Dec 29 12:30:06 2013
New Revision: 260037
URL: http://svnweb.freebsd.org/changeset/base/260037

Log:
  Add sample test programs.
  
  This is a MFC of the following into stable/10:
  - r258299 Add some sample test programs.
  - r258552 Generate plain sh test programs from a source file.
  
  As usual, "make tinderbox" clean on ref10-amd64.

Added:
  stable/10/share/examples/tests/
     - copied from r258299, head/share/examples/tests/
  stable/10/share/examples/tests/tests/plain/cp_test.sh
     - copied unchanged from r258552, head/share/examples/tests/tests/plain/cp_test.sh
  stable/10/share/tests/
     - copied from r258299, head/share/tests/
Deleted:
  stable/10/share/examples/tests/tests/plain/cp_test
Modified:
  stable/10/etc/mtree/BSD.tests.dist
  stable/10/share/Makefile
  stable/10/share/examples/Makefile
  stable/10/share/mk/plain.test.mk
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/etc/mtree/BSD.tests.dist
==============================================================================
--- stable/10/etc/mtree/BSD.tests.dist	Sun Dec 29 11:19:09 2013	(r260036)
+++ stable/10/etc/mtree/BSD.tests.dist	Sun Dec 29 12:30:06 2013	(r260037)
@@ -38,6 +38,16 @@
                 ..
             ..
         ..
+        share
+            examples
+                tests
+                    atf
+                    ..
+                    plain
+                    ..
+                ..
+            ..
+        ..
         usr.bin
             atf
                 atf-sh

Modified: stable/10/share/Makefile
==============================================================================
--- stable/10/share/Makefile	Sun Dec 29 11:19:09 2013	(r260036)
+++ stable/10/share/Makefile	Sun Dec 29 12:30:06 2013	(r260037)
@@ -26,6 +26,7 @@ SUBDIR=	${_colldef} \
 	${_syscons} \
 	tabset \
 	termcap \
+	${_tests} \
 	${_timedef} \
 	${_zoneinfo}
 
@@ -80,6 +81,10 @@ _doc=		doc
 _syscons=	syscons
 .endif
 
+.if ${MK_TESTS} != "no"
+_tests=		tests
+.endif
+
 .if ${MK_ZONEINFO} != "no"
 _zoneinfo=	zoneinfo
 .endif

Modified: stable/10/share/examples/Makefile
==============================================================================
--- stable/10/share/examples/Makefile	Sun Dec 29 11:19:09 2013	(r260036)
+++ stable/10/share/examples/Makefile	Sun Dec 29 12:30:06 2013	(r260037)
@@ -249,4 +249,8 @@ SUBDIR+=pf
 .endif
 .endif
 
+.if ${MK_TESTS} != "no"
+SUBDIR+=tests
+.endif
+
 .include <bsd.subdir.mk>

Copied: stable/10/share/examples/tests/tests/plain/cp_test.sh (from r258552, head/share/examples/tests/tests/plain/cp_test.sh)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/10/share/examples/tests/tests/plain/cp_test.sh	Sun Dec 29 12:30:06 2013	(r260037, copy of r258552, head/share/examples/tests/tests/plain/cp_test.sh)
@@ -0,0 +1,84 @@
+# $FreeBSD$
+#
+# Copyright 2013 Google Inc.
+# 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.
+# * Neither the name of Google Inc. nor the names of its contributors
+#   may be used to endorse or promote products derived from this software
+#   without specific prior written permission.
+#
+# 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.
+
+#
+# INTRODUCTION
+#
+# This plain test program mimics the structure and contents of its
+# ATF-based counterpart.  It attempts to represent various test cases
+# in different separate functions and just calls them all from main.
+#
+# In reality, plain test programs can be much simpler.  All they have
+# to do is return 0 on success and non-0 otherwise.
+#
+
+set -e
+
+# Prints an error message and exits.
+err() {
+	echo "${@}" 1>&2
+	exit 1
+}
+
+# Auxiliary function to compare two files for equality.
+verify_copy() {
+	if ! cmp -s "${1}" "${2}"; then
+		diff -u "${1}" "${2}"
+		err "${1} and ${2} differ, but they should be equal"
+	fi
+}
+
+simple_test() {
+	echo 'File 1' >file1
+	cp file1 file2 || err "cp failed"
+	verify_copy file1 file2
+}
+
+force_test() {
+	echo 'File 1' >file1
+	echo 'File 2' >file2
+	chmod 400 file2
+	cp -f file1 file2 || err "cp failed"
+	verify_copy file1 file2
+}
+
+# If you have read the cp_test.sh counterpart in the atf/ directory, you
+# may think that the sequencing of tests below and the exposed behavior
+# to the user is very similar.  But you'd be wrong.
+#
+# There are two major differences with this and the ATF version.  The
+# first is that the code below has no provisions to detect failures in
+# one test and continue running the other tests: the first failure
+# causes the whole test program to exit.  The second is that this
+# particular "main" has no arguments: without ATF, all test programs may
+# expose a different command-line interface, and this is an issue for
+# consistency purposes.
+simple_test
+force_test

Modified: stable/10/share/mk/plain.test.mk
==============================================================================
--- stable/10/share/mk/plain.test.mk	Sun Dec 29 11:19:09 2013	(r260036)
+++ stable/10/share/mk/plain.test.mk	Sun Dec 29 12:30:06 2013	(r260037)
@@ -46,6 +46,16 @@ _TESTS+= ${PLAIN_TESTS_SH}
 .for _T in ${PLAIN_TESTS_SH}
 SCRIPTSDIR_${_T}= ${TESTSDIR}
 TEST_INTERFACE.${_T}= plain
+CLEANFILES+= ${_T} ${_T}.tmp
+# TODO(jmmv): It seems to me that this SED and SRC functionality should
+# exist in bsd.prog.mk along the support for SCRIPTS.  Move it there if
+# this proves to be useful within the tests.
+PLAIN_TESTS_SH_SED_${_T}?= # empty
+PLAIN_TESTS_SH_SRC_${_T}?= ${_T}.sh
+${_T}: ${PLAIN_TESTS_SH_SRC_${_T}}
+	cat ${.ALLSRC} | sed ${PLAIN_TESTS_SH_SED_${_T}} >${.TARGET}.tmp
+	chmod +x ${.TARGET}.tmp
+	mv ${.TARGET}.tmp ${.TARGET}
 .endfor
 .endif
 


More information about the svn-src-all mailing list