Files
hakorune/tools/test/smoke/selfhost/collect_prints_using_mixed.sh

51 lines
1.6 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR=$(cd "$(dirname "$0")/../../../.." && pwd)
echo "[smoke] collect_prints using + mixed order ..." >&2
pushd "$ROOT_DIR" >/dev/null
cargo build --release -q
export NYASH_ENABLE_USING=1
export NYASH_VM_USE_PY=1
# Ensure JSON plugin is loaded (MiniVmPrints uses JsonDocBox/JsonNodeBox)
export NYASH_LOAD_NY_PLUGINS=1
# seam safety valve for inlining (default-OFF elsewhere)
export NYASH_RESOLVE_FIX_BRACES=1
# keep dedup OFF for stability (resolver dedup is dev-only)
unset NYASH_RESOLVE_DEDUP_BOX || true
unset NYASH_RESOLVE_DEDUP_FN || true
# parser seam guard (default-OFF): ensure 'static box' at top-level is not mistaken for initializer
export NYASH_PARSER_STATIC_INIT_STRICT=1
BIN=./target/release/nyash
APP=apps/selfhost/vm/collect_mixed_using_smoke.nyash
out=$("$BIN" --backend vm "$APP")
expected=$'A\nB\n7\n1\n7\n5'
if [[ "$out" != "$expected" ]]; then
echo "[smoke] FAIL: unexpected output" >&2
echo "--- got ---" >&2
printf '%s\n' "$out" >&2
echo "--- exp ---" >&2
printf '%s\n' "$expected" >&2
exit 1
fi
echo "[smoke] OK: collect_prints using + mixed order" >&2
# Seam hygiene check: ensure prelude_brace_delta==0 on the dump
NYASH_PYVM_DUMP_CODE=1 NYASH_RESOLVE_SEAM_DEBUG=1 NYASH_RESOLVE_FIX_BRACES=1 NYASH_RESOLVE_DEDUP_BOX=1 \
"$BIN" --backend vm "$APP" >/dev/null 2>&1 || true
INS_OUT=$("$BIN" --backend vm apps/tests/dev_seam_inspect_dump.nyash)
echo "$INS_OUT" | grep -q "^prelude_brace_delta=0$" || {
echo "[smoke] FAIL: seam prelude_brace_delta is not zero" >&2
echo "$INS_OUT" >&2
exit 1
}
echo "[smoke] OK: seam prelude brace delta == 0" >&2
popd >/dev/null