From bb4e3044a8d530160413d3cf9d8153d6c5d5f338 Mon Sep 17 00:00:00 2001 From: nyash-codex Date: Thu, 27 Nov 2025 04:27:57 +0900 Subject: [PATCH] test(joinir): fix Phase 33-3.2 test flakiness by unifying env-dependent tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 33-3.2 test stabilization: - Unified 4 env-dependent tests into 1 (test_if_select_pattern_matching) - Eliminated race condition from parallel test execution - All 5 tests now pass consistently (5/5 stable PASS) Before: 8 tests (flaky 7-8/8 due to env var race) After: 5 tests (stable 5/5, no flakiness) Test coverage maintained: - Simple pattern lowering (env ON) - Local pattern lowering (env ON) - Disabled by default (env OFF) - Wrong function name filter (env ON) - 4 verify tests (env-independent, kept separate) Documentation: - Updated TASKS.md with test flake resolution notes - Updated docs/private submodule to 81ec67f 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- docs/private | 2 +- src/tests/mir_joinir_if_select.rs | 39 ++++++++----------------------- 2 files changed, 11 insertions(+), 30 deletions(-) diff --git a/docs/private b/docs/private index b3ababe9..81ec67f7 160000 --- a/docs/private +++ b/docs/private @@ -1 +1 @@ -Subproject commit b3ababe9c8406032adc024d858005bb312fafd56 +Subproject commit 81ec67f7757a3798bf5262a17a7c4c6a483ac56c diff --git a/src/tests/mir_joinir_if_select.rs b/src/tests/mir_joinir_if_select.rs index 90642a59..73f51465 100644 --- a/src/tests/mir_joinir_if_select.rs +++ b/src/tests/mir_joinir_if_select.rs @@ -124,15 +124,17 @@ mod tests { } } + /// Phase 33-3: 統合パターンマッチングテスト(env 競合回避) + /// + /// env 変数を触る4つのテストを1つにまとめて、並列実行でのレースを防ぐ。 + /// 順番に: simple/local/disabled/wrong_name を確認する。 #[test] - fn test_if_select_simple_pattern() { - // Set environment variable for this test + fn test_if_select_pattern_matching() { + // ==== 1. Simple pattern (env ON) ==== std::env::set_var("NYASH_JOINIR_IF_SELECT", "1"); let func = create_simple_pattern_mir(); let entry_block = func.entry_block; - - // Try to lower to JoinIR let result = try_lower_if_to_joinir(&func, entry_block, true); assert!( @@ -153,18 +155,9 @@ mod tests { panic!("Expected JoinInst::Select, got {:?}", result); } - // Clean up - std::env::remove_var("NYASH_JOINIR_IF_SELECT"); - } - - #[test] - fn test_if_select_local_pattern() { - std::env::set_var("NYASH_JOINIR_IF_SELECT", "1"); - + // ==== 2. Local pattern (env ON) ==== let func = create_local_pattern_mir(); let entry_block = func.entry_block; - - // Try to lower to JoinIR let result = try_lower_if_to_joinir(&func, entry_block, true); assert!( @@ -185,18 +178,11 @@ mod tests { panic!("Expected JoinInst::Select, got {:?}", result); } - std::env::remove_var("NYASH_JOINIR_IF_SELECT"); - } - - #[test] - fn test_if_select_disabled_by_default() { - // Ensure environment variable is NOT set + // ==== 3. Disabled by default (env OFF) ==== std::env::remove_var("NYASH_JOINIR_IF_SELECT"); let func = create_simple_pattern_mir(); let entry_block = func.entry_block; - - // Should return None when disabled let result = try_lower_if_to_joinir(&func, entry_block, false); assert!( @@ -205,19 +191,13 @@ mod tests { ); eprintln!("✅ If/Select lowering correctly disabled by default"); - } - #[test] - fn test_if_select_wrong_function_name() { + // ==== 4. Wrong function name (env ON) ==== std::env::set_var("NYASH_JOINIR_IF_SELECT", "1"); - // Create function with wrong name (not IfSelectTest.*) let mut func = create_simple_pattern_mir(); func.signature.name = "WrongName.test/1".to_string(); - let entry_block = func.entry_block; - - // Should return None for non-IfSelectTest functions let result = try_lower_if_to_joinir(&func, entry_block, true); assert!( @@ -227,6 +207,7 @@ mod tests { eprintln!("✅ Function name filter working correctly"); + // Clean up std::env::remove_var("NYASH_JOINIR_IF_SELECT"); }