From ef36f81b41e71f01da6a3626c42f0bed99f7f36a Mon Sep 17 00:00:00 2001 From: Gabriel Feo Date: Wed, 24 Apr 2024 13:19:07 +0100 Subject: [PATCH 1/3] Fix typo in build shell script Signed-off-by: Gabriel Feo --- build | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build b/build index d768a70..9b23141 100755 --- a/build +++ b/build @@ -5,7 +5,7 @@ cd sources case "$1" in all) npm clean-install - nprm run all + npm run all ;; act) # Build and copy outputs to the dist directory @@ -26,4 +26,4 @@ case "$1" in npm install npm run build ;; -esac \ No newline at end of file +esac From a54fb6a5bb642796d9756be1654a9fe8ceacb381 Mon Sep 17 00:00:00 2001 From: Gabriel Feo Date: Thu, 25 Apr 2024 17:32:09 +0100 Subject: [PATCH 2/3] Add tests on current job-summary behavior Signed-off-by: Gabriel Feo --- sources/src/job-summary.ts | 2 +- sources/test/jest/job-summary.test.ts | 177 ++++++++++++++++++++++++++ 2 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 sources/test/jest/job-summary.test.ts diff --git a/sources/src/job-summary.ts b/sources/src/job-summary.ts index ec3a69e..adac66d 100644 --- a/sources/src/job-summary.ts +++ b/sources/src/job-summary.ts @@ -78,7 +78,7 @@ Note that this permission is never available for a workflow triggered from a rep return mainWarning } -function renderSummaryTable(results: BuildResult[]): string { +export function renderSummaryTable(results: BuildResult[]): string { return `${renderDeprecations()}\n${renderBuildResults(results)}` } diff --git a/sources/test/jest/job-summary.test.ts b/sources/test/jest/job-summary.test.ts new file mode 100644 index 0000000..c38021e --- /dev/null +++ b/sources/test/jest/job-summary.test.ts @@ -0,0 +1,177 @@ +import { BuildResult } from '../../src/build-results' +import { renderSummaryTable } from '../../src/job-summary' +import dedent from 'dedent' + + +const successfulHelpBuild: BuildResult = { + rootProjectName: 'root', + rootProjectDir: '/', + requestedTasks: 'help', + gradleVersion: '8.0', + gradleHomeDir: '/opt/gradle', + buildFailed: false, + buildScanUri: 'https://scans.gradle.com/s/abc123', + buildScanFailed: false +} + +const failedHelpBuild: BuildResult = { + ...successfulHelpBuild, + buildFailed: true +} + +const longArgsBuild: BuildResult = { + ...successfulHelpBuild, + requestedTasks: 'check publishMyLongNamePluginPublicationToMavenCentral publishMyLongNamePluginPublicationToPluginPortal', +} + +const scanPublishDisabledBuild: BuildResult = { + ...successfulHelpBuild, + buildScanUri: '', + buildScanFailed: false, +} + +const scanPublishFailedBuild: BuildResult = { + ...successfulHelpBuild, + buildScanUri: '', + buildScanFailed: true, +} + +describe('renderSummaryTable', () => { + describe('renders', () => { + it('successful build', () => { + const table = renderSummaryTable([successfulHelpBuild]) + expect(table.trim()).toBe(dedent` + + + + + + + + + + + + + + + +
Gradle Root ProjectRequested TasksGradle VersionBuild OutcomeBuild Scan®
roothelp8.0:white_check_mark:Build Scan PUBLISHED
+ `); + }) + it('failed build', () => { + const table = renderSummaryTable([failedHelpBuild]) + expect(table.trim()).toBe(dedent` + + + + + + + + + + + + + + + +
Gradle Root ProjectRequested TasksGradle VersionBuild OutcomeBuild Scan®
roothelp8.0:x:Build Scan PUBLISHED
+ `); + }) + describe('when build scan', () => { + it('publishing disabled', () => { + const table = renderSummaryTable([scanPublishDisabledBuild]) + expect(table.trim()).toBe(dedent` + + + + + + + + + + + + + + + +
Gradle Root ProjectRequested TasksGradle VersionBuild OutcomeBuild Scan®
roothelp8.0:white_check_mark:Build Scan NOT_PUBLISHED
+ `); + }) + it('publishing failed', () => { + const table = renderSummaryTable([scanPublishFailedBuild]) + expect(table.trim()).toBe(dedent` + + + + + + + + + + + + + + + +
Gradle Root ProjectRequested TasksGradle VersionBuild OutcomeBuild Scan®
roothelp8.0:white_check_mark:Build Scan PUBLISH_FAILED
+ `); + }) + }) + it('multiple builds', () => { + const table = renderSummaryTable([successfulHelpBuild, failedHelpBuild]) + expect(table.trim()).toBe(dedent` + + + + + + + + + + + + + + + + + + + + + + +
Gradle Root ProjectRequested TasksGradle VersionBuild OutcomeBuild Scan®
roothelp8.0:white_check_mark:Build Scan PUBLISHED
roothelp8.0:x:Build Scan PUBLISHED
+ `); + }) + it('truncating long requested tasks', () => { + const table = renderSummaryTable([longArgsBuild]) + expect(table.trim()).toBe(dedent` + + + + + + + + + + + + + + + +
Gradle Root ProjectRequested TasksGradle VersionBuild OutcomeBuild Scan®
root
check publishMyLongNamePluginPublicationToMavenCentral publ…
8.0:white_check_mark:Build Scan PUBLISHED
+ `); + }) + }) +}) From cd62d9c9efc15c90df77242059b98bdaa4f39a43 Mon Sep 17 00:00:00 2001 From: Gabriel Feo Date: Thu, 25 Apr 2024 17:38:12 +0100 Subject: [PATCH 3/3] Improve job summary readability with long tasks Change tests for nbsp and concise badge Make tests pass Signed-off-by: Gabriel Feo --- sources/src/job-summary.ts | 55 +++++++++++++++++++-------- sources/test/jest/job-summary.test.ts | 26 ++++++------- 2 files changed, 52 insertions(+), 29 deletions(-) diff --git a/sources/src/job-summary.ts b/sources/src/job-summary.ts index adac66d..afaefff 100644 --- a/sources/src/job-summary.ts +++ b/sources/src/job-summary.ts @@ -113,7 +113,7 @@ function renderBuildResults(results: BuildResult[]): string { Requested Tasks Gradle Version Build Outcome - Build Scan® + Build Scan® ${results.map(result => renderBuildResultRow(result)).join('')} ` @@ -134,23 +134,46 @@ function renderOutcome(result: BuildResult): string { return result.buildFailed ? ':x:' : ':white_check_mark:' } -function renderBuildScan(result: BuildResult): string { - if (result.buildScanFailed) { - return renderBuildScanBadge( - 'PUBLISH_FAILED', - 'orange', - 'https://docs.gradle.com/develocity/gradle-plugin/#troubleshooting' - ) - } - if (result.buildScanUri) { - return renderBuildScanBadge('PUBLISHED', '06A0CE', result.buildScanUri) - } - return renderBuildScanBadge('NOT_PUBLISHED', 'lightgrey', 'https://scans.gradle.com') +interface BadgeSpec { + text: string + alt: string + color: string + logo: boolean + targetUrl: string } -function renderBuildScanBadge(outcomeText: string, outcomeColor: string, targetUrl: string): string { - const badgeUrl = `https://img.shields.io/badge/Build%20Scan%C2%AE-${outcomeText}-${outcomeColor}?logo=Gradle` - const badgeHtml = `Build Scan ${outcomeText}` +function renderBuildScan(result: BuildResult): string { + if (result.buildScanFailed) { + return renderBuildScanBadge({ + text: 'Publish failed', + alt: 'Build Scan publish failed', + color: 'orange', + logo: false, + targetUrl: 'https://docs.gradle.com/develocity/gradle-plugin/#troubleshooting' + }) + } + if (result.buildScanUri) { + return renderBuildScanBadge({ + text: 'Build Scan®', + alt: 'Build Scan published', + color: '06A0CE', + logo: true, + targetUrl: result.buildScanUri + }) + } + return renderBuildScanBadge({ + text: 'Not published', + alt: 'Build Scan not published', + color: 'lightgrey', + logo: false, + targetUrl: 'https://scans.gradle.com' + }) +} + +function renderBuildScanBadge({text, alt, color, logo, targetUrl}: BadgeSpec): string { + const encodedText = encodeURIComponent(text) + const badgeUrl = `https://img.shields.io/badge/${encodedText}-${color}${logo ? '?logo=Gradle' : ''}` + const badgeHtml = `${alt}` return `${badgeHtml}` } diff --git a/sources/test/jest/job-summary.test.ts b/sources/test/jest/job-summary.test.ts index c38021e..91cffa2 100644 --- a/sources/test/jest/job-summary.test.ts +++ b/sources/test/jest/job-summary.test.ts @@ -47,14 +47,14 @@ describe('renderSummaryTable', () => { Requested Tasks Gradle Version Build Outcome - Build Scan® + Build Scan® root help 8.0 :white_check_mark: - Build Scan PUBLISHED + Build Scan published `); @@ -68,14 +68,14 @@ describe('renderSummaryTable', () => { Requested Tasks Gradle Version Build Outcome - Build Scan® + Build Scan® root help 8.0 :x: - Build Scan PUBLISHED + Build Scan published `); @@ -90,14 +90,14 @@ describe('renderSummaryTable', () => { Requested Tasks Gradle Version Build Outcome - Build Scan® + Build Scan® root help 8.0 :white_check_mark: - Build Scan NOT_PUBLISHED + Build Scan not published `); @@ -111,14 +111,14 @@ describe('renderSummaryTable', () => { Requested Tasks Gradle Version Build Outcome - Build Scan® + Build Scan® root help 8.0 :white_check_mark: - Build Scan PUBLISH_FAILED + Build Scan publish failed `); @@ -133,21 +133,21 @@ describe('renderSummaryTable', () => { Requested Tasks Gradle Version Build Outcome - Build Scan® + Build Scan® root help 8.0 :white_check_mark: - Build Scan PUBLISHED + Build Scan published root help 8.0 :x: - Build Scan PUBLISHED + Build Scan published `); @@ -161,14 +161,14 @@ describe('renderSummaryTable', () => { Requested Tasks Gradle Version Build Outcome - Build Scan® + Build Scan® root
check publishMyLongNamePluginPublicationToMavenCentral publ…
8.0 :white_check_mark: - Build Scan PUBLISHED + Build Scan published `);