The branch main has been updated by markj:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=8502144d7a09c503b3b438924bfc0fd7cad19885

commit 8502144d7a09c503b3b438924bfc0fd7cad19885
Author:     Mark Johnston <[email protected]>
AuthorDate: 2022-08-17 21:27:06 +0000
Commit:     Mark Johnston <[email protected]>
CommitDate: 2022-08-17 21:28:01 +0000

    makefs tests: Add test cases for handling of multiple staging dirs
    
    Sponsored by:   The FreeBSD Foundation
---
 usr.sbin/makefs/tests/makefs_zfs_tests.sh | 84 +++++++++++++++++++++++++++++++
 1 file changed, 84 insertions(+)

diff --git a/usr.sbin/makefs/tests/makefs_zfs_tests.sh 
b/usr.sbin/makefs/tests/makefs_zfs_tests.sh
index cefeed637ac7..a0e81bbd9a52 100644
--- a/usr.sbin/makefs/tests/makefs_zfs_tests.sh
+++ b/usr.sbin/makefs/tests/makefs_zfs_tests.sh
@@ -497,6 +497,88 @@ multi_dataset_4_cleanup()
        common_cleanup
 }
 
+#
+# Validate handling of multiple staging directories.
+#
+atf_test_case multi_staging_1 cleanup
+multi_staging_1_body()
+{
+       local tmpdir
+
+       create_test_dirs
+       cd $TEST_INPUTS_DIR
+
+       mkdir dir1
+       echo a > a
+       echo a > dir1/a
+       echo z > z
+
+       cd -
+
+       tmpdir=$(mktemp -d)
+       cd $tmpdir
+
+       mkdir dir2 dir2/dir3
+       echo b > dir2/b
+       echo c > dir2/dir3/c
+       ln -s dir2/dir3c s
+
+       cd -
+
+       atf_check $MAKEFS -s 1g -o rootpath=/ -o poolname=$ZFS_POOL_NAME \
+           $TEST_IMAGE ${TEST_INPUTS_DIR} $tmpdir
+
+       import_image
+
+       check_image_contents -d $tmpdir
+}
+multi_staging_1_cleanup()
+{
+       common_cleanup
+}
+
+atf_test_case multi_staging_2 cleanup
+multi_staging_2_body()
+{
+       local tmpdir
+
+       create_test_dirs
+       cd $TEST_INPUTS_DIR
+
+       mkdir dir
+       echo a > dir/foo
+       echo b > dir/bar
+
+       cd -
+
+       tmpdir=$(mktemp -d)
+       cd $tmpdir
+
+       mkdir dir
+       echo c > dir/baz
+
+       cd -
+
+       atf_check $MAKEFS -s 1g -o rootpath=/ -o poolname=$ZFS_POOL_NAME \
+           $TEST_IMAGE ${TEST_INPUTS_DIR} $tmpdir
+
+       import_image
+
+       # check_image_contents can't easily handle merged directories, so
+       # just check that the merged directory contains the files we expect.
+       atf_check -o not-empty stat ${TEST_MOUNT_DIR}/dir/foo
+       atf_check -o not-empty stat ${TEST_MOUNT_DIR}/dir/bar
+       atf_check -o not-empty stat ${TEST_MOUNT_DIR}/dir/baz
+
+       if [ "$(ls ${TEST_MOUNT_DIR}/dir | wc -l)" -ne 3 ]; then
+               atf_fail "Expected 3 files in ${TEST_MOUNT_DIR}/dir"
+       fi
+}
+multi_staging_2_cleanup()
+{
+       common_cleanup
+}
+
 #
 # Rudimentary test to verify that two ZFS images created using the same
 # parameters and input hierarchy are byte-identical.  In particular, makefs(1)
@@ -623,6 +705,8 @@ atf_init_test_cases()
        atf_add_test_case multi_dataset_2
        atf_add_test_case multi_dataset_3
        atf_add_test_case multi_dataset_4
+       atf_add_test_case multi_staging_1
+       atf_add_test_case multi_staging_2
        atf_add_test_case reproducible
        atf_add_test_case snapshot
        atf_add_test_case soft_links

Reply via email to