Module Name:    src
Committed By:   apb
Date:           Tue Apr  7 13:52:08 UTC 2009

Modified Files:
        src/distrib/sets/lists/tests: mi
        src/tests/util: Makefile
Added Files:
        src/tests/util/mtree: Atffile Makefile d_create.out t_mtree.sh

Log Message:
Add tests for mtree.


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.5 -r1.6 src/tests/util/Makefile
cvs rdiff -u -r0 -r1.1 src/tests/util/mtree/Atffile \
    src/tests/util/mtree/Makefile src/tests/util/mtree/d_create.out \
    src/tests/util/mtree/t_mtree.sh

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.35 src/distrib/sets/lists/tests/mi:1.36
--- src/distrib/sets/lists/tests/mi:1.35	Sat Feb 28 13:32:51 2009
+++ src/distrib/sets/lists/tests/mi	Tue Apr  7 13:52:08 2009
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.35 2009/02/28 13:32:51 njoly Exp $
+# $NetBSD: mi,v 1.36 2009/04/07 13:52:08 apb Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -984,6 +984,10 @@
 ./usr/tests/util/make/d_varcmd.mk		tests-util-tests
 ./usr/tests/util/make/d_varcmd.out		tests-util-tests
 ./usr/tests/util/make/t_make			tests-util-tests
+./usr/tests/util/mtree				tests-util-tests
+./usr/tests/util/mtree/Atffile			tests-util-tests
+./usr/tests/util/mtree/d_create.out		tests-util-tests
+./usr/tests/util/mtree/t_mtree			tests-util-tests
 ./usr/tests/util/ps				tests-util-tests
 ./usr/tests/util/ps/Atffile			tests-util-tests
 ./usr/tests/util/ps/keywords			tests-util-tests

Index: src/tests/util/Makefile
diff -u src/tests/util/Makefile:1.5 src/tests/util/Makefile:1.6
--- src/tests/util/Makefile:1.5	Fri Feb 13 05:19:51 2009
+++ src/tests/util/Makefile	Tue Apr  7 13:52:07 2009
@@ -1,10 +1,10 @@
-# $NetBSD: Makefile,v 1.5 2009/02/13 05:19:51 jmmv Exp $
+# $NetBSD: Makefile,v 1.6 2009/04/07 13:52:07 apb Exp $
 
 .include <bsd.own.mk>
 
 TESTSDIR=	${TESTSBASE}/util
 
-SUBDIR=		awk bzip2 config cut df grep id m4 make ps sdiff sh
+SUBDIR=		awk bzip2 config cut df grep id m4 make mtree ps sdiff sh
 
 TESTS_SH=	t_basename
 TESTS_SH+=	t_cp

Added files:

Index: src/tests/util/mtree/Atffile
diff -u /dev/null src/tests/util/mtree/Atffile:1.1
--- /dev/null	Tue Apr  7 13:52:08 2009
+++ src/tests/util/mtree/Atffile	Tue Apr  7 13:52:08 2009
@@ -0,0 +1,6 @@
+Content-Type: application/X-atf-atffile; version="1"
+X-NetBSD-Id: "$NetBSD: Atffile,v 1.1 2009/04/07 13:52:08 apb Exp $"
+
+prop: test-suite = "NetBSD"
+
+tp: t_mtree
Index: src/tests/util/mtree/Makefile
diff -u /dev/null src/tests/util/mtree/Makefile:1.1
--- /dev/null	Tue Apr  7 13:52:08 2009
+++ src/tests/util/mtree/Makefile	Tue Apr  7 13:52:08 2009
@@ -0,0 +1,14 @@
+# $NetBSD: Makefile,v 1.1 2009/04/07 13:52:08 apb Exp $
+
+NOMAN=		# defined
+
+.include <bsd.own.mk>
+
+TESTSDIR=	${TESTSBASE}/util/mtree
+
+TESTS_SH=	t_mtree
+
+FILESDIR=	${TESTSDIR}
+FILES=		d_create.out
+
+.include <bsd.test.mk>
Index: src/tests/util/mtree/d_create.out
diff -u /dev/null src/tests/util/mtree/d_create.out:1.1
--- /dev/null	Tue Apr  7 13:52:08 2009
+++ src/tests/util/mtree/d_create.out	Tue Apr  7 13:52:08 2009
@@ -0,0 +1,55 @@
+#	   user: x
+#	machine: x
+#	   tree: x
+#	   date: x
+
+# .
+/set type=file nlink=1
+.               type=dir nlink=4
+    a.symlink.1 type=link
+    top.dangling \
+                type=link
+    top.file.1  size=18 \
+                sha256=74c53aaf0cd9543b7efad969de1058ee38859134ba467500b849811fc3513195
+    top.symlink.b \
+                type=link
+
+# ./a
+a               type=dir nlink=4
+    a.file.1    size=18 \
+                sha256=bdbea62f7ccdf862f22254ea871d523845250010d5f233896e800142a859eef2
+    a.file.2    size=18 \
+                sha256=77876d113fe1b45a41f8d1d3e178aaad7f91fcd93d3df782690625b74ad90fe6
+    a.hardlink.b2 \
+                nlink=2 size=18 \
+                sha256=784fd6b95fe5054d87bf268de51dea043031c5e985f668d4f51e1c759b0f9333
+
+# ./a/1
+1               type=dir nlink=2
+    a1.file.1   size=21 \
+                sha256=a062cd272facdd38c4fdeff2a18947b28c99a28a8fe51f88468978740382e592
+# ./a/1
+..
+
+
+# ./a/2
+2               type=dir nlink=2
+# ./a/2
+..
+
+# ./a
+..
+
+
+# ./b
+b               type=dir nlink=2
+    b.file.1    nlink=2 size=18 \
+                sha256=5754b0d97a8238ea0e495ab871667dcab8f1d684e323290ae76f70c47de18998
+    b.file.2    nlink=2 size=18 \
+                sha256=784fd6b95fe5054d87bf268de51dea043031c5e985f668d4f51e1c759b0f9333
+    b.hardlink.1 \
+                nlink=2 size=18 \
+                sha256=5754b0d97a8238ea0e495ab871667dcab8f1d684e323290ae76f70c47de18998
+# ./b
+..
+
Index: src/tests/util/mtree/t_mtree.sh
diff -u /dev/null src/tests/util/mtree/t_mtree.sh:1.1
--- /dev/null	Tue Apr  7 13:52:08 2009
+++ src/tests/util/mtree/t_mtree.sh	Tue Apr  7 13:52:08 2009
@@ -0,0 +1,106 @@
+# $NetBSD: t_mtree.sh,v 1.1 2009/04/07 13:52:08 apb Exp $
+#
+# Copyright (c) 2009 The NetBSD Foundation, 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:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
+#
+
+# Postprocess mtreee output, canonicalising portions that
+# are expected to differ from one run to another.
+h_postprocess()
+{
+	sed -e '
+		/^#	   user: /s/:.*/: x/
+		/^#	machine: /s/:.*/: x/
+		/^#	   tree: /s/:.*/: x/
+		/^#	   date: /s/:.*/: x/
+		'
+}
+
+h_check()
+{
+        diff -Nru "$1" "$2" || atf_fail "files $1 and $2 differ"
+}
+
+atf_test_case create
+create_head()
+{
+	atf_set "descr" "Create a specfile describing a directory tree"
+}
+create_setup()
+{
+	# create some directories
+	mkdir -p create/a/1 create/a/2 create/b
+	# create some files
+	for file in create/top.file.1 \
+		    create/a/a.file.1 \
+		    create/a/a.file.2 \
+		    create/a/1/a1.file.1 \
+		    create/b/b.file.1 \
+		    create/b/b.file.2
+	do
+		echo "$file" >$file
+	done
+	# hard link to file in same dir
+	ln create/b/b.file.1 create/b/b.hardlink.1
+	# hard link to file in another dir
+	ln create/b/b.file.2 create/a/a.hardlink.b2
+	# symlink to file
+	ln -s a.file.1 create/a.symlink.1
+	# symlink to dir
+	ln -s b create/top.symlink.b
+	# dangling symlink
+	ln -s nonexistent create/top.dangling
+}
+create_body()
+{
+	create_setup
+
+	# run mtree and check output
+	( cd create && mtree -c -k type,nlink,size,sha256 ) >output.raw \
+	|| atf_fail "mtree exit status $?"
+	h_postprocess <output.raw >output
+	h_check "$(atf_get_srcdir)/d_create.out" output
+}
+
+atf_test_case check
+check_head()
+{
+	atf_set "descr" "Check a directory tree against a specfile"
+}
+check_body()
+{
+	# we use the same directory tree and specfile as in the "create" test
+	create_setup
+
+	# run mtree and check output
+	( cd create && mtree ) <"$(atf_get_srcdir)/d_create.out" >output \
+	|| atf_fail "mtree exit status $?"
+	h_check /dev/null output
+}
+
+atf_init_test_cases()
+{
+	atf_add_test_case create
+	atf_add_test_case check
+}

Reply via email to