smokes: add JSON nested/invalid cases; force VM backend; temp nyash.toml with json_native package for resolution

This commit is contained in:
Selfhosting Dev
2025-09-26 00:38:14 +09:00
parent 6ce06501e1
commit b3a96faccb
30 changed files with 135 additions and 295 deletions

View File

@ -0,0 +1,61 @@
#!/bin/bash
# json_errors_ast.sh - JSON error cases via AST using
source "$(dirname "$0")/../../../lib/test_runner.sh"
require_env || exit 2
preflight_plugins || exit 2
TEST_DIR="/tmp/json_errors_ast_$$"
mkdir -p "$TEST_DIR"
cd "$TEST_DIR"
cat > nyash.toml << EOF
[using.json_native]
path = "$NYASH_ROOT/apps/lib/json_native/"
main = "parser/parser.nyash"
[using.aliases]
json = "json_native"
EOF
cat > driver.nyash << 'EOF'
using json_native as JsonParserModule
static box Main {
main() {
local bad = new ArrayBox()
bad.push("{")
bad.push("[1,2,,3]")
bad.push("{\"a\" 1}")
bad.push("{\"a\":}")
local i = 0
loop(i < bad.length()) {
local s = bad.get(i)
local parser = JsonParserModule.create_parser()
local res = parser.parse(s)
if parser.has_errors() or res == null {
print("ERR")
} else {
print("OK")
}
i = i + 1
}
return 0
}
}
EOF
expected=$(cat << 'TXT'
ERR
ERR
ERR
ERR
TXT
)
output=$("$NYASH_BIN" --backend vm driver.nyash 2>&1 | filter_noise)
compare_outputs "$expected" "$output" "json_errors_ast"
cd /
rm -rf "$TEST_DIR"

View File

@ -0,0 +1,54 @@
#!/bin/bash
# json_nested_ast.sh - Nested arrays/objects roundtrip via AST using
source "$(dirname "$0")/../../../lib/test_runner.sh"
require_env || exit 2
preflight_plugins || exit 2
TEST_DIR="/tmp/json_nested_ast_$$"
mkdir -p "$TEST_DIR"
cd "$TEST_DIR"
cat > nyash.toml << EOF
[using.json_native]
path = "$NYASH_ROOT/apps/lib/json_native/"
main = "parser/parser.nyash"
[using.aliases]
json = "json_native"
EOF
cat > driver.nyash << 'EOF'
using json_native as JsonParserModule
static box Main {
main() {
local samples = new ArrayBox()
samples.push("[1,[2,3],{\"x\":[4]}]")
samples.push("{\"a\":{\"b\":[1,2]},\"c\":\"d\"}")
samples.push("{\"n\":-1e-3,\"z\":0.0}")
local i = 0
loop(i < samples.length()) {
local s = samples.get(i)
local r = JsonParserModule.roundtrip_test(s)
print(r)
i = i + 1
}
return 0
}
}
EOF
expected=$(cat << 'TXT'
[1,[2,3],{"x":[4]}]
{"a":{"b":[1,2]},"c":"d"}
{"n":-1e-3,"z":0.0}
TXT
)
output=$("$NYASH_BIN" --backend vm driver.nyash 2>&1 | filter_noise)
compare_outputs "$expected" "$output" "json_nested_ast"
cd /
rm -rf "$TEST_DIR"

View File

@ -9,8 +9,17 @@ TEST_DIR="/tmp/json_roundtrip_ast_$$"
mkdir -p "$TEST_DIR"
cd "$TEST_DIR"
cat > nyash.toml << EOF
[using.json_native]
path = "$NYASH_ROOT/apps/lib/json_native/"
main = "parser/parser.nyash"
[using.aliases]
json = "json_native"
EOF
cat > driver.nyash << 'EOF'
using "apps/lib/json_native/parser/parser.nyash" as JsonParserModule
using json_native as JsonParserModule
static box Main {
main() {
@ -61,7 +70,7 @@ false
TXT
)
output=$(run_nyash_vm driver.nyash)
output=$("$NYASH_BIN" --backend vm driver.nyash 2>&1 | filter_noise)
compare_outputs "$expected" "$output" "json_roundtrip_ast"
cd /