1*01826a49SYabin Cui#!/bin/sh 2*01826a49SYabin Cuiset -e 3*01826a49SYabin Cuiset -u 4*01826a49SYabin Cuiset -x 5*01826a49SYabin Cui 6*01826a49SYabin Cui 7*01826a49SYabin CuiSCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) 8*01826a49SYabin CuiPROG_DIR="$SCRIPT_DIR/../programs" 9*01826a49SYabin Cui 10*01826a49SYabin CuiZSTD="$PROG_DIR/zstd" 11*01826a49SYabin CuiZSTD_COMPRESS="$PROG_DIR/zstd-compress" 12*01826a49SYabin CuiZSTD_DECOMPRESS="$PROG_DIR/zstd-decompress" 13*01826a49SYabin CuiZSTD_NOLEGACY="$PROG_DIR/zstd-nolegacy" 14*01826a49SYabin CuiZSTD_DICTBUILDER="$PROG_DIR/zstd-dictBuilder" 15*01826a49SYabin CuiZSTD_FRUGAL="$PROG_DIR/zstd-frugal" 16*01826a49SYabin CuiZSTD_NOMT="$PROG_DIR/zstd-nomt" 17*01826a49SYabin Cui 18*01826a49SYabin Cuiprintln() { 19*01826a49SYabin Cui printf '%b\n' "${*}" 20*01826a49SYabin Cui} 21*01826a49SYabin Cui 22*01826a49SYabin Cuidie() { 23*01826a49SYabin Cui println "$@" 1>&2 24*01826a49SYabin Cui exit 1 25*01826a49SYabin Cui} 26*01826a49SYabin Cui 27*01826a49SYabin Cuisymbol_present() { 28*01826a49SYabin Cui (nm $1 || echo "symbol_present $@ failed") | grep $2 29*01826a49SYabin Cui} 30*01826a49SYabin Cui 31*01826a49SYabin Cuisymbol_not_present() { 32*01826a49SYabin Cui symbol_present $@ && die "Binary '$1' mistakenly contains symbol '$2'" ||: 33*01826a49SYabin Cui} 34*01826a49SYabin Cui 35*01826a49SYabin Cuicompress_not_present() { 36*01826a49SYabin Cui symbol_not_present "$1" ZSTD_compress 37*01826a49SYabin Cui} 38*01826a49SYabin Cui 39*01826a49SYabin Cuidecompress_not_present() { 40*01826a49SYabin Cui symbol_not_present "$1" ZSTD_decompress 41*01826a49SYabin Cui} 42*01826a49SYabin Cui 43*01826a49SYabin Cuidict_not_present() { 44*01826a49SYabin Cui symbol_not_present "$1" ZDICT_ 45*01826a49SYabin Cui symbol_not_present "$1" COVER_ 46*01826a49SYabin Cui} 47*01826a49SYabin Cui 48*01826a49SYabin Cuicliextra_not_present() { 49*01826a49SYabin Cui symbol_not_present "$1" TRACE_ 50*01826a49SYabin Cui symbol_not_present "$1" BMK_ 51*01826a49SYabin Cui} 52*01826a49SYabin Cui 53*01826a49SYabin Cuilegacy_not_present() { 54*01826a49SYabin Cui symbol_not_present "$1" ZSTDv0 55*01826a49SYabin Cui} 56*01826a49SYabin Cui 57*01826a49SYabin Cuitest_help() { 58*01826a49SYabin Cui "$1" --help | grep -- "$2" 59*01826a49SYabin Cui} 60*01826a49SYabin Cui 61*01826a49SYabin Cuitest_no_help() { 62*01826a49SYabin Cui test_help $@ && die "'$1' supports '$2' when it shouldn't" ||: 63*01826a49SYabin Cui} 64*01826a49SYabin Cui 65*01826a49SYabin Cuiextras_not_present() { 66*01826a49SYabin Cui dict_not_present $@ 67*01826a49SYabin Cui legacy_not_present $@ 68*01826a49SYabin Cui cliextra_not_present $@ 69*01826a49SYabin Cui test_no_help $@ "--train" 70*01826a49SYabin Cui test_no_help $@ "-b#" 71*01826a49SYabin Cui} 72*01826a49SYabin Cui 73*01826a49SYabin Cuitest_compress() { 74*01826a49SYabin Cui echo "hello" | "$1" | "$ZSTD" -t 75*01826a49SYabin Cui} 76*01826a49SYabin Cui 77*01826a49SYabin Cuitest_decompress() { 78*01826a49SYabin Cui echo "hello" | "$ZSTD" | "$1" -t 79*01826a49SYabin Cui} 80*01826a49SYabin Cui 81*01826a49SYabin Cuitest_zstd() { 82*01826a49SYabin Cui test_compress $@ 83*01826a49SYabin Cui test_decompress $@ 84*01826a49SYabin Cui} 85*01826a49SYabin Cui 86*01826a49SYabin Cuiextras_not_present "$ZSTD_FRUGAL" 87*01826a49SYabin Cuiextras_not_present "$ZSTD_COMPRESS" 88*01826a49SYabin Cuiextras_not_present "$ZSTD_DECOMPRESS" 89*01826a49SYabin Cui 90*01826a49SYabin Cuicompress_not_present "$ZSTD_DECOMPRESS" 91*01826a49SYabin Cui 92*01826a49SYabin Cuidecompress_not_present "$ZSTD_COMPRESS" 93*01826a49SYabin Cuidecompress_not_present "$ZSTD_DICTBUILDER" 94*01826a49SYabin Cui 95*01826a49SYabin Cuicliextra_not_present "$ZSTD_DICTBUILDER" 96*01826a49SYabin Cui 97*01826a49SYabin Cuilegacy_not_present "$ZSTD_DICTBUILDER" 98*01826a49SYabin Cuilegacy_not_present "$ZSTD_NOLEGACY" 99*01826a49SYabin Cui 100*01826a49SYabin Cuisymbol_not_present "$ZSTD" ZSTDv01 101*01826a49SYabin Cuisymbol_not_present "$ZSTD" ZSTDv02 102*01826a49SYabin Cuisymbol_not_present "$ZSTD" ZSTDv03 103*01826a49SYabin Cuisymbol_not_present "$ZSTD" ZSTDv04 104*01826a49SYabin Cui 105*01826a49SYabin Cuitest_compress "$ZSTD_COMPRESS" 106*01826a49SYabin Cuitest_decompress "$ZSTD_DECOMPRESS" 107*01826a49SYabin Cui 108*01826a49SYabin Cuitest_zstd "$ZSTD_FRUGAL" 109*01826a49SYabin Cuitest_zstd "$ZSTD_NOLEGACY" 110*01826a49SYabin Cui 111*01826a49SYabin Cuitest_help "$ZSTD" '-b#' 112*01826a49SYabin Cuitest_help "$ZSTD" --train 113*01826a49SYabin Cuitest_help "$ZSTD_DICTBUILDER" --train 114*01826a49SYabin Cui 115*01826a49SYabin Cuiprintln "Success!" 116