]> wimlib.net Git - wimlib/blobdiff - tests/test-imagex
Update version-info
[wimlib] / tests / test-imagex
index 177cd2b3aa89a9553607108c7a88d2014f063647..fe931321a760476b63d0d89c3b5793c46f089a02 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
 
-# This script does some sanity testing of the 'imagex' program.  It by no means
-# tests every aspect of wimlib comprehensively.
+# This script does some sanity testing of the 'wimlib-imagex' program.  It by no
+# means tests every aspect of wimlib comprehensively.
 
 set -e
 cd tests
@@ -34,14 +34,14 @@ dd if=/dev/zero of=dir2/zeroes bs=4096 count=5
 
 for comp_type in None LZX XPRESS; do
        echo "Testing capture and application of $comp_type-compressed WIM"
-       if ! imagex capture dir dir.wim --compress=$comp_type; then
-               error "'imagex capture' failed"
+       if ! wimcapture dir dir.wim --compress=$comp_type; then
+               error "'wimcapture' failed"
        fi
-       if ! imagex apply dir.wim tmp; then
-               error "'imagex apply' failed"
+       if ! wimapply dir.wim tmp; then
+               error "'wimapply' failed"
        fi
        if ! test `wim_ctype dir.wim` = "$comp_type"; then
-               error "'imagex info' didn't report the compression type correctly"
+               error "'wiminfo' didn't report the compression type correctly"
        fi
        if ! diff -q -r dir tmp; then
                error "Recursive diff of extracted directory with original failed"
@@ -68,80 +68,80 @@ done
 # Capturing and modifying name, description, and bootable flag
 
 echo "Testing capture of WIM with default name and description"
-imagex capture dir dir.wim
-if ! test "`imagex info dir.wim | grep Name | awk '{print $2}'`" = "dir"; then
+wimcapture dir dir.wim
+if ! test "`wiminfo dir.wim | grep Name | awk '{print $2}'`" = "dir"; then
        error "WIM name not set correctly"
 fi
-if ! test "`imagex info dir.wim | grep Description | awk '{print $2}'`" = ""; then
+if ! test "`wiminfo dir.wim | grep Description | awk '{print $2}'`" = ""; then
        error "WIM description not set correctly"
 fi
 
 echo "Testing capture of WIM with default boot flag"
-imagex capture dir dir.wim
-if ! test "`imagex info dir.wim | grep Boot | awk '{print $3}'`" = "0"; then
+wimcapture dir dir.wim
+if ! test "`wiminfo dir.wim | grep '^Boot Index' | awk '{print $3}'`" = "0"; then
        error "WIM boot flag not set correctly"
 fi
 
 echo "Testing changing image bootable flag"
-if ! imagex info dir.wim 1 --boot; then
+if ! wiminfo dir.wim 1 --boot; then
        error "Failed to change bootable image"
 fi
-if ! test "`imagex info dir.wim | grep Boot | awk '{print $3}'`" = "1"; then
+if ! test "`wiminfo dir.wim | grep '^Boot Index' | awk '{print $3}'`" = "1"; then
        error "Bootable image not changed correctly"
 fi
 echo "Testing changing image bootable flag"
-if ! imagex info dir.wim 0 --boot; then
+if ! wiminfo dir.wim 0 --boot; then
        error "Failed to reset bootable image"
 fi
-if ! test "`imagex info dir.wim | grep Boot | awk '{print $3}'`" = "0"; then
+if ! test "`wiminfo dir.wim | grep '^Boot Index' | awk '{print $3}'`" = "0"; then
        error "Bootable image not reset correctly"
 fi
 echo "Testing changing image bootable flag to invalid image (this should generate errors)"
-if imagex info dir.wim 2 --boot; then
+if wiminfo dir.wim 2 --boot; then
        error "Succeeded in changing bootable image to invalid number"
 fi
-if ! test "`imagex info dir.wim | grep Boot | awk '{print $3}'`" = "0"; then
+if ! test "`wiminfo dir.wim | grep '^Boot Index' | awk '{print $3}'`" = "0"; then
        error "Boot flag was changed even though the change command was supposed to fail"
 fi
 rm -rf dir.wim tmp
 
 echo "Testing capture of WIM with name and description"
-if ! imagex capture dir dir.wim "myname" "mydesc"; then
+if ! wimcapture dir dir.wim "myname" "mydesc"; then
        error "Failed to capture WIM with specified name and description"
 fi
-if ! test "`imagex info dir.wim | grep Name | awk '{print $2}'`" = "myname"; then
+if ! test "`wiminfo dir.wim | grep Name | awk '{print $2}'`" = "myname"; then
        error "WIM name not set correctly"
 fi
-if ! test "`imagex info dir.wim | grep Description | awk '{print $2}'`" = "mydesc"; then
+if ! test "`wiminfo dir.wim | grep Description | awk '{print $2}'`" = "mydesc"; then
        error "WIM name not set correctly"
 fi
 echo "Testing printing WIM lookup table"
-if ! imagex info --lookup-table dir.wim > /dev/null; then
+if ! wiminfo --lookup-table dir.wim > /dev/null; then
        error "Failed to print WIM lookup table"
 fi
 echo "Testing printing WIM header"
-if ! imagex info --header dir.wim > /dev/null; then
+if ! wiminfo --header dir.wim > /dev/null; then
        error "Failed to print WIM header"
 fi
 echo "Testing printing WIM XML info"
-if ! imagex info --xml dir.wim > /dev/null; then
+if ! wiminfo --xml dir.wim > /dev/null; then
        error "Failed to print WIM XML data"
 fi
 echo "Testing extracting WIM XML info"
-if ! imagex info --extract-xml=dir.xml dir.wim; then
+if ! wiminfo --extract-xml=dir.xml dir.wim; then
        error "Failed to extract WIM XML data"
 fi
 echo "Testing printing WIM metadata"
-if ! imagex info --metadata dir.wim > /dev/null; then
+if ! wimdir --detailed dir.wim > /dev/null; then
        error "Failed to print WIM metadata"
 fi
 rm -rf dir.wim tmp dir.xml
 
 echo "Testing capture of bootable WIM"
-if ! imagex capture dir dir.wim --boot; then
+if ! wimcapture dir dir.wim --boot; then
        error "Failed to capture bootable WIM"
 fi
-if ! test "`imagex info dir.wim | grep Boot | awk '{print $3}'`" = "1"; then
+if ! test "`wiminfo dir.wim | grep '^Boot Index' | awk '{print $3}'`" = "1"; then
        error "Boot flag on bootable WIM not set correctly"
 fi
 rm -rf dir.wim tmp
@@ -149,13 +149,13 @@ rm -rf dir.wim tmp
 # Integrity table
 
 echo "Testing capture of WIM with integrity table"
-if ! imagex capture dir dir.wim --check; then
+if ! wimcapture dir dir.wim --check; then
        error "Failed to capture WIM with integrity table"
 fi
-if ! test "`imagex info dir.wim | grep Integrity | awk '{print $3}'`" = "yes"; then
+if ! wiminfo dir.wim | grep -q Integrity; then
        error "Integrity table on WIM not made"
 fi
-if ! imagex apply --check dir.wim tmp; then
+if ! wimapply --check dir.wim tmp; then
        error "Integrity table on WIM not made correctly"
 fi
 if ! diff -q -r dir tmp; then
@@ -166,84 +166,84 @@ rm -rf dir.wim tmp
 # Appending and deleting images
 
 echo "Testing appending WIM image"
-imagex capture dir dir.wim
-if ! imagex append dir2 dir.wim; then
+wimcapture dir dir.wim
+if ! wimappend dir2 dir.wim; then
        error "Appending WIM image failed"
 fi
-if ! test "`imagex info dir.wim | grep 'Image Count' | awk '{print $3}'`" = 2; then
+if ! test "`wiminfo dir.wim | grep 'Image Count' | awk '{print $3}'`" = 2; then
        error "WIM image count not correct"
 fi
 
 echo "Testing appending WIM image with existing name (this should generate errors)"
-if imagex append dir2 dir.wim "dir"; then
+if wimappend dir2 dir.wim "dir"; then
        error "Adding duplicate image name didn't fail"
 fi
 echo "Testing appending WIM image with new name"
-if ! imagex append dir2 dir.wim "newname"; then
+if ! wimappend dir2 dir.wim "newname"; then
        error "Appending WIM image failed"
 fi
 echo "Testing appending WIM image with integrity check"
-if ! imagex append dir2 dir.wim "newname2" --check; then
+if ! wimappend dir2 dir.wim "newname2" --check; then
        error "Appending WIM image failed"
 fi
-if ! test "`imagex info dir.wim | grep Integrity | awk '{print $3}'`" = "yes"; then
+if ! wiminfo dir.wim | grep -q Integrity; then
        error "Integrity table not set correctly on image append"
 fi
 echo "Testing appending WIM image with no integrity check"
-if ! imagex append dir2 dir.wim "newname3" --nocheck; then
+if ! wimappend dir2 dir.wim "newname3" --nocheck; then
        error "Appending WIM image failed"
 fi
-if ! test "`imagex info dir.wim | grep Integrity | awk '{print $3}'`" = "no"; then
+if wiminfo dir.wim | grep -q Integrity; then
        error "WIM integrity table not removed"
 fi
 # 5 images at this point
-if ! test "`imagex info dir.wim | grep 'Image Count' | awk '{print $3}'`" = 5; then
+if ! test "`wiminfo dir.wim | grep 'Image Count' | awk '{print $3}'`" = 5; then
        error "WIM does not contain the expected 5 images"
 fi
 echo "Testing deleting first WIM image"
-if ! imagex delete dir.wim 1; then
+if ! wimdelete dir.wim 1; then
        error "Failed to delete WIM image"
 fi
-if ! test "`imagex info dir.wim | grep 'Image Count' | awk '{print $3}'`" = 4; then
+if ! test "`wiminfo dir.wim | grep 'Image Count' | awk '{print $3}'`" = 4; then
        error "WIM image not deleted correctly"
 fi
 echo "Testing deleting last WIM image"
-if ! imagex delete dir.wim 4; then
+if ! wimdelete dir.wim 4; then
        error "Failed to delete WIM image"
 fi
-if ! test "`imagex info dir.wim | grep 'Image Count' | awk '{print $3}'`" = 3; then
+if ! test "`wiminfo dir.wim | grep 'Image Count' | awk '{print $3}'`" = 3; then
        error "WIM image not deleted correctly"
 fi
 echo "Testing deleting invalid WIM image (this should generate errors)"
-if imagex delete dir.wim 4; then
+if wimdelete dir.wim 4; then
        error "Expected to fail to delete non-existent WIM image"
 fi
-if ! test "`imagex info dir.wim | grep 'Image Count' | awk '{print $3}'`" = 3; then
+if ! test "`wiminfo dir.wim | grep 'Image Count' | awk '{print $3}'`" = 3; then
        error "Image count changed even though we intentionally failed to delete an image"
 fi
 echo "Testing deleting all WIM images"
-if ! imagex delete dir.wim all; then
+if ! wimdelete dir.wim all; then
        error "Failed to delete all images from WIM"
 fi
-if ! test "`imagex info dir.wim | grep 'Image Count' | awk '{print $3}'`" = 0; then
+if ! test "`wiminfo dir.wim | grep 'Image Count' | awk '{print $3}'`" = 0; then
        error "Couldn't delete all WIM images correctly"
 fi
 echo "Testing appending directory to empty WIM and making it bootable"
-if ! imagex append dir dir.wim "myname" "mydesc" --check --boot; then
+if ! wimappend dir dir.wim "myname" "mydesc" --check --boot; then
        error "Couldn't append named, described, bootable image to empty WIM with integrity check"
 fi
-if ! test "`imagex info dir.wim | grep Integrity | awk '{print $3}'`" = "yes"; then
+if ! wiminfo dir.wim | grep -q Integrity; then
        error "Integrity check not found"
 fi
-if ! test "`imagex info dir.wim | grep Boot | awk '{print $3}'`" = "1"; then
+if ! test "`wiminfo dir.wim | grep '^Boot Index' | awk '{print $3}'`" = "1"; then
        error "Bootable image not set correctly"
 fi
 echo "Testing appending non-directory (should generate errors)"
-if imagex append dir.wim dir.wim; then
+if wimappend dir.wim dir.wim; then
        error "Incorrectly succeeded to append non-directory to WIM"
 fi
 echo "Testing appending non-existent file (should generate errors)"
-if imagex append SOME_NONEXISTENT_FILE dir.wim; then
+if wimappend SOME_NONEXISTENT_FILE dir.wim; then
        error "Incorrectly succeeded to append non-existent file to WIM"
 fi
 if [ `id -u` != 0 ]; then
@@ -251,7 +251,7 @@ if [ `id -u` != 0 ]; then
        mkdir -p dir3
        echo 1 > dir3/file
        chmod -r dir3/file
-       if imagex append dir3 dir.wim; then
+       if wimappend dir3 dir.wim; then
                error "Incorrectly succeeded in capturing directory with unreadable file"
        fi
 fi
@@ -260,48 +260,31 @@ rm -rf dir3 dir.wim
 # Applying multiple images, applying with hardlinks/symlinks
 
 echo "Testing application of multiple images"
-if ! imagex capture dir dir.wim; then
+if ! wimcapture dir dir.wim; then
        error "Failed to prepare test WIM"
 fi
-if ! imagex append dir dir.wim "myname"; then
+if ! wimappend dir dir.wim "myname"; then
        error "Failed to append image to test WIM"
 fi
-if ! imagex apply dir.wim all tmp; then
+if ! wimapply dir.wim all tmp; then
        error "Applying multiple images failed"
 fi
 if ! diff -q -r tmp/dir tmp/myname || ! diff -q -r dir tmp/dir; then
        error "Recursive diff of applied WIM with original directory failed"
 fi
-if test "`get_link_count tmp/dir/lz77.c`" != 1; then
+if test "`get_link_count tmp/dir/write.c`" != 1; then
        error "Incorrect link count on extracted file"
 fi
-if test "`get_link_count tmp/myname/lz77.c`" != 1; then
+if test "`get_link_count tmp/myname/write.c`" != 1; then
        error "Incorrect link count on extracted file"
 fi
-if test "`get_inode_number tmp/myname/lz77.c`" = "`get_inode_number tmp/dir/lz77.c`"; then
-       error "Incorrect inode number"
-fi
-rm -rf tmp
-echo "Testing application of multiple images with hardlinks"
-if ! imagex apply dir.wim all tmp --hardlink; then
-       error "Failed to apply multiple images with cross-image hardlinks"
-fi
-if ! diff -q -r tmp/dir tmp/myname || ! diff -q -r dir tmp/dir; then
-       error "Recursive diff of applied WIM with original directory failed"
-fi
-if test "`get_link_count tmp/dir/lz77.c`" != 2; then
-       error "Incorrect link count on extracted file"
-fi
-if test "`get_link_count tmp/myname/lz77.c`" != 2; then
-       error "Incorrect link count on extracted file"
-fi
-if test "`get_inode_number tmp/myname/lz77.c`" != "`get_inode_number tmp/dir/lz77.c`"; then
+if test "`get_inode_number tmp/myname/write.c`" = "`get_inode_number tmp/dir/write.c`"; then
        error "Incorrect inode number"
 fi
 rm -rf tmp
 
 echo "Testing application of single image containing identical files"
-if ! imagex apply dir.wim 1 tmp; then
+if ! wimapply dir.wim 1 tmp; then
        error "Failed to apply WIM"
 fi
 if test "`get_link_count tmp/subdir/hello`" != 2; then
@@ -318,44 +301,7 @@ if test "`get_inode_number tmp/subdir/hello`" != "`get_inode_number tmp/subdir/h
 fi
 rm -rf tmp
 
-echo "Testing application of single image containing identical files with hardlinks"
-if ! imagex apply dir.wim 1 tmp --hardlink; then
-       error "Failed to apply WIM"
-fi
-if test "`get_link_count tmp/subdir/hello`" != 3; then
-       error "Incorrect link count on extracted file"
-fi
-if test "`get_link_count tmp/subdir/hello2`" != 3; then
-       error "Incorrect link count on extracted file"
-fi
-if test "`get_inode_number tmp/subdir/hello`" != "`get_inode_number tmp/subdir/hello2`"; then
-       error "Hard link set does not share inode number"
-fi
-if test "`get_inode_number tmp/subdir/hello`" != "`get_inode_number tmp/subdir/hellolink`"; then
-       error "Hard link set does not share inode number"
-fi
-rm -rf tmp
-
-echo "Testing application of single image containing identical files with symlinks"
-if ! imagex apply dir.wim 1 tmp --symlink; then
-       error "Failed to apply WIM"
-fi
-if test "`get_link_count tmp/subdir/hello`" != 1; then
-       error "Incorrect link count on extracted file"
-fi
-if test "`get_link_count tmp/subdir/hello2`" != 1; then
-       error "Incorrect link count on extracted file"
-fi
-if test "`get_inode_number tmp/subdir/hello`" = "`get_inode_number tmp/subdir/hello2`"; then
-       error "Incorrect inode number"
-fi
-if ! test -L tmp/subdir/hello -o -L tmp/subdir/hello2 -o -L tmp/subdir/hellolink; then
-       error "Expected symlinks, but found non-symlinks"
-fi
-rm -rf dir.wim tmp
-
-
-# imagex split, imagex join
+# wimsplit, wimjoin
 
 echo "Creating random files to test WIM splitting on"
 mkdir tmp
@@ -364,39 +310,39 @@ for ((i = 0; i < 100; i++)); do
 done
 for flag in "--compress=none" "--compress=maximum" "--compress=fast"; do
        echo "Using flag $flag"
-       if ! imagex capture tmp tmp.wim $flag; then
+       if ! wimcapture tmp tmp.wim $flag; then
                error "Failed to capture test WIM"
        fi
        echo "Splitting WIM into 1 MiB chunks"
-       if ! imagex split tmp.wim tmp.swm 1; then
+       if ! wimsplit tmp.wim tmp.swm 1; then
                error "Failed to split WIM"
        fi
        echo "Verifying the split WIMs (some errors expected)"
-       if test "`imagex info tmp.swm | grep 'Part Number' | awk '{print $3}'`" != "1/4"; then
+       if test "`wiminfo tmp.swm | grep 'Part Number' | awk '{print $3}'`" != "1/4"; then
                error "Part number of split WIM not correct"
        fi
-       if ! imagex dir tmp.swm > /dev/null; then
+       if ! wimdir tmp.swm > /dev/null; then
                error "Failed to list files in split WIM"
        fi
        if ! test -e tmp2.swm; then
                error "Could not find split-WIM part 2"
        fi
-       if imagex dir tmp2.swm > /dev/null; then
+       if wimdir tmp2.swm > /dev/null; then
                error "Listed files in part 2 of split WIM (this should have failed)"
        fi
 
        # Unsupported, should fail
-       if imagex info tmp.swm --boot 1; then
+       if wiminfo tmp.swm --boot 1; then
                error "Should not have been able to change boot index of split WIM"
        fi
        echo "Joining the split WIMs and applying the result"
-       if ! imagex join tmp2.wim tmp*.wim; then
+       if ! wimjoin tmp2.wim tmp*.wim; then
                error "Failed to join split WIMs"
        fi
-       if ! imagex apply tmp2.wim tmp2; then
+       if ! wimapply tmp2.wim tmp2; then
                error "Failed to apply joined split WIM"
        fi
-       if ! imagex apply tmp.wim tmp3; then
+       if ! wimapply tmp.wim tmp3; then
                error "Failed to apply test WIM"
        fi
        if ! diff -q -r tmp tmp2 || ! diff -q -r tmp tmp3; then
@@ -407,64 +353,64 @@ for flag in "--compress=none" "--compress=maximum" "--compress=fast"; do
 done
 rm -rf tmp
 
-# imagex export
+# wimexport
 echo "Testing export of single image to new WIM"
-if ! imagex capture dir dir.wim; then
+if ! wimcapture dir dir.wim; then
        error "Failed to capture test WIM"
 fi
-if ! imagex append dir2 dir.wim; then
+if ! wimappend dir2 dir.wim; then
        error "Failed to append image to test WIM"
 fi
-if ! imagex export dir.wim dir new.wim; then
+if ! wimexport dir.wim dir new.wim; then
        error "Failed to export single image to new WIM"
 fi
-if test "`imagex info new.wim | grep 'Image Count' | awk '{print $3}'`" != 1; then
+if test "`wiminfo new.wim | grep 'Image Count' | awk '{print $3}'`" != 1; then
        error "Exporting single image to new WIM wasn't done correctly"
 fi
 echo "Testing export of single image to existing WIM"
-if ! imagex export dir.wim dir2 new.wim; then
+if ! wimexport dir.wim dir2 new.wim; then
        error "Failed to export single image to existing WIM"
 fi
-if test "`imagex info new.wim | grep 'Image Count' | awk '{print $3}'`" != 2; then
+if test "`wiminfo new.wim | grep 'Image Count' | awk '{print $3}'`" != 2; then
        error "Exporting single image to existing WIM wasn't done correctly"
 fi
 echo "Testing export of single image to existing WIM using wrong compression type"
-if imagex export dir.wim dir2 new.wim newname --compress=xpress; then
+if wimexport dir.wim dir2 new.wim newname --compress=xpress; then
        error "Successfully exported image using wrong compression type"
 fi
 rm -f new.wim
 echo "Testing export of multiple images to new WIM"
-if ! imagex export dir.wim all new.wim; then
+if ! wimexport dir.wim all new.wim; then
        error "Failed to export multiple images to new WIM"
 fi
-if test "`imagex info new.wim | grep 'Image Count' | awk '{print $3}'`" != 2; then
+if test "`wiminfo new.wim | grep 'Image Count' | awk '{print $3}'`" != 2; then
        error "Exporting multiple images to new WIM wasn't done correctly"
 fi
-if ! imagex capture dir2 new.wim newname; then
+if ! wimcapture dir2 new.wim newname; then
        error "Failed to capture test WIM"
 fi
 echo "Testing export of multiple images to existing WIM"
-if ! imagex export dir.wim all new.wim; then
+if ! wimexport dir.wim all new.wim; then
        error "Failed to export multiple images to existing WIM"
 fi
 echo "Testing export of multiple images to existing WIM with --boot"
-if ! imagex capture dir2 new.wim newname; then
+if ! wimcapture dir2 new.wim newname; then
        error "Failed to capture test WIM"
 fi
-if ! imagex info dir.wim --boot 1; then
+if ! wiminfo dir.wim --boot 1; then
        error "Failed to set boot index on test WIM"
 fi
-if ! imagex export dir.wim all new.wim --boot; then
+if ! wimexport dir.wim all new.wim --boot; then
        error "Failed to export multiple images to existing WIM with bootable image"
 fi
 echo "Testing export of multiple images to existing WIM with --boot, but no bootable image (errors expected)"
-if ! imagex capture dir2 new.wim newname; then
+if ! wimcapture dir2 new.wim newname; then
        error "Failed to capture test WIM"
 fi
-if ! imagex info dir.wim --boot 0; then
+if ! wiminfo dir.wim --boot 0; then
        error "Failed to clear boot index on test WIM"
 fi
-if imagex export dir.wim all new.wim --boot; then
+if wimexport dir.wim all new.wim --boot; then
        error "Successfully exported multiple images with --boot but with no bootable images"
 fi
 
@@ -496,11 +442,11 @@ for i in 1 2 3 4 5; do
        esac
        echo "Testing exporting then applying an image (\"$cflag1\" => \"$cflag2\")"
        rm -rf dir.wim new.wim tmp tmp2
-       imagex capture dir dir.wim $cflag1
-       imagex capture dir2 dir2.wim $cflag2
-       imagex export dir.wim dir dir2.wim
-       imagex apply dir.wim dir tmp
-       if ! imagex apply dir2.wim dir tmp2; then
+       wimcapture dir dir.wim $cflag1
+       wimcapture dir2 dir2.wim $cflag2
+       wimexport dir.wim dir dir2.wim
+       wimapply dir.wim dir tmp
+       if ! wimapply dir2.wim dir tmp2; then
                error "Failed to apply image that was exported to a WIM"
        fi
        if ! diff -r tmp tmp2; then
@@ -509,7 +455,7 @@ for i in 1 2 3 4 5; do
 done
 
 echo "**********************************************************"
-echo "                 Basic imagex tests passed                "
+echo "             Basic wimlib-imagex tests passed             "
 echo "**********************************************************"
 
 # Leave test subdirectory and cleanup