X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=tests%2Ftest-imagex-ntfs;h=6d7fbd5b2d2db6bd5004389b9e052a1a32ac1550;hb=2441b3b94cf77a5193550682695dfaf930466764;hp=eb061b1a49ea892badf73694c877081f3f46a22d;hpb=cdf10fe68524c0a8d1faab3fbf80f6e90916f4eb;p=wimlib diff --git a/tests/test-imagex-ntfs b/tests/test-imagex-ntfs index eb061b1a..6d7fbd5b 100755 --- a/tests/test-imagex-ntfs +++ b/tests/test-imagex-ntfs @@ -10,7 +10,6 @@ set -e cd tests imagex() { - #echo "imagex $@" ../imagex $@ > /dev/null } @@ -46,8 +45,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 @@ -81,9 +80,19 @@ do_test() { if ! imagex apply ntfs.wim 1 out.ntfs; then error "Failed to apply WIM to NTFS volume" fi - __do_mount in.ntfs in.mnt - __do_mount out.ntfs out.mnt - ./ntfs-cmp in.mnt out.mnt + __do_mount in.ntfs in.mnt noatime + __do_mount out.ntfs out.mnt noatime + if [ -x /usr/bin/tree ]; then + tree in.mnt --inodes -F -s --noreport + fi + if ! ./ntfs-cmp in.mnt out.mnt; then + if [ -x /usr/bin/tree ]; then + echo "Dumping tree of applied image" + tree out.mnt --inodes -F -s --noreport + error 'Information was lost or corrupted while capturing + and then applying a NTFS volume' + fi + fi rm -rf out.mnt/* in.mnt/* __do_unmount out.mnt } @@ -148,7 +157,7 @@ msg "NTFS volume containing identical files and symlinks in subdirectory" do_test 'mkdir dir; echo 888 > dir/file; echo 888 > dir/idfile2; - ln -s dir dir/circle; ln -s file dir/filelink' + ln -s ../dir dir/circle; ln -s file dir/filelink' msg "NTFS volume containing hard link group and identical files not hard linked" do_test 'echo 888 > file; @@ -161,5 +170,99 @@ msg "NTFS volume containing file with named data stream" do_test 'echo 1 > file; setfattr -n user.ads -v 2 file' +msg "NTFS volume containing file with multiple named data streams" +do_test 'echo 1 > file; + setfattr -n user.a -v 1 file; + setfattr -n user.aa -v 11 file; + setfattr -n user.aaa -v 111 file; + setfattr -n user.aaaa -v 1111 file' + +msg "NTFS volume containing file with multiple named data streams with same contents" +do_test 'echo 1 > file; + setfattr -n user.a -v 1111 file; + setfattr -n user.aa -v 1111 file; + setfattr -n user.aaa -v 1111 file; + setfattr -n user.aaaa -v 1111 file;' +msg "NTFS volume containing file with named data streams with same contents as other file" +do_test 'echo -n > file; + setfattr -n user.a -v 1111 file; + echo -n 1111 > otherfile;' + +msg "NTFS volume containing file with empty named data stream and non-empty unnamed data stream" +do_test 'echo 1 > file; + setfattr -n user.ads -v "" file;' +msg "NTFS volume containing file with empty named data stream and empty unnamed data stream" +do_test 'echo -n > file; + setfattr -n user.ads -v "" file;' + +msg "NTFS volume containing file with named data stream with hardlink" +do_test 'echo 999 > file; + setfattr -n user.ads -v "888" file; + ln file link;' + +msg "NTFS volume containing file with named data stream with hardlink and DOS name" +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 ../../src/*.c ../../src/*.h .' + +msg "NTFS volume containing file with security descriptor" +do_test 'touch file; + setfattr -n system.ntfs_acl -v 0s`cat ../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 ../security_descriptor_1.base64` file + setfattr -n system.ntfs_acl -v 0s`cat ../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 ../security_descriptor_1.base64` file + setfattr -n system.ntfs_acl -v 0s`cat ../security_descriptor_2.base64` file + setfattr -n system.ntfs_acl -v 0s`cat ../security_descriptor_1.base64` dir + setfattr -n system.ntfs_acl -v 0s`cat ../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 ../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 ../../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 ../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;' + +echo "**********************************************************" +echo " NTFS capture/apply tests passed " +echo "**********************************************************"