Index: stable/10/etc/mtree/BSD.tests.dist =================================================================== --- stable/10/etc/mtree/BSD.tests.dist (revision 290585) +++ stable/10/etc/mtree/BSD.tests.dist (revision 290586) @@ -1,416 +1,418 @@ # $FreeBSD$ # # Please see the file src/etc/mtree/README before making changes to this file. # /set type=dir uname=root gname=wheel mode=0755 . bin chown .. date .. dd .. expr .. ls .. mv .. pax .. pkill .. sh builtins .. errors .. execution .. expansion .. parameters .. parser .. set-e .. .. sleep .. test .. .. cddl lib .. sbin .. usr.bin .. usr.sbin .. .. etc rc.d .. .. games .. gnu lib .. usr.bin diff .. .. .. lib atf libatf-c detail .. .. libatf-c++ detail .. .. test-programs .. .. libc c063 .. db .. gen execve .. posix_spawn .. .. hash data .. .. inet .. locale .. net getaddrinfo data .. .. .. regex data .. .. rpc .. ssp .. stdio .. stdlib .. string .. sys .. time .. tls dso .. .. termios .. ttyio .. .. libcrypt .. libmp .. librt .. libthr dlopen .. .. libutil .. msun .. .. libexec atf atf-check .. atf-sh .. .. .. sbin dhclient .. devd .. growfs .. mdconfig .. .. secure lib .. libexec .. usr.bin .. usr.sbin .. .. share examples tests atf .. plain .. .. .. .. sys aio .. fifo .. file .. kern execve .. .. kqueue .. mqueue .. netinet .. pjdfstest chflags .. chmod .. chown .. ftruncate .. granular .. link .. mkdir .. mkfifo .. mknod .. open .. rename .. rmdir .. symlink .. truncate .. unlink .. .. posixshm .. vfs .. vm .. .. usr.bin apply .. basename .. bmake archives fmt_44bsd .. fmt_44bsd_mod .. fmt_oldbsd .. .. basic t0 .. t1 .. t2 .. t3 .. .. execution ellipsis .. empty .. joberr .. plus .. .. shell builtin .. meta .. path .. path_select .. replace .. select .. .. suffixes basic .. src_wild1 .. src_wild2 .. .. syntax directive-t0 .. enl .. funny-targets .. semi .. .. sysmk t0 2 1 .. .. mk .. .. t1 2 1 .. .. mk .. .. t2 2 1 .. .. mk .. .. .. variables modifier_M .. modifier_t .. opt_V .. t0 .. .. .. calendar .. cmp .. col .. comm .. cut .. dirname .. file2c .. grep .. gzip .. join .. jot .. lastcomm .. m4 .. ncal .. opensm .. printf .. sed regress.multitest.out .. .. timeout .. tr .. truncate .. uudecode .. uuencode .. xargs .. yacc yacc .. .. .. usr.sbin etcupdate .. fstyp .. + makefs + .. newsyslog .. nmtree .. pw .. sa .. .. .. # vim: set expandtab ts=4 sw=4: Index: stable/10/usr.sbin/makefs/Makefile =================================================================== --- stable/10/usr.sbin/makefs/Makefile (revision 290585) +++ stable/10/usr.sbin/makefs/Makefile (revision 290586) @@ -1,41 +1,47 @@ # $FreeBSD$ +.include + PROG= makefs CFLAGS+=-I${.CURDIR} SRCS= cd9660.c ffs.c \ makefs.c \ mtree.c \ walk.c MAN= makefs.8 WARNS?= 2 .include "${.CURDIR}/cd9660/Makefile.inc" .include "${.CURDIR}/ffs/Makefile.inc" CFLAGS+=-DHAVE_STRUCT_STAT_ST_FLAGS=1 CFLAGS+=-DHAVE_STRUCT_STAT_ST_GEN=1 .PATH: ${.CURDIR}/../../contrib/mtree CFLAGS+=-I${.CURDIR}/../../contrib/mtree SRCS+= getid.c misc.c spec.c .PATH: ${.CURDIR}/../../contrib/mknod CFLAGS+=-I${.CURDIR}/../../contrib/mknod SRCS+= pack_dev.c .PATH: ${.CURDIR}/../../sys/ufs/ffs SRCS+= ffs_tables.c CFLAGS+= -I${.CURDIR}/../../lib/libnetbsd LIBNETBSDDIR= ${.OBJDIR}/../../lib/libnetbsd LIBNETBSD= ${LIBNETBSDDIR}/libnetbsd.a DPADD+= ${LIBNETBSD} LDADD+= ${LIBNETBSD} DPADD+= ${LIBSBUF} ${LIBUTIL} LDADD+= -lsbuf -lutil + +.if ${MK_TESTS} != "no" +SUBDIR+= tests +.endif .include Index: stable/10/usr.sbin/makefs/tests/Makefile =================================================================== --- stable/10/usr.sbin/makefs/tests/Makefile (nonexistent) +++ stable/10/usr.sbin/makefs/tests/Makefile (revision 290586) @@ -0,0 +1,17 @@ +# $FreeBSD$ + +TESTSDIR= ${TESTSBASE}/usr.sbin/makefs + +ATF_TESTS_SH+= makefs_cd9660_tests +ATF_TESTS_SH+= makefs_ffs_tests + +BINDIR= ${TESTSDIR} + +SCRIPTS+= makefs_tests_common.sh +SCRIPTSNAME_makefs_tests_common.sh= makefs_tests_common.sh + +.for t in ${ATF_TESTS_SH} +TEST_METADATA.$t+= required_user="root" +.endfor + +.include Property changes on: stable/10/usr.sbin/makefs/tests/Makefile ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: stable/10/usr.sbin/makefs/tests/makefs_cd9660_tests.sh =================================================================== --- stable/10/usr.sbin/makefs/tests/makefs_cd9660_tests.sh (nonexistent) +++ stable/10/usr.sbin/makefs/tests/makefs_cd9660_tests.sh (revision 290586) @@ -0,0 +1,288 @@ +# +# Copyright 2015 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$ +# + +# A note on specs: +# - A copy of the ISO-9660 spec can be found here: +# http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-119.pdf +# - Any references to `rockridge` are referring to the `Rock Ridge` extensions +# of the ISO-9660 spec. A copy of the draft `IEEE-P1282` spec can be found +# here: +# http://www.ymi.com/ymi/sites/default/files/pdf/Rockridge.pdf + +MAKEFS="makefs -t cd9660" +MOUNT="mount_cd9660" + +. "$(dirname "$0")/makefs_tests_common.sh" + +common_cleanup() +{ + if ! test_md_device=$(cat $TEST_MD_DEVICE_FILE); then + echo "$TEST_MD_DEVICE_FILE could not be opened; has an md(4) device been attached?" + return + fi + + umount -f /dev/$test_md_device || : + mdconfig -d -u $test_md_device || : +} + +check_base_iso9660_image_contents() +{ + # Symlinks are treated like files when rockridge support isn't + # specified + check_image_contents "$@" -X c + + atf_check -e empty -o empty -s exit:0 test -L $TEST_INPUTS_DIR/c + atf_check -e empty -o empty -s exit:0 test -f $TEST_MOUNT_DIR/c +} + +atf_test_case D_flag cleanup +D_flag_body() +{ + atf_skip "makefs crashes with SIGBUS with dupe mtree entries; see FreeBSD bug # 192839" + + create_test_inputs + + atf_check -e empty -o save:$TEST_SPEC_FILE -s exit:0 \ + mtree -cp $TEST_INPUTS_DIR + atf_check -e empty -o not-empty -s exit:0 \ + $MAKEFS -F $TEST_SPEC_FILE -M 1m $TEST_IMAGE $TEST_INPUTS_DIR + + atf_check -e empty -o empty -s exit:0 \ + cp $TEST_SPEC_FILE spec2.mtree + atf_check -e empty -o save:dupe_$TEST_SPEC_FILE -s exit:0 \ + cat $TEST_SPEC_FILE spec2.mtree + + atf_check -e empty -o not-empty -s not-exit:0 \ + $MAKEFS -F dupe_$TEST_SPEC_FILE -M 1m $TEST_IMAGE $TEST_INPUTS_DIR + atf_check -e empty -o not-empty -s exit:0 \ + $MAKEFS -D -F dupe_$TEST_SPEC_FILE -M 1m $TEST_IMAGE $TEST_INPUTS_DIR +} +D_flag_cleanup() +{ + common_cleanup +} + +atf_test_case F_flag cleanup +F_flag_body() +{ + create_test_inputs + + atf_check -e empty -o save:$TEST_SPEC_FILE -s exit:0 \ + mtree -cp $TEST_INPUTS_DIR + + atf_check -e empty -o empty -s exit:0 \ + $MAKEFS -F $TEST_SPEC_FILE -M 1m $TEST_IMAGE $TEST_INPUTS_DIR + + mount_image + check_base_iso9660_image_contents +} +F_flag_cleanup() +{ + common_cleanup +} + +atf_test_case from_mtree_spec_file cleanup +from_mtree_spec_file_body() +{ + create_test_inputs + + atf_check -e empty -o save:$TEST_SPEC_FILE -s exit:0 \ + mtree -c -k type,link,size -p $TEST_INPUTS_DIR + cd $TEST_INPUTS_DIR + atf_check -e empty -o empty -s exit:0 \ + $MAKEFS $TEST_IMAGE $TEST_SPEC_FILE + cd - + + mount_image + check_base_iso9660_image_contents +} +from_mtree_spec_file_cleanup() +{ + common_cleanup +} + +atf_test_case from_multiple_dirs cleanup +from_multiple_dirs_body() +{ + test_inputs_dir2=$TMPDIR/inputs2 + + create_test_inputs + + atf_check -e empty -o empty -s exit:0 mkdir -p $test_inputs_dir2 + atf_check -e empty -o empty -s exit:0 \ + touch $test_inputs_dir2/multiple_dirs_test_file + + atf_check -e empty -o empty -s exit:0 \ + $MAKEFS $TEST_IMAGE $TEST_INPUTS_DIR $test_inputs_dir2 + + mount_image + check_base_iso9660_image_contents -d $test_inputs_dir2 +} +from_multiple_dirs_cleanup() +{ + common_cleanup +} + +atf_test_case from_single_dir cleanup +from_single_dir_body() +{ + create_test_inputs + + atf_check -e empty -o empty -s exit:0 \ + $MAKEFS $TEST_IMAGE $TEST_INPUTS_DIR + + mount_image + check_base_iso9660_image_contents +} +from_single_dir_cleanup() +{ + common_cleanup +} + +atf_test_case o_flag_allow_deep_trees cleanup +o_flag_allow_deep_trees_body() +{ + create_test_inputs + + # Make sure the "more than 8 levels deep" requirement is met. + atf_check -e empty -o empty -s exit:0 \ + mkdir -p $TEST_INPUTS_DIR/a/b/c/d/e/f/g/h/i/j + + atf_check -e empty -o empty -s exit:0 \ + $MAKEFS -o allow-deep-trees $TEST_IMAGE $TEST_INPUTS_DIR + + mount_image + check_base_iso9660_image_contents +} +o_flag_allow_deep_trees_cleanup() +{ + common_cleanup +} + +atf_test_case o_flag_allow_max_name cleanup +o_flag_allow_max_name_body() +{ + atf_expect_fail "-o allow-max-name doesn't appear to be implemented on FreeBSD's copy of makefs [yet]" + + create_test_inputs + + long_path=$TEST_INPUTS_DIR/$(jot -s '' -b 0 37) + + # Make sure the "37 char name" limit requirement is met. + atf_check -e empty -o empty -s exit:0 touch $long_path + + atf_check -e empty -o empty -s exit:0 \ + $MAKEFS -o allow-max-name $TEST_IMAGE $TEST_INPUTS_DIR + + mount_image + check_base_iso9660_image_contents +} +o_flag_allow_max_name_cleanup() +{ + common_cleanup +} + +atf_test_case o_flag_preparer +o_flag_preparer_body() +{ + create_test_dirs + + preparer='My Very First ISO' + preparer_uppercase="$(echo $preparer | tr '[[:lower:]]' '[[:upper:]]')" + + atf_check -e empty -o empty -s exit:0 touch $TEST_INPUTS_DIR/dummy_file + atf_check -e empty -o empty -s exit:0 \ + $MAKEFS -o preparer="$preparer" $TEST_IMAGE $TEST_INPUTS_DIR + atf_check -e empty -o match:"$preparer_uppercase" -s exit:0 \ + strings $TEST_IMAGE +} + +atf_test_case o_flag_publisher +o_flag_publisher_body() +{ + create_test_dirs + + publisher='My Super Awesome Publishing Company LTD' + publisher_uppercase="$(echo $publisher | tr '[[:lower:]]' '[[:upper:]]')" + + atf_check -e empty -o empty -s exit:0 touch $TEST_INPUTS_DIR/dummy_file + atf_check -e empty -o empty -s exit:0 \ + $MAKEFS -o publisher="$publisher" $TEST_IMAGE $TEST_INPUTS_DIR + atf_check -e empty -o match:"$publisher_uppercase" -s exit:0 \ + strings $TEST_IMAGE +} + +atf_test_case o_flag_rockridge cleanup +o_flag_rockridge_body() +{ + create_test_dirs + + # Make sure the "more than 8 levels deep" requirement is met. + atf_check -e empty -o empty -s exit:0 \ + mkdir -p $TEST_INPUTS_DIR/a/b/c/d/e/f/g/h/i/j + + # Make sure the "pathname larger than 255 chars" requirement is met. + # + # $long_path's needs to be nested in a directory, as creating it + # outright as a 256 char filename via touch will fail with ENAMETOOLONG + long_path=$TEST_INPUTS_DIR/$(jot -s '/' -b "$(jot -s '' -b 0 64)" 4) + atf_check -e empty -o empty -s exit:0 mkdir -p "$(dirname $long_path)" + atf_check -e empty -o empty -s exit:0 touch "$long_path" + + atf_check -e empty -o empty -s exit:0 \ + $MAKEFS -o rockridge $TEST_IMAGE $TEST_INPUTS_DIR + + mount_image + check_image_contents -X .rr_moved + + # .rr_moved is a special directory created when you have deep directory + # trees with rock ridge extensions on + atf_check -e empty -o empty -s exit:0 \ + test -d $TEST_MOUNT_DIR/.rr_moved +} +o_flag_rockridge_cleanup() +{ + common_cleanup +} + +atf_init_test_cases() +{ + atf_add_test_case D_flag + atf_add_test_case F_flag + + atf_add_test_case from_mtree_spec_file + atf_add_test_case from_multiple_dirs + atf_add_test_case from_single_dir + + atf_add_test_case o_flag_allow_deep_trees + atf_add_test_case o_flag_allow_max_name + atf_add_test_case o_flag_preparer + atf_add_test_case o_flag_publisher + atf_add_test_case o_flag_rockridge +} Property changes on: stable/10/usr.sbin/makefs/tests/makefs_cd9660_tests.sh ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: stable/10/usr.sbin/makefs/tests/makefs_ffs_tests.sh =================================================================== --- stable/10/usr.sbin/makefs/tests/makefs_ffs_tests.sh (nonexistent) +++ stable/10/usr.sbin/makefs/tests/makefs_ffs_tests.sh (revision 290586) @@ -0,0 +1,172 @@ +# +# Copyright 2015 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$ +# + +MAKEFS="makefs -t ffs" +MOUNT="mount" + +. "$(dirname "$0")/makefs_tests_common.sh" + +TEST_TUNEFS_OUTPUT=$TMPDIR/tunefs.output + +common_cleanup() +{ + if ! test_md_device=$(cat $TEST_MD_DEVICE_FILE); then + echo "$TEST_MD_DEVICE_FILE could not be opened; has an md(4) device been attached?" + return + fi + + umount -f /dev/$test_md_device || : + mdconfig -d -u $test_md_device || : +} + +check_ffs_image_contents() +{ + atf_check -e save:$TEST_TUNEFS_OUTPUT -o empty -s exit:0 \ + tunefs -p /dev/$(cat $TEST_MD_DEVICE_FILE) + + check_image_contents "$@" +} + +atf_test_case D_flag cleanup +D_flag_body() +{ + atf_skip "makefs crashes with SIGBUS with dupe mtree entries; see FreeBSD bug # 192839" + + create_test_inputs + + atf_check -e empty -o save:$TEST_SPEC_FILE -s exit:0 \ + mtree -cp $TEST_INPUTS_DIR + atf_check -e empty -o not-empty -s exit:0 \ + $MAKEFS -F $TEST_SPEC_FILE -M 1m $TEST_IMAGE $TEST_INPUTS_DIR + + atf_check -e empty -o empty -s exit:0 \ + cp $TEST_SPEC_FILE spec2.mtree + atf_check -e empty -o save:dupe_$TEST_SPEC_FILE -s exit:0 \ + cat $TEST_SPEC_FILE spec2.mtree + + atf_check -e empty -o not-empty -s not-exit:0 \ + $MAKEFS -F dupe_$TEST_SPEC_FILE -M 1m $TEST_IMAGE $TEST_INPUTS_DIR + atf_check -e empty -o not-empty -s exit:0 \ + $MAKEFS -D -F dupe_$TEST_SPEC_FILE -M 1m $TEST_IMAGE $TEST_INPUTS_DIR +} +D_flag_cleanup() +{ + common_cleanup +} + +atf_test_case F_flag cleanup +F_flag_body() +{ + create_test_inputs + + atf_check -e empty -o save:$TEST_SPEC_FILE -s exit:0 \ + mtree -cp $TEST_INPUTS_DIR + + atf_check -e empty -o not-empty -s exit:0 \ + $MAKEFS -F $TEST_SPEC_FILE -M 1m $TEST_IMAGE $TEST_INPUTS_DIR + + mount_image + check_ffs_image_contents +} +F_flag_cleanup() +{ + common_cleanup +} + +atf_test_case from_mtree_spec_file cleanup +from_mtree_spec_file_body() +{ + create_test_inputs + + atf_check -e empty -o save:$TEST_SPEC_FILE -s exit:0 \ + mtree -c -k type,link,size -p $TEST_INPUTS_DIR + + cd $TEST_INPUTS_DIR + atf_check -e empty -o not-empty -s exit:0 \ + $MAKEFS $TEST_IMAGE $TEST_SPEC_FILE + cd - + + mount_image + check_ffs_image_contents +} +from_mtree_spec_file_cleanup() +{ + common_cleanup +} + +atf_test_case from_multiple_dirs cleanup +from_multiple_dirs_body() +{ + test_inputs_dir2=$TMPDIR/inputs2 + + create_test_inputs + + atf_check -e empty -o empty -s exit:0 mkdir -p $test_inputs_dir2 + atf_check -e empty -o empty -s exit:0 \ + touch $test_inputs_dir2/multiple_dirs_test_file + + atf_check -e empty -o not-empty -s exit:0 \ + $MAKEFS $TEST_IMAGE $TEST_INPUTS_DIR $test_inputs_dir2 + + mount_image + check_image_contents -d $test_inputs_dir2 +} +from_multiple_dirs_cleanup() +{ + common_cleanup +} + +atf_test_case from_single_dir cleanup +from_single_dir_body() +{ + create_test_inputs + + atf_check -e empty -o not-empty -s exit:0 \ + $MAKEFS -M 1m $TEST_IMAGE $TEST_INPUTS_DIR + + mount_image + check_ffs_image_contents +} +from_single_dir_cleanup() +{ + common_cleanup +} + +atf_init_test_cases() +{ + + atf_add_test_case D_flag + atf_add_test_case F_flag + + atf_add_test_case from_mtree_spec_file + atf_add_test_case from_multiple_dirs + atf_add_test_case from_single_dir + + +} Property changes on: stable/10/usr.sbin/makefs/tests/makefs_ffs_tests.sh ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: stable/10/usr.sbin/makefs/tests/makefs_tests_common.sh =================================================================== --- stable/10/usr.sbin/makefs/tests/makefs_tests_common.sh (nonexistent) +++ stable/10/usr.sbin/makefs/tests/makefs_tests_common.sh (revision 290586) @@ -0,0 +1,145 @@ +# +# Copyright 2015 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$ +# + +KB=1024 +: ${TMPDIR=/tmp} +TEST_IMAGE="$TMPDIR/test.img" +TEST_INPUTS_DIR="$TMPDIR/inputs" +TEST_MD_DEVICE_FILE="$TMPDIR/md.output" +TEST_MOUNT_DIR="$TMPDIR/mnt" +TEST_SPEC_FILE="$TMPDIR/mtree.spec" + +check_image_contents() +{ + local directories=$TEST_INPUTS_DIR + local excludes mtree_excludes_arg mtree_file + local mtree_keywords="type,link,size" + + while getopts "d:f:m:X:" flag; do + case "$flag" in + d) + directories="$directories $OPTARG" + ;; + f) + mtree_file=$OPTARG + ;; + m) + mtree_keywords=$OPTARG + ;; + X) + excludes="$excludes $OPTARG" + ;; + *) + echo "usage: check_image_contents [-d directory ...] [-f mtree-file] [-m mtree-keywords] [-X exclude]" + atf_fail "unhandled option: $flag" + ;; + esac + done + + if [ -n "$excludes" ]; then + echo "$excludes" | tr ' ' '\n' > excludes.txt + mtree_excludes_arg="-X excludes.txt" + fi + + if [ -z "$mtree_file" ]; then + mtree_file=input_spec.mtree + for directory in $directories; do + mtree -c -k $mtree_keywords -p $directory $mtree_excludes_arg + done > $mtree_file + fi + + echo "<---- Input spec BEGIN ---->" + cat $mtree_file + echo "<---- Input spec END ---->" + atf_check -e empty -o empty -s exit:0 \ + mtree -UW -f $mtree_file \ + -p $TEST_MOUNT_DIR \ + $mtree_excludes_arg +} + +create_test_dirs() +{ + atf_check -e empty -s exit:0 mkdir -m 0777 -p $TEST_MOUNT_DIR + atf_check -e empty -s exit:0 mkdir -m 0777 -p $TEST_INPUTS_DIR +} + +create_test_inputs() +{ + create_test_dirs + + cd $TEST_INPUTS_DIR + + atf_check -e empty -s exit:0 mkdir -m 0755 -p a/b/1 + atf_check -e empty -s exit:0 ln -s a/b c + atf_check -e empty -s exit:0 touch d + atf_check -e empty -s exit:0 ln d e + atf_check -e empty -s exit:0 touch .f + atf_check -e empty -s exit:0 mkdir .g + # XXX: fifos on the filesystem don't match fifos created by makefs for + # some odd reason. + #atf_check -e empty -s exit:0 mkfifo h + atf_check -e ignore -s exit:0 dd if=/dev/zero of=i count=1000 bs=1 + atf_check -e empty -s exit:0 touch klmn + atf_check -e empty -s exit:0 touch opqr + atf_check -e empty -s exit:0 touch stuv + atf_check -e empty -s exit:0 install -m 0755 /dev/null wxyz + atf_check -e empty -s exit:0 touch 0b00000001 + atf_check -e empty -s exit:0 touch 0b00000010 + atf_check -e empty -s exit:0 touch 0b00000011 + atf_check -e empty -s exit:0 touch 0b00000100 + atf_check -e empty -s exit:0 touch 0b00000101 + atf_check -e empty -s exit:0 touch 0b00000110 + atf_check -e empty -s exit:0 touch 0b00000111 + atf_check -e empty -s exit:0 touch 0b00001000 + atf_check -e empty -s exit:0 touch 0b00001001 + atf_check -e empty -s exit:0 touch 0b00001010 + atf_check -e empty -s exit:0 touch 0b00001011 + atf_check -e empty -s exit:0 touch 0b00001100 + atf_check -e empty -s exit:0 touch 0b00001101 + atf_check -e empty -s exit:0 touch 0b00001110 + + for filesize in 1 512 $(( 2 * $KB )) $(( 10 * $KB )) $(( 512 * $KB )); \ + do + atf_check -e ignore -o empty -s exit:0 \ + dd if=/dev/zero of=${filesize}.file bs=1 \ + count=1 oseek=${filesize} conv=sparse + files="${files} ${filesize}.file" + done + + cd - +} + +mount_image() +{ + atf_check -e empty -o save:$TEST_MD_DEVICE_FILE -s exit:0 \ + mdconfig -a -f $TEST_IMAGE + atf_check -e empty -o empty -s exit:0 \ + $MOUNT /dev/$(cat $TEST_MD_DEVICE_FILE) $TEST_MOUNT_DIR +} + Property changes on: stable/10/usr.sbin/makefs/tests/makefs_tests_common.sh ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: stable/10 =================================================================== --- stable/10 (revision 290585) +++ stable/10 (revision 290586) Property changes on: stable/10 ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head:r289739,289743,289897,289901