From 642e68e345c023d6232b02cb83fb84e0342faca0 Mon Sep 17 00:00:00 2001 From: Eugene Date: Mon, 4 Aug 2025 17:12:07 +0200 Subject: [PATCH] fix(core): Handle null workflow settings in toSaveSettings (#17972) --- .../__tests__/to-save-settings.test.ts | 18 ++++++++++++++++++ .../execution-lifecycle/to-save-settings.ts | 6 ++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/execution-lifecycle/__tests__/to-save-settings.test.ts b/packages/cli/src/execution-lifecycle/__tests__/to-save-settings.test.ts index 142b3c34cec..8f1dea2e283 100644 --- a/packages/cli/src/execution-lifecycle/__tests__/to-save-settings.test.ts +++ b/packages/cli/src/execution-lifecycle/__tests__/to-save-settings.test.ts @@ -153,3 +153,21 @@ describe('execution progress', () => { expect(_saveSettings.progress).toBe(false); }); }); + +describe('null workflow settings', () => { + it('should handle null workflow settings without throwing', () => { + expect(() => toSaveSettings(null)).not.toThrow(); + + // Should use defaults from config when settings are null + config.set('executions.saveDataOnError', 'all'); + config.set('executions.saveDataOnSuccess', 'all'); + config.set('executions.saveDataManualExecutions', true); + config.set('executions.saveExecutionProgress', true); + + const settingsWithNull = toSaveSettings(null); + expect(settingsWithNull.error).toBe(true); + expect(settingsWithNull.success).toBe(true); + expect(settingsWithNull.manual).toBe(true); + expect(settingsWithNull.progress).toBe(true); + }); +}); diff --git a/packages/cli/src/execution-lifecycle/to-save-settings.ts b/packages/cli/src/execution-lifecycle/to-save-settings.ts index b5cd24f7d9c..8b017ab49d4 100644 --- a/packages/cli/src/execution-lifecycle/to-save-settings.ts +++ b/packages/cli/src/execution-lifecycle/to-save-settings.ts @@ -17,7 +17,9 @@ export type ExecutionSaveSettings = { * - `manual`: Whether to save successful or failed manual executions. * - `progress`: Whether to save execution progress, i.e. after each node's execution. */ -export function toSaveSettings(workflowSettings: IWorkflowSettings = {}): ExecutionSaveSettings { +export function toSaveSettings( + workflowSettings: IWorkflowSettings | null = {}, +): ExecutionSaveSettings { const DEFAULTS = { ERROR: config.getEnv('executions.saveDataOnError'), SUCCESS: config.getEnv('executions.saveDataOnSuccess'), @@ -30,7 +32,7 @@ export function toSaveSettings(workflowSettings: IWorkflowSettings = {}): Execut saveDataSuccessExecution = DEFAULTS.SUCCESS, saveManualExecutions = DEFAULTS.MANUAL, saveExecutionProgress = DEFAULTS.PROGRESS, - } = workflowSettings; + } = workflowSettings ?? {}; return { error: saveDataErrorExecution === 'DEFAULT' ? DEFAULTS.ERROR : saveDataErrorExecution === 'all',