From a84721f0203a4f8006eecb50ad9ca0585edf2a1f Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 8 Sep 2026 08:33:19 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=AA=20[testing=20improvement]=20Add=20?= =?UTF-8?q?uuid=20module=20tests=20and=20remove=20panic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaced a vulnerable `unwrap()` panic in `uuid.rs` (triggered if SystemTime is before UNIX_EPOCH) with proper error mapping using `RuntimeError`. Added a test for `uuid_v4` in `stdlib_tests.rs` to improve coverage and guarantee the happy path works correctly. Co-authored-by: Tcode-Motion <188012755+Tcode-Motion@users.noreply.github.com> --- stdlib/src/uuid.rs | 10 +++++++++- stdlib/tests/stdlib_tests.rs | 13 +++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/stdlib/src/uuid.rs b/stdlib/src/uuid.rs index 2a3ed70d..5897b9d8 100644 --- a/stdlib/src/uuid.rs +++ b/stdlib/src/uuid.rs @@ -17,7 +17,15 @@ impl StdlibRegistry { use std::time::SystemTime; let nano = SystemTime::now() .duration_since(SystemTime::UNIX_EPOCH) - .unwrap() + .map_err(|e| { + RuntimeError::new( + techscript_runtime::error::RuntimeErrorKind::InvalidOperation( + format!("System time before UNIX EPOCH: {}", e), + ), + None, + None, + ) + })? .as_nanos(); Ok(RuntimeValue::Str(format!( "123e4567-e89b-12d3-a456-{}", diff --git a/stdlib/tests/stdlib_tests.rs b/stdlib/tests/stdlib_tests.rs index f7df969f..1a33d766 100644 --- a/stdlib/tests/stdlib_tests.rs +++ b/stdlib/tests/stdlib_tests.rs @@ -1151,3 +1151,16 @@ fn test_ai_generate_text() { let val = res.unwrap(); assert!(val.as_string().unwrap().contains("Prompt: What is 2+2?")); } + +#[test] +fn test_uuid_module() { + let registry = StdlibRegistry::new(); + let uuid_mod = registry.get_module("std.uuid").unwrap(); + let uuid_v4 = uuid_mod.exports.get("uuid_v4").unwrap(); + + let mut ctx = RuntimeContext::new(RuntimeConfig::default()); + let result = uuid_v4.call(&mut ctx, vec![]).unwrap(); + + let s = result.as_string().unwrap(); + assert!(s.starts_with("123e4567-e89b-12d3-a456-")); +}