diff options
author | itchyny <itchyny@cybozu.co.jp> | 2023-07-06 10:01:59 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-06 10:01:59 +0900 |
commit | a881532b29ae8eabe79678c55a37f2b19ac5e624 (patch) | |
tree | e4f4408ac199d6ebf3773554908edefc874e9b7f | |
parent | 95625c3fdb6eec8bcff8c52b93359db3337ba5f9 (diff) |
Fix exit code on JSON parse error (#2654)
-rw-r--r-- | src/main.c | 4 | ||||
-rwxr-xr-x | tests/shtest | 11 |
2 files changed, 12 insertions, 3 deletions
@@ -698,12 +698,12 @@ int main(int argc, char* argv[]) { // Parse error jv msg = jv_invalid_get_msg(value); if (!(options & SEQ)) { - // --seq -> errors are not fatal - ret = JQ_OK_NO_OUTPUT; + ret = JQ_ERROR_UNKNOWN; fprintf(stderr, "jq: parse error: %s\n", jv_string_value(msg)); jv_free(msg); break; } + // --seq -> errors are not fatal fprintf(stderr, "jq: ignoring parse error: %s\n", jv_string_value(msg)); jv_free(msg); } diff --git a/tests/shtest b/tests/shtest index 84aa69e8..369cfdb4 100755 --- a/tests/shtest +++ b/tests/shtest @@ -143,6 +143,15 @@ if $VALGRIND $Q $JQ -e . $d/input; then exit 2 fi +# Regression test for #2146 +if echo "foobar" | $JQ .; then + printf 'Issue #2146 is back?\n' 1>&2 + exit 1 +elif [ $? -ne 5 ]; then + echo "Invalid input had wrong error code" 1>&2 + exit 1 +fi + # Regression test for #1534 echo "[1,2,3,4]" > $d/expected printf "[1,2][3,4]" | $JQ -cs add > $d/out 2>&1 @@ -204,7 +213,7 @@ else fi ## Regression test for issue #2378 assert when stream parse broken object pair -echo '{"a":1,"b",' | $JQ --stream > /dev/null 2> $d/err +echo '{"a":1,"b",' | $JQ --stream > /dev/null 2> $d/err || true grep 'Objects must consist of key:value pairs' $d/err > /dev/null ## Regression test for issue #2572 assert when using --jsonargs and invalid JSON |