From e8db2c80ad428c536de564c9c29e1dc2893cafcb Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Tue, 18 Apr 2017 23:58:03 -0700 Subject: [PATCH 1/1] tests: test capturing+applying file with negative UNIX timestamp ... and start comparing mtime in tree-cmp, and fix cases where return codes in scripts were being ignored by use of '&&'. --- tests/common_tests.sh | 3 +++ tests/test-imagex-update_and_extract | 36 ++++++++++++++++++---------- tests/tree-cmp.c | 10 ++++---- 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/tests/common_tests.sh b/tests/common_tests.sh index 4aaeadbf..68ccba62 100644 --- a/tests/common_tests.sh +++ b/tests/common_tests.sh @@ -69,3 +69,6 @@ do_test 'echo -n 8 > file; ln file dir/subdir/file; echo -n 8 > dir/subdir/file2; ln dir/subdir/file dir/subdir/link;' + + msg "timestamp before 1970 (before start of UNIX epoch)" + do_test 'touch -t 196901231234.56 file' diff --git a/tests/test-imagex-update_and_extract b/tests/test-imagex-update_and_extract index ddeea3ff..202371b1 100755 --- a/tests/test-imagex-update_and_extract +++ b/tests/test-imagex-update_and_extract @@ -116,7 +116,8 @@ wimupdate test.wim << EOF rename file newname EOF do_apply -../tree-cmp file out.dir/newname && [ ! -e out.dir/file ] +../tree-cmp file out.dir/newname +[ ! -e out.dir/file ] prepare_empty_wim msg "Testing adding, then renaming file in WIM image in one command" @@ -125,7 +126,8 @@ add file /file rename /file /newname EOF do_apply -../tree-cmp file out.dir/newname && [ ! -e out.dir/file ] +../tree-cmp file out.dir/newname +[ ! -e out.dir/file ] msg "Testing adding additional file to WIM image" prepare_empty_wim @@ -136,21 +138,28 @@ wimupdate test.wim << EOF add file /file EOF do_apply -[ -e out.dir/1 ] && [ -e out.dir/file ] +[ -e out.dir/1 ] +[ -e out.dir/file ] msg "Testing extracting file from WIM image" -rm -rf out.dir && mkdir out.dir +rm -rf out.dir +mkdir out.dir wimextract test.wim 1 /file --dest-dir=out.dir -../tree-cmp file out.dir/file && [ ! -e out.dir/1 ] +../tree-cmp file out.dir/file +[ ! -e out.dir/1 ] msg "Testing extracting file from WIM image to stdout" -rm -rf out.dir && mkdir out.dir +rm -rf out.dir +mkdir out.dir wimlib_imagex extract test.wim 1 /file --to-stdout > out.dir/file -../tree-cmp file out.dir/file && [ ! -e out.dir/1 ] +cmp file out.dir/file +[ ! -e out.dir/1 ] msg "Testing adding directories and files to WIM image" -rm -rf dir1 && mkdir dir1 -rm -rf dir2 && mkdir dir2 +rm -rf dir1 +mkdir dir1 +rm -rf dir2 +mkdir dir2 echo 5 > dir1/5 echo 6 > dir2/6.1 echo 6 > dir2/6 @@ -164,23 +173,26 @@ wimupdate test.wim 1 << EOF add dir1 /dir1 add dir2 /prefix/dir2 EOF -rm -rf out.dir && mkdir out.dir +rm -rf out.dir +mkdir out.dir wimextract test.wim 1 dir1 --dest-dir=out.dir wimextract test.wim 1 prefix/dir2 --dest-dir=out.dir ../tree-cmp dir1 out.dir/dir1 ../tree-cmp dir2 out.dir/dir2 msg "Testing adding files to WIM image" -rm -rf in.dir && mkdir in.dir +rm -rf in.dir +mkdir in.dir wimappend in.dir test.wim "2" cp $srcdir/src/*.c in.dir wimupdate test.wim 2 << EOF add in.dir / add file /file EOF -cp file in.dir/file +cp -a file in.dir/file rm -rf out.dir wimapply test.wim 2 out.dir +touch -r in.dir out.dir ../tree-cmp in.dir out.dir msg "Testing adding file with space in it" diff --git a/tests/tree-cmp.c b/tests/tree-cmp.c index 1fed0234..4b70a830 100644 --- a/tests/tree-cmp.c +++ b/tests/tree-cmp.c @@ -323,16 +323,14 @@ static void tree_cmp(char file1[], int file1_len, char file2[], int file2_len) file1, file2); #if 0 if (ntfs_mode && st1.st_atime != st2.st_atime) - difference("Access times of `%s' and `%s' are not the same", - file1, file2); + difference("Access times of `%s' (%x) and `%s' (%x) are " + "not the same", + file1, st1.st_atime, file2, st2.st_atime); +#endif if (st1.st_mtime != st2.st_mtime) difference("Modification times of `%s' (%x) and `%s' (%x) are " "not the same", file1, st1.st_mtime, file2, st2.st_mtime); - if (st1.st_ctime != st2.st_ctime) - difference("Status change times of `%s' and `%s' are not the same", - file1, file2); -#endif if ((ntfs_mode || S_ISREG(st1.st_mode)) && st1.st_nlink != st2.st_nlink) difference("Link count of `%s' (%u) and `%s' (%u) " "are not the same", -- 2.43.0