#!/bin/sh set -e set -u set -x SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) PROG_DIR="$SCRIPT_DIR/../programs" ZSTD="$PROG_DIR/zstd" ZSTD_COMPRESS="$PROG_DIR/zstd-compress" ZSTD_DECOMPRESS="$PROG_DIR/zstd-decompress" ZSTD_NOLEGACY="$PROG_DIR/zstd-nolegacy" ZSTD_DICTBUILDER="$PROG_DIR/zstd-dictBuilder" ZSTD_FRUGAL="$PROG_DIR/zstd-frugal" ZSTD_NOMT="$PROG_DIR/zstd-nomt" println() { printf '%b\n' "${*}" } die() { println "$@" 1>&2 exit 1 } symbol_present() { (nm $1 || echo "symbol_present $@ failed") | grep $2 } symbol_not_present() { symbol_present $@ && die "Binary '$1' mistakenly contains symbol '$2'" ||: } compress_not_present() { symbol_not_present "$1" ZSTD_compress } decompress_not_present() { symbol_not_present "$1" ZSTD_decompress } dict_not_present() { symbol_not_present "$1" ZDICT_ symbol_not_present "$1" COVER_ } cliextra_not_present() { symbol_not_present "$1" TRACE_ symbol_not_present "$1" BMK_ } legacy_not_present() { symbol_not_present "$1" ZSTDv0 } test_help() { "$1" --help | grep -- "$2" } test_no_help() { test_help $@ && die "'$1' supports '$2' when it shouldn't" ||: } extras_not_present() { dict_not_present $@ legacy_not_present $@ cliextra_not_present $@ test_no_help $@ "--train" test_no_help $@ "-b#" } test_compress() { echo "hello" | "$1" | "$ZSTD" -t } test_decompress() { echo "hello" | "$ZSTD" | "$1" -t } test_zstd() { test_compress $@ test_decompress $@ } extras_not_present "$ZSTD_FRUGAL" extras_not_present "$ZSTD_COMPRESS" extras_not_present "$ZSTD_DECOMPRESS" compress_not_present "$ZSTD_DECOMPRESS" decompress_not_present "$ZSTD_COMPRESS" decompress_not_present "$ZSTD_DICTBUILDER" cliextra_not_present "$ZSTD_DICTBUILDER" legacy_not_present "$ZSTD_DICTBUILDER" legacy_not_present "$ZSTD_NOLEGACY" symbol_not_present "$ZSTD" ZSTDv01 symbol_not_present "$ZSTD" ZSTDv02 symbol_not_present "$ZSTD" ZSTDv03 symbol_not_present "$ZSTD" ZSTDv04 test_compress "$ZSTD_COMPRESS" test_decompress "$ZSTD_DECOMPRESS" test_zstd "$ZSTD_FRUGAL" test_zstd "$ZSTD_NOLEGACY" test_help "$ZSTD" '-b#' test_help "$ZSTD" --train test_help "$ZSTD_DICTBUILDER" --train println "Success!"