| #!/bin/sh |
| |
| ############################################################################### |
| # |
| # Author: Lasse Collin |
| # |
| # This file has been put into the public domain. |
| # You can do whatever you want with this file. |
| # |
| ############################################################################### |
| |
| # If xz wasn't built, this test is skipped. |
| if test -x ../src/xz/xz ; then |
| : |
| else |
| (exit 77) |
| exit 77 |
| fi |
| |
| # Find out if our shell supports functions. |
| eval 'unset foo ; foo() { return 42; } ; foo' |
| if test $? != 42 ; then |
| echo "/bin/sh doesn't support functions, skipping this test." |
| (exit 77) |
| exit 77 |
| fi |
| |
| test_xz() { |
| if $XZ -c "$@" "$FILE" > tmp_compressed; then |
| : |
| else |
| echo "Compressing failed: $* $FILE" |
| (exit 1) |
| exit 1 |
| fi |
| |
| if $XZ -cd tmp_compressed > tmp_uncompressed ; then |
| : |
| else |
| echo "Decompressing failed: $* $FILE" |
| (exit 1) |
| exit 1 |
| fi |
| |
| if cmp tmp_uncompressed "$FILE" ; then |
| : |
| else |
| echo "Decompressed file does not match" \ |
| "the original: $* $FILE" |
| (exit 1) |
| exit 1 |
| fi |
| |
| if test -n "$XZDEC" ; then |
| if $XZDEC tmp_compressed > tmp_uncompressed ; then |
| : |
| else |
| echo "Decompressing failed: $* $FILE" |
| (exit 1) |
| exit 1 |
| fi |
| |
| if cmp tmp_uncompressed "$FILE" ; then |
| : |
| else |
| echo "Decompressed file does not match" \ |
| "the original: $* $FILE" |
| (exit 1) |
| exit 1 |
| fi |
| fi |
| |
| # Show progress: |
| echo . | tr -d '\n\r' |
| } |
| |
| XZ="../src/xz/xz --memlimit-compress=48MiB --memlimit-decompress=5MiB \ |
| --no-adjust --threads=1 --check=crc64" |
| XZDEC="../src/xzdec/xzdec" # No memory usage limiter available |
| test -x ../src/xzdec/xzdec || XZDEC= |
| |
| # Create the required input files. |
| if ./create_compress_files ; then |
| : |
| else |
| rm -f compress_* |
| echo "Failed to create files to test compression." |
| (exit 1) |
| exit 1 |
| fi |
| |
| # Remove temporary now (in case they are something weird), and on exit. |
| rm -f tmp_compressed tmp_uncompressed |
| trap 'rm -f tmp_compressed tmp_uncompressed' 0 |
| |
| # Compress and decompress each file with various filter configurations. |
| # This takes quite a bit of time. |
| echo "test_compress.sh:" |
| for FILE in compress_generated_* "$srcdir"/compress_prepared_* |
| do |
| MSG=`echo "x$FILE" | sed 's,^x,,; s,^.*/,,; s,^compress_,,'` |
| echo " $MSG" | tr -d '\n\r' |
| |
| # Don't test with empty arguments; it breaks some ancient |
| # proprietary /bin/sh versions due to $@ used in test_xz(). |
| test_xz -1 |
| test_xz -2 |
| test_xz -3 |
| test_xz -4 |
| |
| # Disabled until Subblock format is stable. |
| # --subblock \ |
| # --subblock=size=1 \ |
| # --subblock=size=1,rle=1 \ |
| # --subblock=size=1,rle=4 \ |
| # --subblock=size=4,rle=4 \ |
| # --subblock=size=8,rle=4 \ |
| # --subblock=size=8,rle=8 \ |
| # --subblock=size=4096,rle=12 \ |
| # |
| for ARGS in \ |
| --delta=dist=1 \ |
| --delta=dist=4 \ |
| --delta=dist=256 \ |
| --x86 \ |
| --powerpc \ |
| --ia64 \ |
| --arm \ |
| --armthumb \ |
| --sparc |
| do |
| test_xz $ARGS --lzma2=dict=64KiB,nice=32,mode=fast |
| |
| # Disabled until Subblock format is stable. |
| # test_xz --subblock $ARGS --lzma2=dict=64KiB,nice=32,mode=fast |
| done |
| |
| echo |
| done |
| |
| (exit 0) |
| exit 0 |