xref: /netbsd-src/external/bsd/zstd/dist/tests/test-variants.sh (revision 3117ece4fc4a4ca4489ba793710b60b0d26bab6c)
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