smokes: add JSON nested/invalid cases; force VM backend; temp nyash.toml with json_native package for resolution
This commit is contained in:
61
tools/smokes/v2/profiles/quick/core/json_errors_ast.sh
Normal file
61
tools/smokes/v2/profiles/quick/core/json_errors_ast.sh
Normal 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"
|
||||
54
tools/smokes/v2/profiles/quick/core/json_nested_ast.sh
Normal file
54
tools/smokes/v2/profiles/quick/core/json_nested_ast.sh
Normal 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"
|
||||
@ -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 /
|
||||
|
||||
Reference in New Issue
Block a user