From 3003bdebaa6e6dcdc31feed90859a6c2c0e70aa1 Mon Sep 17 00:00:00 2001 From: "Dhanji R. Prasanna" Date: Fri, 30 Jan 2026 14:28:43 +1100 Subject: [PATCH] refactor: fix flaky test and remove dead code in recent commits Fixes issues in the last 11 commits: 1. pending_research.rs: Fix flaky test_generate_id_uniqueness - Replaced random u16 suffix with atomic counter for guaranteed uniqueness - The timestamp+random approach could collide when generating IDs rapidly - Now uses static AtomicU32 counter that increments monotonically 2. embedded/adapters/glm.rs: Remove unused in_code_fence field - Field was written but never read (dead code) - Removed from struct definition, constructor, and reset() 3. embedded/adapters/glm.rs: Fix orphaned tests - Two tests (test_strip_code_fences, test_code_fenced_tool_call) were outside the #[cfg(test)] mod tests block - Moved closing brace to include them in the test module All 446 library tests pass. Agent: fowler --- crates/g3-core/src/pending_research.rs | 7 +++++-- crates/g3-providers/src/embedded/adapters/glm.rs | 6 +----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/crates/g3-core/src/pending_research.rs b/crates/g3-core/src/pending_research.rs index 0b3e9ee..4a9a44b 100644 --- a/crates/g3-core/src/pending_research.rs +++ b/crates/g3-core/src/pending_research.rs @@ -139,12 +139,15 @@ impl PendingResearchManager { /// Generate a unique research ID pub fn generate_id() -> ResearchId { use std::time::{SystemTime, UNIX_EPOCH}; + use std::sync::atomic::{AtomicU32, Ordering}; + static COUNTER: AtomicU32 = AtomicU32::new(0); + let timestamp = SystemTime::now() .duration_since(UNIX_EPOCH) .unwrap() .as_millis(); - // Use timestamp + random suffix for uniqueness - format!("research_{:x}_{:04x}", timestamp, rand::random::()) + let counter = COUNTER.fetch_add(1, Ordering::Relaxed); + format!("research_{:x}_{:08x}", timestamp, counter) } /// Register a new research task diff --git a/crates/g3-providers/src/embedded/adapters/glm.rs b/crates/g3-providers/src/embedded/adapters/glm.rs index f489245..a9f0db7 100644 --- a/crates/g3-providers/src/embedded/adapters/glm.rs +++ b/crates/g3-providers/src/embedded/adapters/glm.rs @@ -61,8 +61,6 @@ pub struct GlmToolAdapter { buffer: String, /// Buffer for current line (to detect code fences) line_buffer: String, - /// Whether we're currently inside a code fence - in_code_fence: bool, /// Current parse state state: ParseState, /// JSON parsing state (when in InToolJson) @@ -78,7 +76,6 @@ impl GlmToolAdapter { Self { buffer: String::new(), line_buffer: String::new(), - in_code_fence: false, state: ParseState::Prose, json_state: JsonState::Normal, json_depth: 0, @@ -457,7 +454,6 @@ impl ToolFormatAdapter for GlmToolAdapter { fn reset(&mut self) { self.buffer.clear(); self.line_buffer.clear(); - self.in_code_fence = false; self.state = ParseState::Prose; self.json_state = JsonState::Normal; self.json_depth = 0; @@ -696,7 +692,6 @@ Second:<|assistant|>read_file assert_eq!(output.emit, "Normal text"); assert!(!output.has_tool_call); } -} #[test] fn test_strip_code_fences() { @@ -731,3 +726,4 @@ Second:<|assistant|>read_file assert!(!full.contains("```")); assert!(full.contains("{\"tool\": \"shell\"")); } +}