summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoritchyny <itchyny@cybozu.co.jp>2023-07-06 10:01:59 +0900
committerGitHub <noreply@github.com>2023-07-06 10:01:59 +0900
commita881532b29ae8eabe79678c55a37f2b19ac5e624 (patch)
treee4f4408ac199d6ebf3773554908edefc874e9b7f
parent95625c3fdb6eec8bcff8c52b93359db3337ba5f9 (diff)
Fix exit code on JSON parse error (#2654)
-rw-r--r--src/main.c4
-rwxr-xr-xtests/shtest11
2 files changed, 12 insertions, 3 deletions
diff --git a/src/main.c b/src/main.c
index 6d659110..c5a47c8f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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