1*3117ece4Schristos#!/bin/sh 2*3117ece4Schristosset -e 3*3117ece4Schristosset -u 4*3117ece4Schristosset -x 5*3117ece4Schristos 6*3117ece4Schristos 7*3117ece4SchristosSCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) 8*3117ece4SchristosPROG_DIR="$SCRIPT_DIR/../programs" 9*3117ece4Schristos 10*3117ece4SchristosZSTD="$PROG_DIR/zstd" 11*3117ece4SchristosZSTD_COMPRESS="$PROG_DIR/zstd-compress" 12*3117ece4SchristosZSTD_DECOMPRESS="$PROG_DIR/zstd-decompress" 13*3117ece4SchristosZSTD_NOLEGACY="$PROG_DIR/zstd-nolegacy" 14*3117ece4SchristosZSTD_DICTBUILDER="$PROG_DIR/zstd-dictBuilder" 15*3117ece4SchristosZSTD_FRUGAL="$PROG_DIR/zstd-frugal" 16*3117ece4SchristosZSTD_NOMT="$PROG_DIR/zstd-nomt" 17*3117ece4Schristos 18*3117ece4Schristosprintln() { 19*3117ece4Schristos printf '%b\n' "${*}" 20*3117ece4Schristos} 21*3117ece4Schristos 22*3117ece4Schristosdie() { 23*3117ece4Schristos println "$@" 1>&2 24*3117ece4Schristos exit 1 25*3117ece4Schristos} 26*3117ece4Schristos 27*3117ece4Schristossymbol_present() { 28*3117ece4Schristos (nm $1 || echo "symbol_present $@ failed") | grep $2 29*3117ece4Schristos} 30*3117ece4Schristos 31*3117ece4Schristossymbol_not_present() { 32*3117ece4Schristos symbol_present $@ && die "Binary '$1' mistakenly contains symbol '$2'" ||: 33*3117ece4Schristos} 34*3117ece4Schristos 35*3117ece4Schristoscompress_not_present() { 36*3117ece4Schristos symbol_not_present "$1" ZSTD_compress 37*3117ece4Schristos} 38*3117ece4Schristos 39*3117ece4Schristosdecompress_not_present() { 40*3117ece4Schristos symbol_not_present "$1" ZSTD_decompress 41*3117ece4Schristos} 42*3117ece4Schristos 43*3117ece4Schristosdict_not_present() { 44*3117ece4Schristos symbol_not_present "$1" ZDICT_ 45*3117ece4Schristos symbol_not_present "$1" COVER_ 46*3117ece4Schristos} 47*3117ece4Schristos 48*3117ece4Schristoscliextra_not_present() { 49*3117ece4Schristos symbol_not_present "$1" TRACE_ 50*3117ece4Schristos symbol_not_present "$1" BMK_ 51*3117ece4Schristos} 52*3117ece4Schristos 53*3117ece4Schristoslegacy_not_present() { 54*3117ece4Schristos symbol_not_present "$1" ZSTDv0 55*3117ece4Schristos} 56*3117ece4Schristos 57*3117ece4Schristostest_help() { 58*3117ece4Schristos "$1" --help | grep -- "$2" 59*3117ece4Schristos} 60*3117ece4Schristos 61*3117ece4Schristostest_no_help() { 62*3117ece4Schristos test_help $@ && die "'$1' supports '$2' when it shouldn't" ||: 63*3117ece4Schristos} 64*3117ece4Schristos 65*3117ece4Schristosextras_not_present() { 66*3117ece4Schristos dict_not_present $@ 67*3117ece4Schristos legacy_not_present $@ 68*3117ece4Schristos cliextra_not_present $@ 69*3117ece4Schristos test_no_help $@ "--train" 70*3117ece4Schristos test_no_help $@ "-b#" 71*3117ece4Schristos} 72*3117ece4Schristos 73*3117ece4Schristostest_compress() { 74*3117ece4Schristos echo "hello" | "$1" | "$ZSTD" -t 75*3117ece4Schristos} 76*3117ece4Schristos 77*3117ece4Schristostest_decompress() { 78*3117ece4Schristos echo "hello" | "$ZSTD" | "$1" -t 79*3117ece4Schristos} 80*3117ece4Schristos 81*3117ece4Schristostest_zstd() { 82*3117ece4Schristos test_compress $@ 83*3117ece4Schristos test_decompress $@ 84*3117ece4Schristos} 85*3117ece4Schristos 86*3117ece4Schristosextras_not_present "$ZSTD_FRUGAL" 87*3117ece4Schristosextras_not_present "$ZSTD_COMPRESS" 88*3117ece4Schristosextras_not_present "$ZSTD_DECOMPRESS" 89*3117ece4Schristos 90*3117ece4Schristoscompress_not_present "$ZSTD_DECOMPRESS" 91*3117ece4Schristos 92*3117ece4Schristosdecompress_not_present "$ZSTD_COMPRESS" 93*3117ece4Schristosdecompress_not_present "$ZSTD_DICTBUILDER" 94*3117ece4Schristos 95*3117ece4Schristoscliextra_not_present "$ZSTD_DICTBUILDER" 96*3117ece4Schristos 97*3117ece4Schristoslegacy_not_present "$ZSTD_DICTBUILDER" 98*3117ece4Schristoslegacy_not_present "$ZSTD_NOLEGACY" 99*3117ece4Schristos 100*3117ece4Schristossymbol_not_present "$ZSTD" ZSTDv01 101*3117ece4Schristossymbol_not_present "$ZSTD" ZSTDv02 102*3117ece4Schristossymbol_not_present "$ZSTD" ZSTDv03 103*3117ece4Schristossymbol_not_present "$ZSTD" ZSTDv04 104*3117ece4Schristos 105*3117ece4Schristostest_compress "$ZSTD_COMPRESS" 106*3117ece4Schristostest_decompress "$ZSTD_DECOMPRESS" 107*3117ece4Schristos 108*3117ece4Schristostest_zstd "$ZSTD_FRUGAL" 109*3117ece4Schristostest_zstd "$ZSTD_NOLEGACY" 110*3117ece4Schristos 111*3117ece4Schristostest_help "$ZSTD" '-b#' 112*3117ece4Schristostest_help "$ZSTD" --train 113*3117ece4Schristostest_help "$ZSTD_DICTBUILDER" --train 114*3117ece4Schristos 115*3117ece4Schristosprintln "Success!" 116