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