From b8f7b569bb23edbe844af6c0d838c32637f91a8d Mon Sep 17 00:00:00 2001 From: Paul Merlin Date: Fri, 10 Jan 2020 17:10:52 +0100 Subject: [PATCH 1/6] Fix name in README Signed-off-by: Paul Merlin --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eed9c8f..a532bf9 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: eskatos/gradle-wrapper-check@releases/v1 + - uses: gradle/wrapper-validation-action@releases/v1 ``` ## Reporting Failures From 66b3019a7f6c0d41cf6d0343b2771fab85731e99 Mon Sep 17 00:00:00 2001 From: Paul Merlin Date: Fri, 10 Jan 2020 17:20:05 +0100 Subject: [PATCH 2/6] Refine README Signed-off-by: Paul Merlin --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a532bf9..83f0812 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ Here's a sample complete workflow you can add to your repositories: **`.github/workflows/gradle-wrapper-validation.yml`** ```yaml name: "Validate Gradle Wrapper" -on: [push, pull_request] +on: [push] jobs: validation: From 9393a6ed9826e954408dfad70e6f8bccb4ff09be Mon Sep 17 00:00:00 2001 From: Paul Merlin Date: Fri, 10 Jan 2020 17:54:22 +0100 Subject: [PATCH 3/6] Introduce min-wrapper-count input Signed-off-by: Paul Merlin --- __tests__/validate.test.ts | 10 ++++++++++ action.yml | 4 ++++ dist/index.js | 8 ++++++-- src/main.ts | 2 ++ src/validate.ts | 10 ++++++++++ 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/__tests__/validate.test.ts b/__tests__/validate.test.ts index 647d366..042b6bd 100644 --- a/__tests__/validate.test.ts +++ b/__tests__/validate.test.ts @@ -4,6 +4,7 @@ import * as validate from '../src/validate' test('validates wrapper jars', async () => { const invalidWrapperJars = await validate.findInvalidWrapperJars( path.resolve('.'), + 2, false, [] ) @@ -15,3 +16,12 @@ test('validates wrapper jars', async () => { ) ) }) + +test('fails if not enough wrapper jars are found', async () => { + await expect(validate.findInvalidWrapperJars( + path.resolve('.'), + 3, + false, + [] + )).rejects.toThrowError('Expected at least 3 but got only 2') +}) diff --git a/action.yml b/action.yml index c3c843a..17deebd 100644 --- a/action.yml +++ b/action.yml @@ -2,6 +2,10 @@ name: 'Gradle Wrapper Validation' description: 'Validates Gradle Wrapper JAR Files' author: 'Gradle' inputs: + min-wrapper-count: + description: 'Minimum expected wrapper JAR files' + required: false + default: '1' allow-snapshots: description: 'Allow snapshot Gradle versions' required: false diff --git a/dist/index.js b/dist/index.js index ebba283..84a43be 100644 --- a/dist/index.js +++ b/dist/index.js @@ -340,9 +340,10 @@ const validate = __importStar(__webpack_require__(474)); function run() { return __awaiter(this, void 0, void 0, function* () { try { + const minWrapperCount = +core.getInput('min-wrapper-count'); const allowSnapshots = core.getInput('allow-snapshots') === 'true'; const allowChecksums = core.getInput('allow-checksums').split(','); - const invalidWrapperJars = yield validate.findInvalidWrapperJars(path.resolve('.'), allowSnapshots, allowChecksums); + const invalidWrapperJars = yield validate.findInvalidWrapperJars(path.resolve('.'), minWrapperCount, allowSnapshots, allowChecksums); if (invalidWrapperJars.length > 0) { const list = invalidWrapperJars.map(invalid => `${invalid.checksum} ${invalid.path}`); core.setFailed(`Found unknown Gradle Wrapper JAR files\n${list.join('\n- ')}`); @@ -944,9 +945,12 @@ Object.defineProperty(exports, "__esModule", { value: true }); const find = __importStar(__webpack_require__(625)); const checksums = __importStar(__webpack_require__(762)); const hash = __importStar(__webpack_require__(652)); -function findInvalidWrapperJars(gitRepoRoot, allowSnapshots, allowChecksums) { +function findInvalidWrapperJars(gitRepoRoot, minWrapperCount, allowSnapshots, allowChecksums) { return __awaiter(this, void 0, void 0, function* () { const wrapperJars = yield find.findWrapperJars(gitRepoRoot); + if (wrapperJars.length < minWrapperCount) { + throw new Error(`Expected at least ${minWrapperCount} but got only ${wrapperJars.length}`); + } if (wrapperJars.length > 0) { const validChecksums = yield checksums.fetchValidChecksums(allowSnapshots); validChecksums.push(...allowChecksums); diff --git a/src/main.ts b/src/main.ts index 18abe2c..76a6299 100644 --- a/src/main.ts +++ b/src/main.ts @@ -5,10 +5,12 @@ import * as validate from './validate' export async function run(): Promise { try { + const minWrapperCount = +core.getInput('min-wrapper-count') const allowSnapshots = core.getInput('allow-snapshots') === 'true' const allowChecksums = core.getInput('allow-checksums').split(',') const invalidWrapperJars = await validate.findInvalidWrapperJars( path.resolve('.'), + minWrapperCount, allowSnapshots, allowChecksums ) diff --git a/src/validate.ts b/src/validate.ts index 05a577a..8a0e7f4 100644 --- a/src/validate.ts +++ b/src/validate.ts @@ -4,10 +4,20 @@ import * as hash from './hash' export async function findInvalidWrapperJars( gitRepoRoot: string, + minWrapperCount: number, allowSnapshots: boolean, allowChecksums: string[] ): Promise { const wrapperJars = await find.findWrapperJars(gitRepoRoot) + // eslint-disable-next-line no-console + console.log( + `Expected at least ${minWrapperCount} but got only ${wrapperJars.length}` + ) + if (wrapperJars.length < minWrapperCount) { + throw new Error( + `Expected at least ${minWrapperCount} but got only ${wrapperJars.length}` + ) + } if (wrapperJars.length > 0) { const validChecksums = await checksums.fetchValidChecksums(allowSnapshots) validChecksums.push(...allowChecksums) From 7c1b6a0c369fc04e77d931ef10199b84f070840e Mon Sep 17 00:00:00 2001 From: Paul Merlin Date: Fri, 10 Jan 2020 17:59:23 +0100 Subject: [PATCH 4/6] Refine min-wrapper-count error message Signed-off-by: Paul Merlin --- __tests__/validate.test.ts | 11 +++++------ dist/index.js | 2 +- src/validate.ts | 6 +----- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/__tests__/validate.test.ts b/__tests__/validate.test.ts index 042b6bd..a3ec714 100644 --- a/__tests__/validate.test.ts +++ b/__tests__/validate.test.ts @@ -18,10 +18,9 @@ test('validates wrapper jars', async () => { }) test('fails if not enough wrapper jars are found', async () => { - await expect(validate.findInvalidWrapperJars( - path.resolve('.'), - 3, - false, - [] - )).rejects.toThrowError('Expected at least 3 but got only 2') + await expect( + validate.findInvalidWrapperJars(path.resolve('.'), 3, false, []) + ).rejects.toThrowError( + 'Expected to find at least 3 Gradle Wrapper JARs but got only 2' + ) }) diff --git a/dist/index.js b/dist/index.js index 84a43be..fdda1cc 100644 --- a/dist/index.js +++ b/dist/index.js @@ -949,7 +949,7 @@ function findInvalidWrapperJars(gitRepoRoot, minWrapperCount, allowSnapshots, al return __awaiter(this, void 0, void 0, function* () { const wrapperJars = yield find.findWrapperJars(gitRepoRoot); if (wrapperJars.length < minWrapperCount) { - throw new Error(`Expected at least ${minWrapperCount} but got only ${wrapperJars.length}`); + throw new Error(`Expected to find at least ${minWrapperCount} Gradle Wrapper JARs but got only ${wrapperJars.length}`); } if (wrapperJars.length > 0) { const validChecksums = yield checksums.fetchValidChecksums(allowSnapshots); diff --git a/src/validate.ts b/src/validate.ts index 8a0e7f4..0be80e8 100644 --- a/src/validate.ts +++ b/src/validate.ts @@ -9,13 +9,9 @@ export async function findInvalidWrapperJars( allowChecksums: string[] ): Promise { const wrapperJars = await find.findWrapperJars(gitRepoRoot) - // eslint-disable-next-line no-console - console.log( - `Expected at least ${minWrapperCount} but got only ${wrapperJars.length}` - ) if (wrapperJars.length < minWrapperCount) { throw new Error( - `Expected at least ${minWrapperCount} but got only ${wrapperJars.length}` + `Expected to find at least ${minWrapperCount} Gradle Wrapper JARs but got only ${wrapperJars.length}` ) } if (wrapperJars.length > 0) { From eabf8f4ea70a38d503afbb9aec096139680f2885 Mon Sep 17 00:00:00 2001 From: Paul Merlin Date: Fri, 10 Jan 2020 18:04:36 +0100 Subject: [PATCH 5/6] Add Action branding Signed-off-by: Paul Merlin --- action.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/action.yml b/action.yml index 17deebd..f8c1801 100644 --- a/action.yml +++ b/action.yml @@ -1,6 +1,7 @@ name: 'Gradle Wrapper Validation' description: 'Validates Gradle Wrapper JAR Files' author: 'Gradle' + inputs: min-wrapper-count: description: 'Minimum expected wrapper JAR files' @@ -14,6 +15,11 @@ inputs: description: 'Allow arbitrary checksums, comma separated' required: false default: '' + runs: using: 'node12' main: 'dist/index.js' + +branding: + icon: 'shield' + color: gray-dark From b1eb08b764b4ba3c87ee1195e6ab1b97a87ec9f1 Mon Sep 17 00:00:00 2001 From: Paul Merlin Date: Fri, 10 Jan 2020 18:05:42 +0100 Subject: [PATCH 6/6] Fix README Signed-off-by: Paul Merlin --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 83f0812..3957a73 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ If any are found that do not match the SHA-256 checksums of our official release Simply add this action to your workflow **after** having checked out your source tree and **before** running any Gradle build: ```yaml -uses: gradle/wrapper-validation-action@releases/v1 +uses: gradle/wrapper-validation-action@v1 ``` Here's a sample complete workflow you can add to your repositories: @@ -55,7 +55,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: gradle/wrapper-validation-action@releases/v1 + - uses: gradle/wrapper-validation-action@v1 ``` ## Reporting Failures