]> wimlib.net Git - wimlib/blobdiff - tests/test-imagex-capture_and_apply
wimoptimize: Add --no-pack-streams option
[wimlib] / tests / test-imagex-capture_and_apply
index 90145e3054c51c996c3925db54a86a4c4ae5a4c7..105d0f3955bc22d4be247a47786a8454bf68dd05 100755 (executable)
@@ -53,7 +53,10 @@ do_test() {
 
                # Can we split the WIM, apply the split WIM, join the split WIM,
                # and apply the joined WIM, and get the same results every time?
-               if ! imagex split test.wim test.swm 0.01; then
+               #
+               # LC_ALL=C avoids locale-dependent floating point number
+               # parsing.
+               if ! LC_ALL=C imagex split test.wim test.swm 0.01; then
                        error "Failed to split WIM"
                fi
                if ! imagex apply test.swm 1 out.dir --ref "test*.swm" ; then
@@ -81,6 +84,41 @@ do_test() {
                        error "Failed to apply exported WIM image"
                fi
                do_tree_cmp
+               rm -rf out.dir/*
+
+               # Try pipable WIM (don't bother testing all compression types
+               # though, it shouldn't make a difference).
+               if [ "$ctype" = "None" ]; then
+                       # Capture pipable WIM (not writing to pipe)
+                       if ! imagex capture in.dir test.wim \
+                                       --compress=$ctype --norpfix --pipable; then
+                               error "Failed to capture directory tree into a pipable WIM"
+                       fi
+
+                       # Apply pipable WIM (reading from pipe)
+                       if ! cat test.wim | imagex apply - 1 out.dir; then
+                               error "Failed to apply pipable WIM to directory (from pipe)"
+                       fi
+                       do_tree_cmp
+                       rm -rf out.dir/*
+
+                       # Apply pipable WIM (not reading from pipe)
+                       if ! imagex apply test.wim 1 out.dir; then
+                               error "Failed to apply pipable WIM to directory (not from pipe)"
+                       fi
+                       do_tree_cmp
+                       rm -rf out.dir/*
+
+                       # Capture pipable WIM (writing to pipe) and read pipable
+                       # WIM (reading from pipe)
+                       if ! imagex_raw capture --pipable --compress=$ctype \
+                                               --norpfix --pipable         \
+                                           in.dir - | imagex apply - 1 out.dir; then
+                               error "Failed to capture directory tree into a pipable WIM"
+                       fi
+                       do_tree_cmp
+                       rm -rf out.dir/*
+               fi
 
                rm -rf out.dir/* in.dir/* test.wim test*.swm
 
@@ -153,6 +191,7 @@ then
 fi
 
 # Make sure source list mode is working as expected
+__msg "Testing source list capture mode"
 rm -rf in.dir out.dir
 mkdir in.dir
 echo 1 > in.dir/1
@@ -189,7 +228,38 @@ imagex capture srclist --source-list test.wim
 imagex apply test.wim out.dir
 if [[ ! -f out.dir/5 || ! -f out.dir/1 || ! -f out.dir/1link || \
       ! -f out.dir/otherdir/A || ! -f out.dir/otherdir/B ]]; then
-       error "source list capture (with quoted names and overlay) failed to work as expected"
+       error "source list capture (with quoted names and basic overlay) failed to work as expected"
+fi
+
+# Try deep overlay
+rm -rf in.dir out.dir "overlay dir 1" "overlay dir 2"
+mkdir -p in.dir.1/subdir/subdir2 in.dir.2/subdir/subdir2
+cat > srclist << EOF
+in.dir.1       /
+in.dir.2       /
+EOF
+echo 1 > in.dir.1/subdir/1
+echo 2 > in.dir.2/subdir/2
+echo 3 > in.dir.1/subdir/subdir2/3
+echo 4 > in.dir.2/subdir/subdir2/4
+imagex capture srclist --source-list test.wim
+imagex apply test.wim out.dir
+if [[ ! -f out.dir/subdir/1 || ! -f out.dir/subdir/2 ||        \
+       ! -f out.dir/subdir/subdir2/3 || ! -f out.dir/subdir/subdir2/4 ]]; then
+       error "source list capture (with deep overlay) failed to work as expected"
+fi
+
+# Try bad overlay
+__msg "Testing bad overlay (errors expected)"
+rm -rf out.dir
+echo 5 > 5
+cat > srclist << EOF
+in.dir.1       /
+in.dir.2       /
+5              /subdir
+EOF
+if imagex capture srclist --source-list test.wim; then
+       error "unexpected success in bad overlay with --source-list!"
 fi
 
 echo "**********************************************************"