diff --git a/packages/server/src/jsRunner/tests/isolatedVM.spec.ts b/packages/server/src/jsRunner/tests/isolatedVM.spec.ts index 5a9bc05d76..63a1a52b09 100644 --- a/packages/server/src/jsRunner/tests/isolatedVM.spec.ts +++ b/packages/server/src/jsRunner/tests/isolatedVM.spec.ts @@ -107,4 +107,15 @@ describe("Test isolated vm directly", () => { ) expect(result).toEqual([]) }) + + it("should ensure error results are cleared between runs", () => { + const context = {} + // throw error + // 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({}) + }) }) 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