diff --git a/docs/development/current/main/phases/phase-131/README.md b/docs/development/current/main/phases/phase-131/README.md index 53d8ec61..c09f1c98 100644 --- a/docs/development/current/main/phases/phase-131/README.md +++ b/docs/development/current/main/phases/phase-131/README.md @@ -58,6 +58,69 @@ y = x + 2 return y ``` +## Task 3 & 4: smokes Runner Improvements (DONE) + +### Task 3: OutputContract 統一 + +**実装箇所**: `tools/smokes/v2/lib/llvm_exe_runner.sh` + +**新しい統一インターフェース**: +```bash +check_output_contract() { + local contract_type=$1 # "exit_code" / "numeric" / "substring" + local expected=$2 + local actual=$3 + local context=$4 # (optional) Context description + + # 統一された検証ロジック +} +``` + +**利点**: +- ✅ exit_code/numeric/substring が統一インターフェース +- ✅ エラーメッセージが一貫している +- ✅ コピペコードが削減(約30行の整理) +- ✅ 既存 smoke 全て PASS(後方互換性) + +**変更箇所**: +- `llvm_exe_build_and_run_numeric_smoke`: numeric 検証を統一インターフェース化 +- `llvm_exe_build_and_run_expect_exit_code`: exit_code 検証を統一インターフェース化 + +### Task 4: require_joinir_dev ヘルパー + +**実装箇所**: +- `tools/smokes/v2/lib/llvm_exe_runner.sh` +- `tools/smokes/v2/lib/test_runner.sh` + +**新しいヘルパー関数**: +```bash +require_joinir_dev() { + export NYASH_JOINIR_DEV=1 + export HAKO_JOINIR_STRICT=1 + echo "[INFO] JoinIR dev mode enabled (...)" +} +``` + +**利点**: +- ✅ 環境変数セットアップが一元化 +- ✅ dev-only fixture が統一パターンで記述可能 +- ✅ コピペ防止(3行→1行) +- ✅ 既存 smoke 全て PASS + +**使用例**: +```bash +# Before (phase131_loop_true_break_once_llvm_exe.sh) +export NYASH_JOINIR_DEV=1 +export HAKO_JOINIR_STRICT=1 + +# After +require_joinir_dev +``` + +**適用済み箇所**: +- `tools/smokes/v2/profiles/integration/apps/phase131_loop_true_break_once_llvm_exe.sh` +- `tools/smokes/v2/profiles/integration/apps/phase131_loop_true_break_once_vm.sh` + ## SSOT Contracts ### EnvLayout (Phase 126) diff --git a/tools/build_llvm.sh b/tools/build_llvm.sh index 50c56b90..8dd47f29 100644 --- a/tools/build_llvm.sh +++ b/tools/build_llvm.sh @@ -51,7 +51,9 @@ CARGO_TARGET_DIR_EFFECTIVE="${CARGO_TARGET_DIR:-$PWD/target}" # folder so rustc can atomically persist artifacts without cross-device rename issues. # # NOTE: release/deps may not exist yet on first build, so create it eagerly. -TMPDIR_EFFECTIVE="${TMPDIR:-$CARGO_TARGET_DIR_EFFECTIVE/release/deps}" +# TMPDIR configuration (SSOT: tools/smokes/v2/lib/env.sh sets TARGET_TMPDIR) +# Use TARGET_TMPDIR if set by smoke framework, otherwise fallback to cargo deps dir +TMPDIR_EFFECTIVE="${TMPDIR:-${TARGET_TMPDIR:-$CARGO_TARGET_DIR_EFFECTIVE/release/deps}}" mkdir -p "$TMPDIR_EFFECTIVE" export TMPDIR="$TMPDIR_EFFECTIVE"