From eefd445b4bd43d503c59d48143e2b68222106ef1 Mon Sep 17 00:00:00 2001 From: Nathan Flurry Date: Wed, 2 Sep 2026 03:04:32 -0700 Subject: [PATCH] test(execution): keep inline module calls independently evaluated --- .../tests/language_execution.rs | 57 ++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/crates/native-sidecar/tests/language_execution.rs b/crates/native-sidecar/tests/language_execution.rs index 175abafe78..3d79a9199d 100644 --- a/crates/native-sidecar/tests/language_execution.rs +++ b/crates/native-sidecar/tests/language_execution.rs @@ -692,9 +692,12 @@ fn javascript_module_execution_accepts_inline_exports_in_a_context() { wire_vm(&connection_id, &session_id, &vm_id), wire::RequestPayload::JavaScriptExecutionRequest(wire::JavaScriptExecutionRequest { process: context_process_options("module-context"), - source: String::from("export const y = 1;"), + source: String::from( + "globalThis.moduleRuns = (globalThis.moduleRuns ?? 0) + 1;\n\ + export const y = globalThis.moduleRuns;", + ), format: Some(wire::JavaScriptModuleFormat::Module), - file_path: None, + file_path: Some(String::from("/workspace/reused-inline.mjs")), inputs: None, }), )) @@ -710,6 +713,56 @@ fn javascript_module_execution_accepts_inline_exports_in_a_context() { assert_eq!(result.outcome, wire::ExecutionOutcome::Succeeded); assert_eq!(result.exit_code, Some(0)); + let repeated = sidecar + .dispatch_wire_blocking(wire_request( + 5, + wire_vm(&connection_id, &session_id, &vm_id), + wire::RequestPayload::JavaScriptExecutionRequest(wire::JavaScriptExecutionRequest { + process: context_process_options("module-context"), + source: String::from( + "globalThis.moduleRuns = (globalThis.moduleRuns ?? 0) + 1;\n\ + export const y = globalThis.moduleRuns;", + ), + format: Some(wire::JavaScriptModuleFormat::Module), + file_path: Some(String::from("/workspace/reused-inline.mjs")), + inputs: None, + }), + )) + .expect("repeat inline ES module with the same identity"); + assert_eq!(accepted_execution_id(repeated), execution_id); + let repeated_result = wait_for_execution( + &mut sidecar, + &connection_id, + &session_id, + &vm_id, + &execution_id, + ); + assert_eq!(repeated_result.outcome, wire::ExecutionOutcome::Succeeded); + + let evaluation = sidecar + .dispatch_wire_blocking(wire_request( + 6, + wire_vm(&connection_id, &session_id, &vm_id), + wire::RequestPayload::JavaScriptEvaluationRequest(wire::JavaScriptEvaluationRequest { + process: context_process_options("module-context"), + expression: String::from("globalThis.moduleRuns"), + format: Some(wire::JavaScriptModuleFormat::Module), + file_path: None, + inputs: None, + }), + )) + .expect("read repeated module execution count"); + assert_eq!(accepted_execution_id(evaluation), execution_id); + let evaluation_result = wait_for_execution( + &mut sidecar, + &connection_id, + &session_id, + &vm_id, + &execution_id, + ); + assert_eq!(evaluation_result.outcome, wire::ExecutionOutcome::Succeeded); + assert_eq!(evaluation_result.evaluation_value.as_deref(), Some("2")); + reset_execution( &mut sidecar, &connection_id,