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