From 49a22f7a3e2ca460c141c3425ad1159c2e0427ae Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Mon, 5 Feb 2024 09:06:27 +0100 Subject: [PATCH 1/2] buildx: test install Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- .github/workflows/test.yml | 6 +++++ __tests__/buildx/install.test.itg.ts | 40 ++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 __tests__/buildx/install.test.itg.ts diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5c0bc71..b78918d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -88,6 +88,12 @@ jobs: test: buildx/bake.test.itg.ts - os: windows-latest test: buildx/bake.test.itg.ts + - os: macos-13 + test: buildx/install.test.itg.ts + - os: macos-latest + test: buildx/install.test.itg.ts + - os: windows-latest + test: buildx/install.test.itg.ts steps: - name: Checkout diff --git a/__tests__/buildx/install.test.itg.ts b/__tests__/buildx/install.test.itg.ts new file mode 100644 index 0000000..746095f --- /dev/null +++ b/__tests__/buildx/install.test.itg.ts @@ -0,0 +1,40 @@ +/** + * Copyright 2023 actions-toolkit authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {describe, expect, test} from '@jest/globals'; +import * as fs from 'fs'; + +import {Install} from '../../src/buildx/install'; + +describe('download', () => { + // prettier-ignore + test.each(['latest'])( + 'install docker %s', async (version) => { + await expect((async () => { + const install = new Install({ + standalone: true + }); + const toolPath = await install.download(version); + if (!fs.existsSync(toolPath)) { + throw new Error('toolPath does not exist'); + } + const binPath = await install.installStandalone(toolPath); + if (!fs.existsSync(binPath)) { + throw new Error('binPath does not exist'); + } + })()).resolves.not.toThrow(); + }, 60000); +}); From bf4bc3c0362e8ad4835a77c5719d3d1feb11cb80 Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Mon, 5 Feb 2024 09:18:16 +0100 Subject: [PATCH 2/2] test: move itg exclusions to jest Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- .github/workflows/test.yml | 16 ++-------------- __tests__/buildx/bake.test.itg.ts | 4 +++- __tests__/buildx/install.test.itg.ts | 4 +++- 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b78918d..f01fe11 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -81,19 +81,6 @@ jobs: - macos-13 - macos-latest - windows-latest - exclude: - - os: macos-13 - test: buildx/bake.test.itg.ts - - os: macos-latest - test: buildx/bake.test.itg.ts - - os: windows-latest - test: buildx/bake.test.itg.ts - - os: macos-13 - test: buildx/install.test.itg.ts - - os: macos-latest - test: buildx/install.test.itg.ts - - os: windows-latest - test: buildx/install.test.itg.ts steps: - name: Checkout @@ -109,7 +96,8 @@ jobs: run: yarn install - name: Test - run: yarn test:itg-coverage --runTestsByPath __tests__/${{ matrix.test }} --coverageDirectory=./coverage + run: | + yarn test:itg-coverage --runTestsByPath __tests__/${{ matrix.test }} --coverageDirectory=./coverage env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - diff --git a/__tests__/buildx/bake.test.itg.ts b/__tests__/buildx/bake.test.itg.ts index 270ba5d..8778ecd 100644 --- a/__tests__/buildx/bake.test.itg.ts +++ b/__tests__/buildx/bake.test.itg.ts @@ -23,11 +23,13 @@ import {BakeDefinition} from '../../src/types/bake'; const fixturesDir = path.join(__dirname, '..', 'fixtures'); +const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.imageOS && process.env.imageOS.startsWith('ubuntu')) ? describe : describe.skip; + beforeEach(() => { jest.clearAllMocks(); }); -describe('parseDefinitions', () => { +maybe('parseDefinitions', () => { // prettier-ignore test.each([ [ diff --git a/__tests__/buildx/install.test.itg.ts b/__tests__/buildx/install.test.itg.ts index 746095f..6dca1bc 100644 --- a/__tests__/buildx/install.test.itg.ts +++ b/__tests__/buildx/install.test.itg.ts @@ -19,7 +19,9 @@ import * as fs from 'fs'; import {Install} from '../../src/buildx/install'; -describe('download', () => { +const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.imageOS && process.env.imageOS.startsWith('ubuntu')) ? describe : describe.skip; + +maybe('download', () => { // prettier-ignore test.each(['latest'])( 'install docker %s', async (version) => {