X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=tests%2Ftest-imagex-ntfs;h=cf8b6d1b4361c46a53025b2f7a29e030c2c236e8;hp=a0c79fccf8ef5ed5ae88ae27cd248666b64d87f9;hb=54193a504d8dcf1e2dfae727c76cd1b44884518b;hpb=507c465ba8f26dc79e43d53b3d8df1dc07074e9f diff --git a/tests/test-imagex-ntfs b/tests/test-imagex-ntfs index a0c79fcc..cf8b6d1b 100755 --- a/tests/test-imagex-ntfs +++ b/tests/test-imagex-ntfs @@ -4,13 +4,16 @@ # checking the NTFS capture and apply features. # # This test will fail if wimlib was compiled with --without-ntfs-3g. +# +# Please note that cleanup is not done if a test fails, and NTFS volumes may +# remain mounted. -# Assume an in-tree build. set -e +srcdir=${srcdir:-.} +srcdir=`realpath $srcdir` cd tests imagex() { - #echo "imagex $@" ../imagex $@ > /dev/null } @@ -46,8 +49,8 @@ do_mkntfs() { init() { echo "Creating NTFS volumes and empty directories to use as mountpoints" - dd if=/dev/zero of=in.ntfs bs=4096 count=260 &> /dev/null - dd if=/dev/zero of=out.ntfs bs=4096 count=260 &> /dev/null + dd if=/dev/zero of=in.ntfs bs=4096 count=500 &> /dev/null + dd if=/dev/zero of=out.ntfs bs=4096 count=500 &> /dev/null mkdir in.mnt out.mnt do_mkntfs in.ntfs do_mkntfs out.ntfs @@ -57,7 +60,7 @@ init() { cleanup() { do_unmount in.mnt do_unmount out.mnt - rm -rf in.ntfs out.ntfs in.mnt out.mnt in.xattr out.xattr + rm -rf in.ntfs out.ntfs in.mnt out.mnt in.xattr out.xattr ntfs.wim } #trap cleanup exit @@ -86,7 +89,7 @@ do_test() { if [ -x /usr/bin/tree ]; then tree in.mnt --inodes -F -s --noreport fi - if ! ./ntfs-cmp in.mnt out.mnt; then + if ! ./tree-cmp in.mnt out.mnt NTFS; then if [ -x /usr/bin/tree ]; then echo "Dumping tree of applied image" tree out.mnt --inodes -F -s --noreport @@ -98,7 +101,9 @@ do_test() { __do_unmount out.mnt } msg() { - echo "Testing image capture and application of $1" + echo "--------------------------------------------------------------------" + echo "Testing image capture and application of NTFS volume containing $1" + echo "--------------------------------------------------------------------" } cleanup @@ -208,3 +213,64 @@ do_test 'echo 999 > file; setfattr -n user.ads -v "888" file; ln file link; setfattr -v DOSNAME -n system.ntfs_dos_name file;' + +msg "NTFS volume containing C source code of wimlib" +do_test 'cp $srcdir/src/*.{c,h} .' + +msg "NTFS volume containing file with security descriptor" +do_test 'touch file; + setfattr -n system.ntfs_acl -v 0s`cat $srcdir/tests/security_descriptor_1.base64` file' + +msg "NTFS volume containing files with different security descriptors" +do_test 'touch file; + touch file2; + setfattr -n system.ntfs_acl -v 0s`cat $srcdir/tests/security_descriptor_1.base64` file + setfattr -n system.ntfs_acl -v 0s`cat $srcdir/tests/security_descriptor_2.base64` file' + +msg "NTFS volume containing files with different security descriptors and some with the same security descriptor" +do_test 'touch file; + touch file2; + touch file3; + mkdir dir; + setfattr -n system.ntfs_acl -v 0s`cat $srcdir/tests/security_descriptor_1.base64` file + setfattr -n system.ntfs_acl -v 0s`cat $srcdir/tests/security_descriptor_2.base64` file + setfattr -n system.ntfs_acl -v 0s`cat $srcdir/tests/security_descriptor_1.base64` dir + setfattr -n system.ntfs_acl -v 0s`cat $srcdir/tests/security_descriptor_1.base64` file3' + +msg "NTFS volume containing tons of random stuff" +do_test 'echo -n 8 > file; + ln file hardlink; + ln -s hardlink symlink; + echo -n 8 > identical file; + dd if=/dev/urandom of=randomfile bs=4096 count=10 &>/dev/null; + mkdir dir; + setfattr -n system.ntfs_dos_name -v DOSNAME dir; + setfattr -n system.ntfs_acl -v 0s`cat $srcdir/tests/security_descriptor_1.base64` dir + mkdir anotherdir; + cp file anotherdir; + ln file anotherdir/anotherhardlink; + ln -s .. anotherdir/anothersymlink; + ln -s anothersymlink anotherdir/symlinktosymlink; + echo -n 33 > anotherfile; + setfattr -n user.ads anotherfile -v 33; + setfattr -n user.ads2 anotherfile -v 8; + setfattr -n user.ads3 anotherfile -v 33; + echo -n > emptyfile; + setfattr -n user.ads emptyfile -v 8; + setfattr -n user.ads5 emptyfile -v"`cat $srcdir/src/hardlink.c`" + mkdir dir/subdir; + ln file dir/subdir/file; + echo -n 8 > dir/subdir/file2; + ln dir/subdir/file dir/subdir/link; + setfattr -n system.ntfs_dos_name -v 123 dir/subdir/link; + setfattr -n system.ntfs_acl -v 0s`cat $srcdir/tests/security_descriptor_1.base64` dir/subdir/link; + setfattr -n user.yet_another_ads -v "" dir/subdir/link; + setfattr -n user.yet_another_ads2 -v "" dir/subdir/link; + setfattr -n user.yet_another_ads3 -v "abc" dir/subdir/link; + setfattr -n user.yet_another_ads4 -v "" dir/subdir/link;' + +cleanup + +echo "**********************************************************" +echo " NTFS capture/apply tests passed " +echo "**********************************************************"