From 2d561f124d1fa0489f89381c693b64a70a440a4f Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 31 Jan 2025 16:26:39 +0000 Subject: [PATCH 1/4] clear results context on every run --- packages/server/src/jsRunner/vm/isolated-vm.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/server/src/jsRunner/vm/isolated-vm.ts b/packages/server/src/jsRunner/vm/isolated-vm.ts index 37ee048dc2..b47137bcba 100644 --- a/packages/server/src/jsRunner/vm/isolated-vm.ts +++ b/packages/server/src/jsRunner/vm/isolated-vm.ts @@ -186,6 +186,7 @@ export class IsolatedVM implements VM { code = ` try { + results = {} results['${this.runResultKey}']=${this.codeWrapper(code)} } catch (e) { results['${this.runErrorKey}']=e From 6999bdf57ee3fdef93fab5813f9567f9cb04fd9c Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 31 Jan 2025 16:58:29 +0000 Subject: [PATCH 2/4] add test for clearing results --- packages/server/src/jsRunner/tests/isolatedVM.spec.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/server/src/jsRunner/tests/isolatedVM.spec.ts b/packages/server/src/jsRunner/tests/isolatedVM.spec.ts index 5a9bc05d76..2cf97c8dd2 100644 --- a/packages/server/src/jsRunner/tests/isolatedVM.spec.ts +++ b/packages/server/src/jsRunner/tests/isolatedVM.spec.ts @@ -107,4 +107,14 @@ describe("Test isolated vm directly", () => { ) expect(result).toEqual([]) }) + + it("should ensure error results are cleared between runs", () => { + const context = {} + // throw error + const result = runJSWithIsolatedVM(`test.foo.bar = 123`, context) + expect(result).toEqual({}) + // ensure error not persisted across vms + const secondResult = runJSWithIsolatedVM(`return {}`, context) + expect(secondResult).toEqual({}) + }) }) From b0e38be8447f5a123c5faa484074a0d821a85b9f Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 31 Jan 2025 17:23:36 +0000 Subject: [PATCH 3/4] expect to throw --- packages/server/src/jsRunner/tests/isolatedVM.spec.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/server/src/jsRunner/tests/isolatedVM.spec.ts b/packages/server/src/jsRunner/tests/isolatedVM.spec.ts index 2cf97c8dd2..9bf79c6040 100644 --- a/packages/server/src/jsRunner/tests/isolatedVM.spec.ts +++ b/packages/server/src/jsRunner/tests/isolatedVM.spec.ts @@ -111,10 +111,11 @@ describe("Test isolated vm directly", () => { it("should ensure error results are cleared between runs", () => { const context = {} // throw error - const result = runJSWithIsolatedVM(`test.foo.bar = 123`, context) - expect(result).toEqual({}) - // ensure error not persisted across vms - const secondResult = runJSWithIsolatedVM(`return {}`, context) + // Ensure the first execution throws an error + expect(() => runJSWithIsolatedVM(`test.foo.bar = 123`, context)).toThrow(); + + // Ensure the error is not persisted across VMs + const secondResult = runJSWithIsolatedVM(`return {}`, context); expect(secondResult).toEqual({}) }) }) From 4736c8f5c7cf567792c31930ff06a548654ade86 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 31 Jan 2025 18:02:35 +0000 Subject: [PATCH 4/4] lint --- packages/server/src/jsRunner/tests/isolatedVM.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/server/src/jsRunner/tests/isolatedVM.spec.ts b/packages/server/src/jsRunner/tests/isolatedVM.spec.ts index 9bf79c6040..63a1a52b09 100644 --- a/packages/server/src/jsRunner/tests/isolatedVM.spec.ts +++ b/packages/server/src/jsRunner/tests/isolatedVM.spec.ts @@ -112,10 +112,10 @@ describe("Test isolated vm directly", () => { const context = {} // throw error // Ensure the first execution throws an error - expect(() => runJSWithIsolatedVM(`test.foo.bar = 123`, context)).toThrow(); + expect(() => runJSWithIsolatedVM(`test.foo.bar = 123`, context)).toThrow() // Ensure the error is not persisted across VMs - const secondResult = runJSWithIsolatedVM(`return {}`, context); + const secondResult = runJSWithIsolatedVM(`return {}`, context) expect(secondResult).toEqual({}) }) })