diff --git a/__tests__/util.test.ts b/__tests__/util.test.ts index fca856e..b3c0eec 100644 --- a/__tests__/util.test.ts +++ b/__tests__/util.test.ts @@ -110,6 +110,52 @@ describe('util', () => { }), ); }); + it('falls back to body when body_path is missing', () => { + assert.equal( + releaseBody({ + github_ref: '', + github_repository: '', + github_token: '', + input_body: 'fallback-body', + input_body_path: '__tests__/does-not-exist.txt', + input_draft: false, + input_prerelease: false, + input_files: [], + input_overwrite_files: undefined, + input_preserve_order: undefined, + input_name: undefined, + input_tag_name: undefined, + input_target_commitish: undefined, + input_discussion_category_name: undefined, + input_generate_release_notes: false, + input_make_latest: undefined, + }), + 'fallback-body', + ); + }); + it('returns undefined when body_path is missing and body is not provided', () => { + assert.equal( + releaseBody({ + github_ref: '', + github_repository: '', + github_token: '', + input_body: undefined, + input_body_path: '__tests__/does-not-exist.txt', + input_draft: false, + input_prerelease: false, + input_files: [], + input_overwrite_files: undefined, + input_preserve_order: undefined, + input_name: undefined, + input_tag_name: undefined, + input_target_commitish: undefined, + input_discussion_category_name: undefined, + input_generate_release_notes: false, + input_make_latest: undefined, + }), + undefined, + ); + }); }); describe('parseConfig', () => { it('parses basic config', () => { diff --git a/src/util.ts b/src/util.ts index 7a115d0..3d18f29 100644 --- a/src/util.ts +++ b/src/util.ts @@ -35,10 +35,17 @@ export const uploadUrl = (url: string): string => { }; export const releaseBody = (config: Config): string | undefined => { - return ( - (config.input_body_path && readFileSync(config.input_body_path).toString('utf8')) || - config.input_body - ); + if (config.input_body_path) { + try { + const contents = readFileSync(config.input_body_path, 'utf8'); + return contents; + } catch (err: any) { + console.warn( + `⚠️ Failed to read body_path "${config.input_body_path}" (${err?.code ?? 'ERR'}). Falling back to 'body' input.`, + ); + } + } + return config.input_body; }; type Env = { [key: string]: string | undefined };