2025-10-31 15:16:29 +09:00
|
|
|
#!/bin/sh -x
|
2017-01-24 23:05:47 -05:00
|
|
|
|
|
|
|
|
. "${0%/*}/setup" "$@"
|
|
|
|
|
|
2025-10-31 15:16:29 +09:00
|
|
|
# Reading jq file does not corrupt multi-byte characters -- #1311
|
|
|
|
|
for l in 1 2 3 4; do
|
|
|
|
|
$VALGRIND $Q $JQ -rn "[(range($l) | 48), (range(3000) | 128515)] | implode |
|
|
|
|
|
\"\\(tojson) | explode | unique == [48, 128515]\"" > $d/input
|
|
|
|
|
if ! $VALGRIND $Q $JQ -nef $d/input > /dev/null; then
|
|
|
|
|
echo "Reading jq file corrupted multi-byte characters"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# Slurping raw input does not corrupt multi-byte characters -- #3389
|
|
|
|
|
for l in 1 2 3 4; do
|
|
|
|
|
$VALGRIND $Q $JQ -jn "[(range($l) | 48), (range(3000) | 128515)] | implode" > $d/input
|
|
|
|
|
if ! $VALGRIND $Q $JQ -Rse 'explode | unique == [48, 128515]' $d/input > /dev/null; then
|
|
|
|
|
echo "Slurping raw input corrupted multi-byte characters"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
done
|
2017-01-24 23:05:47 -05:00
|
|
|
|
2026-10-10 14:50:10 +02:00
|
|
|
# --ascii-output escapes non-ASCII characters on both sides of runs of
|
|
|
|
|
# bytes that need no escaping
|
|
|
|
|
$VALGRIND $Q $JQ -cn '[range(18) as $i | ("é", "😀", "\u007f") as $c |
|
|
|
|
|
"abcdefghijklmnopq"[:$i] + $c + "abcdefghijklmnopq"[$i:]]' > $d/input
|
|
|
|
|
$VALGRIND $Q $JQ -ac . $d/input > $d/out
|
|
|
|
|
if LC_ALL=C grep -q '[^ -~]' $d/out; then
|
|
|
|
|
echo "--ascii-output printed a non-ASCII byte"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
if ! $VALGRIND $Q $JQ -e --slurpfile a $d/input '. == $a[0]' $d/out > /dev/null; then
|
|
|
|
|
echo "--ascii-output changed a string"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
2017-01-24 23:05:47 -05:00
|
|
|
exit 0
|