diff --git a/programs/zstdless b/programs/zstdless index 893799e7d95..17726a4f6e1 100755 --- a/programs/zstdless +++ b/programs/zstdless @@ -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 "$@" diff --git a/tests/playTests.sh b/tests/playTests.sh index b7a3d88a817..041deb1eb18 100755 --- a/tests/playTests.sh +++ b/tests/playTests.sh @@ -89,6 +89,7 @@ PRGDIR="$SCRIPT_DIR/../programs" TESTDIR="$SCRIPT_DIR/../tests" UNAME=$(uname) ZSTDGREP="$PRGDIR/zstdgrep" +ZSTDLESS="$PRGDIR/zstdless" detectedTerminal=false if [ -t 0 ] && [ -t 1 ] @@ -322,6 +323,20 @@ ZCAT=./zstdcat "$ZSTDGREP" 2>&1 "1234" tmp_grep_bad.zst && die "Should have fail 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 + zstd -f tmp_less + lines=$(ZSTD=./zstd "$ZSTDLESS" 2>&1 tmp_less.zst | wc -l) + test 1 -eq $lines + ZSTD=./zstd "$ZSTDLESS" -f tmp_less.zst > tmp_less_regenerated + $DIFF tmp_less tmp_less_regenerated + ZSTD=./zstd "$ZSTDLESS" 2>&1 tmp_less_bad.zst | grep "No such file or directory" || die + rm -f tmp_less* +fi + println "\n===> --exclude-compressed flag" rm -rf precompressedFilterTestDir mkdir -p precompressedFilterTestDir