1#!/bin/sh 2 3############################################################################### 4# 5# Author: Lasse Collin 6# 7# This file has been put into the public domain. 8# You can do whatever you want with this file. 9# 10############################################################################### 11 12# If xz wasn't built, this test is skipped. 13if test -x ../src/xz/xz ; then 14 : 15else 16 (exit 77) 17 exit 77 18fi 19 20# Find out if our shell supports functions. 21eval 'unset foo ; foo() { return 42; } ; foo' 22if test $? != 42 ; then 23 echo "/bin/sh doesn't support functions, skipping this test." 24 (exit 77) 25 exit 77 26fi 27 28test_xz() { 29 if $XZ -c "$@" "$FILE" > tmp_compressed; then 30 : 31 else 32 echo "Compressing failed: $* $FILE" 33 (exit 1) 34 exit 1 35 fi 36 37 if $XZ -cd tmp_compressed > tmp_uncompressed ; then 38 : 39 else 40 echo "Decompressing failed: $* $FILE" 41 (exit 1) 42 exit 1 43 fi 44 45 if cmp tmp_uncompressed "$FILE" ; then 46 : 47 else 48 echo "Decompressed file does not match" \ 49 "the original: $* $FILE" 50 (exit 1) 51 exit 1 52 fi 53 54 if test -n "$XZDEC" ; then 55 if $XZDEC tmp_compressed > tmp_uncompressed ; then 56 : 57 else 58 echo "Decompressing failed: $* $FILE" 59 (exit 1) 60 exit 1 61 fi 62 63 if cmp tmp_uncompressed "$FILE" ; then 64 : 65 else 66 echo "Decompressed file does not match" \ 67 "the original: $* $FILE" 68 (exit 1) 69 exit 1 70 fi 71 fi 72 73 # Show progress: 74 echo . | tr -d '\n\r' 75} 76 77XZ="../src/xz/xz --memlimit-compress=48MiB --memlimit-decompress=5MiB \ 78 --no-adjust --threads=1 --check=crc64" 79XZDEC="../src/xzdec/xzdec" # No memory usage limiter available 80test -x ../src/xzdec/xzdec || XZDEC= 81 82# Create the required input files. 83if ./create_compress_files ; then 84 : 85else 86 rm -f compress_* 87 echo "Failed to create files to test compression." 88 (exit 1) 89 exit 1 90fi 91 92# Remove temporary now (in case they are something weird), and on exit. 93rm -f tmp_compressed tmp_uncompressed 94trap 'rm -f tmp_compressed tmp_uncompressed' 0 95 96# Compress and decompress each file with various filter configurations. 97# This takes quite a bit of time. 98echo "test_compress.sh:" 99for FILE in compress_generated_* "$srcdir"/compress_prepared_* 100do 101 MSG=`echo "x$FILE" | sed 's,^x,,; s,^.*/,,; s,^compress_,,'` 102 echo " $MSG" | tr -d '\n\r' 103 104 # Don't test with empty arguments; it breaks some ancient 105 # proprietary /bin/sh versions due to $@ used in test_xz(). 106 test_xz -1 107 test_xz -2 108 test_xz -3 109 test_xz -4 110 111 # Disabled until Subblock format is stable. 112# --subblock \ 113# --subblock=size=1 \ 114# --subblock=size=1,rle=1 \ 115# --subblock=size=1,rle=4 \ 116# --subblock=size=4,rle=4 \ 117# --subblock=size=8,rle=4 \ 118# --subblock=size=8,rle=8 \ 119# --subblock=size=4096,rle=12 \ 120# 121 for ARGS in \ 122 --delta=dist=1 \ 123 --delta=dist=4 \ 124 --delta=dist=256 \ 125 --x86 \ 126 --powerpc \ 127 --ia64 \ 128 --arm \ 129 --armthumb \ 130 --sparc 131 do 132 test_xz $ARGS --lzma2=dict=64KiB,nice=32,mode=fast 133 134 # Disabled until Subblock format is stable. 135 # test_xz --subblock $ARGS --lzma2=dict=64KiB,nice=32,mode=fast 136 done 137 138 echo 139done 140 141(exit 0) 142exit 0 143