diff --git a/.changeset/frank-terms-count.md b/.changeset/frank-terms-count.md new file mode 100644 index 000000000..c30a1b7d8 --- /dev/null +++ b/.changeset/frank-terms-count.md @@ -0,0 +1,6 @@ +--- +'@openfn/engine-multi': patch +'@openfn/ws-worker': patch +--- + +When reporting compilation errors, prefer the step name to the id diff --git a/packages/engine-multi/src/worker/thread/compile.ts b/packages/engine-multi/src/worker/thread/compile.ts index 497d07ca2..b8bef0344 100644 --- a/packages/engine-multi/src/worker/thread/compile.ts +++ b/packages/engine-multi/src/worker/thread/compile.ts @@ -25,7 +25,7 @@ export default async ( job.sourceMap = result.map; job.expression = result.code; } catch (e) { - throw new CompileError(e, job.id!); + throw new CompileError(e, job.name ?? job.id!); } } } diff --git a/packages/engine-multi/test/errors.test.ts b/packages/engine-multi/test/errors.test.ts index 15781753f..b904939f7 100644 --- a/packages/engine-multi/test/errors.test.ts +++ b/packages/engine-multi/test/errors.test.ts @@ -27,6 +27,29 @@ test.before(async () => { engine = await createEngine(options); }); +test.serial('reporting: prefer step name to step id', (t) => { + return new Promise((done) => { + const plan = { + id: 'a', + workflow: { + steps: [ + { + id: 'x', + name: 'My Step', + expression: 'a a a', + }, + ], + }, + options: {}, + }; + + engine.execute(plan, {}).on(WORKFLOW_ERROR, (evt) => { + t.is(evt.message, 'My Step: Unexpected token (1:2)'); + done(); + }); + }); +}); + // This should exit gracefully with a compile error test.serial('syntax error: missing bracket', (t) => { return new Promise((done) => {