xref: /aosp_15_r20/external/zstd/tests/test-variants.sh (revision 01826a4963a0d8a59bc3812d29bdf0fb76416722)
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