From bd74802644843184ad3200a3af012011483805d4 Mon Sep 17 00:00:00 2001 From: "James M. Greene" Date: Thu, 28 Mar 2024 10:26:41 -0500 Subject: [PATCH] core: Update parameter defaulting behavior for error/warning/notice to honor an empty object passed in --- packages/core/__tests__/core.test.ts | 18 +++++++++++++ packages/core/src/core.ts | 39 +++++++++++++++------------- 2 files changed, 39 insertions(+), 18 deletions(-) diff --git a/packages/core/__tests__/core.test.ts b/packages/core/__tests__/core.test.ts index 8142977d..6f435bcb 100644 --- a/packages/core/__tests__/core.test.ts +++ b/packages/core/__tests__/core.test.ts @@ -421,6 +421,12 @@ describe('@actions/core', () => { ]) }) + it('error handles an error object and an empty properties', () => { + const message = 'this is my error message' + core.error(new Error(message), {}) + assertWriteCalls([`::error::Error: ${message}${os.EOL}`]) + }) + it('error handles custom properties correctly', () => { const message = 'this is my error message' core.error(new Error(message), { @@ -456,6 +462,12 @@ describe('@actions/core', () => { ]) }) + it('warning handles an error object and an empty properties', () => { + const message = 'this is my error message' + core.warning(new Error(message), {}) + assertWriteCalls([`::warning::Error: ${message}${os.EOL}`]) + }) + it('warning handles custom properties correctly', () => { const message = 'this is my error message' core.warning(new Error(message), { @@ -491,6 +503,12 @@ describe('@actions/core', () => { ]) }) + it('notice handles an error object and an empty properties', () => { + const message = 'this is my error message' + core.notice(new Error(message), {}) + assertWriteCalls([`::notice::Error: ${message}${os.EOL}`]) + }) + it('notice handles custom properties correctly', () => { const message = 'this is my error message' core.notice(new Error(message), { diff --git a/packages/core/src/core.ts b/packages/core/src/core.ts index 09d21451..36a09cbc 100644 --- a/packages/core/src/core.ts +++ b/packages/core/src/core.ts @@ -245,6 +245,21 @@ export function debug(message: string): void { issueCommand('debug', {}, message) } +function defaultAnnotationPropertes( + message: string | Error, + properties: AnnotationProperties | undefined = undefined +): AnnotationProperties { + // If no properties are provided, try to extract them from the Error instance + if (properties === undefined) { + if (message instanceof Error) { + properties = toAnnotationProperties(message) + } else { + properties = {} + } + } + return properties +} + /** * Adds an error issue * @param message error issue message. Errors will be converted to string via toString() @@ -252,13 +267,9 @@ export function debug(message: string): void { */ export function error( message: string | Error, - properties: AnnotationProperties = {} + properties: AnnotationProperties | undefined = undefined ): void { - // If no properties are provided, try to extract them from the Error instance - properties = - Object.keys(properties).length === 0 && message instanceof Error - ? toAnnotationProperties(message) - : properties + properties = defaultAnnotationPropertes(message, properties) issueCommand( 'error', @@ -274,13 +285,9 @@ export function error( */ export function warning( message: string | Error, - properties: AnnotationProperties = {} + properties: AnnotationProperties | undefined = undefined ): void { - // If no properties are provided, try to extract them from the Error instance - properties = - Object.keys(properties).length === 0 && message instanceof Error - ? toAnnotationProperties(message) - : properties + properties = defaultAnnotationPropertes(message, properties) issueCommand( 'warning', @@ -296,13 +303,9 @@ export function warning( */ export function notice( message: string | Error, - properties: AnnotationProperties = {} + properties: AnnotationProperties | undefined = undefined ): void { - // If no properties are provided, try to extract them from the Error instance - properties = - Object.keys(properties).length === 0 && message instanceof Error - ? toAnnotationProperties(message) - : properties + properties = defaultAnnotationPropertes(message, properties) issueCommand( 'notice',