Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion programs/zstdless
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@
#!/bin/sh
zstdcat "$@" | less

zstd=${ZSTD:-zstd}

# TODO: Address quirks and bugs tied to old versions of less, provide a mechanism to pass flags directly to zstd

export LESSOPEN="|-${zstd} -cdfq %s"
exec less "$@"
12 changes: 9 additions & 3 deletions tests/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ list:

.PHONY: shortest
shortest: ZSTDRTTEST= # remove long tests
shortest: test-zstd
shortest: test-zstd test-zstdtools

.PHONY: check
check: shortest
Expand All @@ -297,7 +297,7 @@ check: shortest
fuzztest: test-fuzzer test-zstream test-decodecorpus

.PHONY: test
test: test-zstd test-fullbench test-fuzzer test-zstream test-invalidDictionaries test-legacy test-decodecorpus
test: test-zstd test-zstdtools test-fullbench test-fuzzer test-zstream test-invalidDictionaries test-legacy test-decodecorpus
ifeq ($(QEMU_SYS),)
test: test-pool
endif
Expand All @@ -308,7 +308,7 @@ test32: test-zstd32 test-fullbench32 test-fuzzer32 test-zstream32
.PHONY: test-all
test-all: test test32 valgrindTest test-decodecorpus-cli

.PHONY: test-zstd test-zstd32 test-zstd-nolegacy test-zstdgrep
.PHONY: test-zstd test-zstd32 test-zstdtools test-zstd-nolegacy test-zstdgrep
test-zstd: ZSTD = $(PRGDIR)/zstd
test-zstd: zstd

Expand All @@ -322,6 +322,12 @@ test-zstd test-zstd32 test-zstd-nolegacy: datagen
file $(ZSTD)
EXE_PREFIX="$(QEMU_SYS)" ZSTD_BIN="$(ZSTD)" DATAGEN_BIN=./datagen ./playTests.sh $(ZSTDRTTEST)

test-zstdtools: ZSTD = $(PRGDIR)/zstd

test-zstdtools: zstd
file $(ZSTD)
ZSTD_BIN="$(ZSTD)" ./playToolTests.sh

test-fullbench: fullbench datagen
$(QEMU_SYS) ./fullbench -i1
$(QEMU_SYS) ./fullbench -i1 -P0
Expand Down
4 changes: 4 additions & 0 deletions tests/a.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
asdf


jkl
12 changes: 0 additions & 12 deletions tests/playTests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@ SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
PRGDIR="$SCRIPT_DIR/../programs"
TESTDIR="$SCRIPT_DIR/../tests"
UNAME=$(uname)
ZSTDGREP="$PRGDIR/zstdgrep"

detectedTerminal=false
if [ -t 0 ] && [ -t 1 ]
Expand Down Expand Up @@ -311,17 +310,6 @@ if [ "$isWindows" = false ]; then
fi
fi

println "\n===> zstdgrep tests"
ln -sf "$ZSTD_BIN" zstdcat
rm -f tmp_grep
echo "1234" > tmp_grep
zstd -f tmp_grep
lines=$(ZCAT=./zstdcat "$ZSTDGREP" 2>&1 "1234" tmp_grep tmp_grep.zst | wc -l)
test 2 -eq $lines
ZCAT=./zstdcat "$ZSTDGREP" 2>&1 "1234" tmp_grep_bad.zst && die "Should have failed"
ZCAT=./zstdcat "$ZSTDGREP" 2>&1 "1234" tmp_grep_bad.zst | grep "No such file or directory" || true
rm -f tmp_grep*

println "\n===> --exclude-compressed flag"
rm -rf precompressedFilterTestDir
mkdir -p precompressedFilterTestDir
Expand Down
87 changes: 87 additions & 0 deletions tests/playToolTests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#!/bin/sh

set -e

die() {
println "$@" 1>&2
exit 1
}

zstd() {
if [ -z "$EXEC_PREFIX" ]; then
"$ZSTD_BIN" "$@"
else
"$EXEC_PREFIX" "$ZSTD_BIN" "$@"
fi
}

println() {
printf '%b\n' "${*}"
}

SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
PRGDIR="$SCRIPT_DIR/../programs"
UNAME=$(uname)
ZSTDGREP="$PRGDIR/zstdgrep"
ZSTDLESS="$PRGDIR/zstdless"

INTOVOID="/dev/null"
case "$UNAME" in
GNU) DEVDEVICE="/dev/random" ;;
*) DEVDEVICE="/dev/zero" ;;
esac
case "$OS" in
Windows*)
INTOVOID="NUL"
DEVDEVICE="NUL"
;;
esac

DIFF="diff"
case "$UNAME" in
SunOS) DIFF="gdiff" ;;
esac

# check if ZSTD_BIN is defined. if not, use the default value
if [ -z "${ZSTD_BIN}" ]; then
println "\nZSTD_BIN is not set. Using the default value..."
ZSTD_BIN="$PRGDIR/zstd"
fi

# assertions
[ -n "$ZSTD_BIN" ] || die "zstd not found at $ZSTD_BIN! \n Please define ZSTD_BIN pointing to the zstd binary. You might also consider rebuilding zstd following the instructions in README.md"
println "\nStarting playToolTests.sh EXE_PREFIX='$EXE_PREFIX' ZSTD_BIN='$ZSTD_BIN' DATAGEN_BIN='$DATAGEN_BIN'"



# tool tests

println "\n===> zstdgrep tests"
ln -sf "$ZSTD_BIN" zstdcat
rm -f tmp_grep
echo "1234" > tmp_grep
zstd -f tmp_grep
lines=$(ZCAT=./zstdcat "$ZSTDGREP" 2>&1 "1234" tmp_grep tmp_grep.zst | wc -l)
test 2 -eq $lines
ZCAT=./zstdcat "$ZSTDGREP" 2>&1 "1234" tmp_grep_bad.zst && die "Should have failed"
ZCAT=./zstdcat "$ZSTDGREP" 2>&1 "1234" tmp_grep_bad.zst | grep "No such file or directory" || true
rm -f tmp_grep*

println "\n===> zstdless tests"
if [ -n "$(which less)" ]; then
ln -sf "$ZSTD_BIN" zstd
rm -f tmp_less*
echo "1234" > tmp_less
echo "foo" >> tmp_less
echo "bar" >> tmp_less
less -N -f tmp_less > tmp_less_counted
zstd -f tmp_less
lines=$(ZSTD=./zstd "$ZSTDLESS" 2>&1 tmp_less.zst | wc -l)
test 3 -eq $lines
ZSTD=./zstd "$ZSTDLESS" -f tmp_less.zst > tmp_less_regenerated
$DIFF tmp_less tmp_less_regenerated
ZSTD=./zstd "$ZSTDLESS" -N -f tmp_less.zst > tmp_less_regenerated_counted
$DIFF tmp_less_counted tmp_less_regenerated_counted
ZSTD=./zstd "$ZSTDLESS" 2>&1 tmp_less_bad.zst | grep "No such file or directory" || die
rm -f tmp_less*
fi