From 42e59b7a6cf7737a7eea9718dbe54daa4eb14492 Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Tue, 30 Jul 2024 18:42:53 +0200 Subject: [PATCH 1/3] bake: handle build checks from metadata Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- __tests__/buildx/bake.test.ts | 23 +- __tests__/buildx/build.test.ts | 4 +- __tests__/buildx/buildx.test.itg.ts | 45 +- __tests__/fixtures/lint-other.Dockerfile | 26 + __tests__/fixtures/lint.hcl | 26 + __tests__/fixtures/metadata-bake.json | 476 ++++++++++++++++++ .../{metadata.json => metadata-build.json} | 0 src/buildx/bake.ts | 14 + 8 files changed, 601 insertions(+), 13 deletions(-) create mode 100644 __tests__/fixtures/lint-other.Dockerfile create mode 100644 __tests__/fixtures/lint.hcl create mode 100644 __tests__/fixtures/metadata-bake.json rename __tests__/fixtures/{metadata.json => metadata-build.json} (100%) diff --git a/__tests__/buildx/bake.test.ts b/__tests__/buildx/bake.test.ts index 8341571d..47f22d3b 100644 --- a/__tests__/buildx/bake.test.ts +++ b/__tests__/buildx/bake.test.ts @@ -28,16 +28,9 @@ import {BuildMetadata} from '../../src/types/buildx/build'; const fixturesDir = path.join(__dirname, '..', 'fixtures'); // prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-inputs-jest'); +const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-bake-jest'); const tmpName = path.join(tmpDir, '.tmpname-jest'); -const metadata: BuildMetadata = { - app: { - 'buildx.build.ref': 'default/default/7frbdw1fmfozgtqavghowsepk' - }, - db: { - 'buildx.build.ref': 'default/default/onic7g2axylf56rxetob7qruy' - } -}; +const metadata = JSON.parse(fs.readFileSync(path.join(fixturesDir, 'metadata-bake.json'), 'utf-8')); jest.spyOn(Context, 'tmpDir').mockImplementation((): string => { if (!fs.existsSync(tmpDir)) { @@ -66,7 +59,17 @@ describe('resolveRefs', () => { it('matches', async () => { const bake = new Bake(); fs.writeFileSync(bake.getMetadataFilePath(), JSON.stringify(metadata)); - expect(bake.resolveRefs()).toEqual(['default/default/7frbdw1fmfozgtqavghowsepk', 'default/default/onic7g2axylf56rxetob7qruy']); + expect(bake.resolveRefs()).toEqual(['default/default/x3tig9yrbzg2bp0ahn840m9hs', 'default/default/f9i6og3j529lrezk83aw9k8fr', 'default/default/yfq4itxr5kgustkcmp8jr4b9m']); + }); +}); + +describe('resolveWarnings', () => { + it('matches', async () => { + const bake = new Bake(); + fs.writeFileSync(bake.getMetadataFilePath(), JSON.stringify(metadata)); + const warnings = bake.resolveWarnings(); + expect(warnings).toBeDefined(); + expect(warnings?.length).toEqual(13); }); }); diff --git a/__tests__/buildx/build.test.ts b/__tests__/buildx/build.test.ts index 84b9cdc7..f7bc83cc 100644 --- a/__tests__/buildx/build.test.ts +++ b/__tests__/buildx/build.test.ts @@ -24,9 +24,9 @@ import {Build} from '../../src/buildx/build'; const fixturesDir = path.join(__dirname, '..', 'fixtures'); // prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-inputs-jest'); +const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-build-jest'); const tmpName = path.join(tmpDir, '.tmpname-jest'); -const metadata = JSON.parse(fs.readFileSync(path.join(fixturesDir, 'metadata.json'), 'utf-8')); +const metadata = JSON.parse(fs.readFileSync(path.join(fixturesDir, 'metadata-build.json'), 'utf-8')); jest.spyOn(Context, 'tmpDir').mockImplementation((): string => { if (!fs.existsSync(tmpDir)) { diff --git a/__tests__/buildx/buildx.test.itg.ts b/__tests__/buildx/buildx.test.itg.ts index 9a251e3c..cf7bcdcb 100644 --- a/__tests__/buildx/buildx.test.itg.ts +++ b/__tests__/buildx/buildx.test.itg.ts @@ -21,6 +21,7 @@ import * as core from '@actions/core'; import {Buildx} from '../../src/buildx/buildx'; import {Build} from '../../src/buildx/build'; +import {Bake} from '../../src/buildx/bake'; import {Exec} from '../../src/exec'; const fixturesDir = path.join(__dirname, '..', 'fixtures'); @@ -31,7 +32,7 @@ const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-jest'); const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip; maybe('convertWarningsToGitHubAnnotations', () => { - it('annotate lint issues', async () => { + it('build lint issues', async () => { const buildx = new Buildx(); const build = new Build({buildx: buildx}); @@ -71,4 +72,46 @@ maybe('convertWarningsToGitHubAnnotations', () => { core.warning(annotation.message, annotation); } }); + + it('bake lint issues', async () => { + const buildx = new Buildx(); + const bake = new Bake({buildx: buildx}); + + fs.mkdirSync(tmpDir, {recursive: true}); + await expect( + (async () => { + // prettier-ignore + const buildCmd = await buildx.getCommand([ + '--builder', process.env.CTN_BUILDER_NAME ?? 'default', + 'bake', + '-f', path.join(fixturesDir, 'lint.hcl'), + '--metadata-file', bake.getMetadataFilePath() + ]); + await Exec.exec(buildCmd.command, buildCmd.args, { + cwd: fixturesDir, + env: Object.assign({}, process.env, { + BUILDX_METADATA_WARNINGS: 'true' + }) as { + [key: string]: string; + } + }); + })() + ).resolves.not.toThrow(); + + const metadata = bake.resolveMetadata(); + expect(metadata).toBeDefined(); + const buildRefs = bake.resolveRefs(metadata); + expect(buildRefs).toBeDefined(); + expect(buildRefs?.length).toEqual(3); + const buildWarnings = bake.resolveWarnings(metadata); + expect(buildWarnings).toBeDefined(); + + const annotations = await Buildx.convertWarningsToGitHubAnnotations(buildWarnings ?? [], buildRefs ?? []); + expect(annotations).toBeDefined(); + expect(annotations?.length).toBeGreaterThan(0); + + for (const annotation of annotations ?? []) { + core.warning(annotation.message, annotation); + } + }); }); diff --git a/__tests__/fixtures/lint-other.Dockerfile b/__tests__/fixtures/lint-other.Dockerfile new file mode 100644 index 00000000..7db5b1e5 --- /dev/null +++ b/__tests__/fixtures/lint-other.Dockerfile @@ -0,0 +1,26 @@ +# syntax=docker/dockerfile-upstream:master + +# Copyright 2024 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. + +frOM busybox as base +cOpy lint-other.Dockerfile . + +froM busybox aS notused +COPY lint-other.Dockerfile . + +from scratch +COPy --from=base \ + /lint-other.Dockerfile \ + / diff --git a/__tests__/fixtures/lint.hcl b/__tests__/fixtures/lint.hcl new file mode 100644 index 00000000..1f21c3ed --- /dev/null +++ b/__tests__/fixtures/lint.hcl @@ -0,0 +1,26 @@ +// Copyright 2024 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. + +group "default" { + targets = ["lint", "lint-other", "lint-inline"] +} +target "lint" { + dockerfile = "lint.Dockerfile" +} +target "lint-other" { + dockerfile = "lint-other.Dockerfile" +} +target "lint-inline" { + dockerfile-inline = "FRoM alpine\nENTRYPOINT [\"echo\", \"hello\"]" +} diff --git a/__tests__/fixtures/metadata-bake.json b/__tests__/fixtures/metadata-bake.json new file mode 100644 index 00000000..78df3d29 --- /dev/null +++ b/__tests__/fixtures/metadata-bake.json @@ -0,0 +1,476 @@ +{ + "buildx.build.warnings": [ + { + "vertex": "sha256:a5ba072453def0016837337b14eac8e587782c88e0f40bef076f63c91aa757b4", + "level": 1, + "short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdmck9NJyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMTcp", + "detail": [ + "QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ==" + ], + "url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/", + "sourceInfo": { + "filename": "lint-other.Dockerfile", + "data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvTSBidXN5Ym94IGFTIG5vdHVzZWQKQ09QWSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCkNPUHkgLS1mcm9tPWJhc2UgXAogIC9saW50LW90aGVyLkRvY2tlcmZpbGUgXAogIC8K", + "language": "Dockerfile" + }, + "range": [ + { + "start": { + "line": 17 + }, + "end": { + "line": 17 + } + } + ] + }, + { + "vertex": "sha256:a5ba072453def0016837337b14eac8e587782c88e0f40bef076f63c91aa757b4", + "level": 1, + "short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdmcm9NJyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMjAp", + "detail": [ + "QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ==" + ], + "url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/", + "sourceInfo": { + "filename": "lint-other.Dockerfile", + "data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvTSBidXN5Ym94IGFTIG5vdHVzZWQKQ09QWSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCkNPUHkgLS1mcm9tPWJhc2UgXAogIC9saW50LW90aGVyLkRvY2tlcmZpbGUgXAogIC8K", + "language": "Dockerfile" + }, + "range": [ + { + "start": { + "line": 20 + }, + "end": { + "line": 20 + } + } + ] + }, + { + "vertex": "sha256:a5ba072453def0016837337b14eac8e587782c88e0f40bef076f63c91aa757b4", + "level": 1, + "short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdDT1B5JyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMjQp", + "detail": [ + "QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ==" + ], + "url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/", + "sourceInfo": { + "filename": "lint-other.Dockerfile", + "data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvTSBidXN5Ym94IGFTIG5vdHVzZWQKQ09QWSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCkNPUHkgLS1mcm9tPWJhc2UgXAogIC9saW50LW90aGVyLkRvY2tlcmZpbGUgXAogIC8K", + "language": "Dockerfile" + }, + "range": [ + { + "start": { + "line": 24 + }, + "end": { + "line": 24 + } + }, + { + "start": { + "line": 25 + }, + "end": { + "line": 25 + } + }, + { + "start": { + "line": 26 + }, + "end": { + "line": 26 + } + } + ] + }, + { + "vertex": "sha256:703fee0c090bf71539abdd28ae63eb49ced05ebd6da49db96224888f49db219d", + "level": 1, + "short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdmcm9tJyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMjAp", + "detail": [ + "QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ==" + ], + "url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/", + "sourceInfo": { + "filename": "lint.Dockerfile", + "data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCk1BSU5UQUlORVIgbW9ieUBleGFtcGxlLmNvbQpDT1B5IC0tZnJvbT1iYXNlIFwKICAvbGludC5Eb2NrZXJmaWxlIFwKICAvCgpDTUQgWyAiZWNobyIsICJIZWxsbywgTm9yd2F5ISIgXQpDTUQgWyAiZWNobyIsICJIZWxsbywgU3dlZGVuISIgXQpFTlRSWVBPSU5UIG15LXByb2dyYW0gc3RhcnQK", + "language": "Dockerfile" + }, + "range": [ + { + "start": { + "line": 20 + }, + "end": { + "line": 20 + } + } + ] + }, + { + "vertex": "sha256:703fee0c090bf71539abdd28ae63eb49ced05ebd6da49db96224888f49db219d", + "level": 1, + "short": "TWFpbnRhaW5lckRlcHJlY2F0ZWQ6IE1haW50YWluZXIgaW5zdHJ1Y3Rpb24gaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB1c2luZyBsYWJlbCAobGluZSAyMSk=", + "detail": [ + "VGhlIE1BSU5UQUlORVIgaW5zdHJ1Y3Rpb24gaXMgZGVwcmVjYXRlZCwgdXNlIGEgbGFiZWwgaW5zdGVhZCB0byBkZWZpbmUgYW4gaW1hZ2UgYXV0aG9y" + ], + "url": "https://docs.docker.com/go/dockerfile/rule/maintainer-deprecated/", + "sourceInfo": { + "filename": "lint.Dockerfile", + "data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCk1BSU5UQUlORVIgbW9ieUBleGFtcGxlLmNvbQpDT1B5IC0tZnJvbT1iYXNlIFwKICAvbGludC5Eb2NrZXJmaWxlIFwKICAvCgpDTUQgWyAiZWNobyIsICJIZWxsbywgTm9yd2F5ISIgXQpDTUQgWyAiZWNobyIsICJIZWxsbywgU3dlZGVuISIgXQpFTlRSWVBPSU5UIG15LXByb2dyYW0gc3RhcnQK", + "language": "Dockerfile" + }, + "range": [ + { + "start": { + "line": 21 + }, + "end": { + "line": 21 + } + } + ] + }, + { + "vertex": "sha256:703fee0c090bf71539abdd28ae63eb49ced05ebd6da49db96224888f49db219d", + "level": 1, + "short": "TXVsdGlwbGVJbnN0cnVjdGlvbnNEaXNhbGxvd2VkOiBNdWx0aXBsZSBDTUQgaW5zdHJ1Y3Rpb25zIHNob3VsZCBub3QgYmUgdXNlZCBpbiB0aGUgc2FtZSBzdGFnZSBiZWNhdXNlIG9ubHkgdGhlIGxhc3Qgb25lIHdpbGwgYmUgdXNlZCAobGluZSAyNik=", + "detail": [ + "TXVsdGlwbGUgaW5zdHJ1Y3Rpb25zIG9mIHRoZSBzYW1lIHR5cGUgc2hvdWxkIG5vdCBiZSB1c2VkIGluIHRoZSBzYW1lIHN0YWdl" + ], + "url": "https://docs.docker.com/go/dockerfile/rule/multiple-instructions-disallowed/", + "sourceInfo": { + "filename": "lint.Dockerfile", + "data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCk1BSU5UQUlORVIgbW9ieUBleGFtcGxlLmNvbQpDT1B5IC0tZnJvbT1iYXNlIFwKICAvbGludC5Eb2NrZXJmaWxlIFwKICAvCgpDTUQgWyAiZWNobyIsICJIZWxsbywgTm9yd2F5ISIgXQpDTUQgWyAiZWNobyIsICJIZWxsbywgU3dlZGVuISIgXQpFTlRSWVBPSU5UIG15LXByb2dyYW0gc3RhcnQK", + "language": "Dockerfile" + }, + "range": [ + { + "start": { + "line": 26 + }, + "end": { + "line": 26 + } + } + ] + }, + { + "vertex": "sha256:703fee0c090bf71539abdd28ae63eb49ced05ebd6da49db96224888f49db219d", + "level": 1, + "short": "SlNPTkFyZ3NSZWNvbW1lbmRlZDogSlNPTiBhcmd1bWVudHMgcmVjb21tZW5kZWQgZm9yIEVOVFJZUE9JTlQgdG8gcHJldmVudCB1bmludGVuZGVkIGJlaGF2aW9yIHJlbGF0ZWQgdG8gT1Mgc2lnbmFscyAobGluZSAyOCk=", + "detail": [ + "SlNPTiBhcmd1bWVudHMgcmVjb21tZW5kZWQgZm9yIEVOVFJZUE9JTlQvQ01EIHRvIHByZXZlbnQgdW5pbnRlbmRlZCBiZWhhdmlvciByZWxhdGVkIHRvIE9TIHNpZ25hbHM=" + ], + "url": "https://docs.docker.com/go/dockerfile/rule/json-args-recommended/", + "sourceInfo": { + "filename": "lint.Dockerfile", + "data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCk1BSU5UQUlORVIgbW9ieUBleGFtcGxlLmNvbQpDT1B5IC0tZnJvbT1iYXNlIFwKICAvbGludC5Eb2NrZXJmaWxlIFwKICAvCgpDTUQgWyAiZWNobyIsICJIZWxsbywgTm9yd2F5ISIgXQpDTUQgWyAiZWNobyIsICJIZWxsbywgU3dlZGVuISIgXQpFTlRSWVBPSU5UIG15LXByb2dyYW0gc3RhcnQK", + "language": "Dockerfile" + }, + "range": [ + { + "start": { + "line": 28 + }, + "end": { + "line": 28 + } + } + ] + }, + { + "vertex": "sha256:a14452ec03a7f128fb0a1da8c4afdc78175fa9a97ff83ace427b3c39509d459b", + "level": 1, + "short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdGUm9NJyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMSk=", + "detail": [ + "QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ==" + ], + "url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/", + "sourceInfo": { + "filename": "Dockerfile", + "data": "RlJvTSBhbHBpbmUKRU5UUllQT0lOVCBbImVjaG8iLCAiaGVsbG8iXQ==", + "language": "Dockerfile" + }, + "range": [ + { + "start": { + "line": 1 + }, + "end": { + "line": 1 + } + } + ] + }, + { + "vertex": "sha256:a5ba072453def0016837337b14eac8e587782c88e0f40bef076f63c91aa757b4", + "level": 1, + "short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdmcm9tJyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMjMp", + "detail": [ + "QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ==" + ], + "url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/", + "sourceInfo": { + "filename": "lint-other.Dockerfile", + "data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvTSBidXN5Ym94IGFTIG5vdHVzZWQKQ09QWSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCkNPUHkgLS1mcm9tPWJhc2UgXAogIC9saW50LW90aGVyLkRvY2tlcmZpbGUgXAogIC8K", + "language": "Dockerfile" + }, + "range": [ + { + "start": { + "line": 23 + }, + "end": { + "line": 23 + } + } + ] + }, + { + "vertex": "sha256:703fee0c090bf71539abdd28ae63eb49ced05ebd6da49db96224888f49db219d", + "level": 1, + "short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdmck9NJyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMTcp", + "detail": [ + "QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ==" + ], + "url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/", + "sourceInfo": { + "filename": "lint.Dockerfile", + "data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCk1BSU5UQUlORVIgbW9ieUBleGFtcGxlLmNvbQpDT1B5IC0tZnJvbT1iYXNlIFwKICAvbGludC5Eb2NrZXJmaWxlIFwKICAvCgpDTUQgWyAiZWNobyIsICJIZWxsbywgTm9yd2F5ISIgXQpDTUQgWyAiZWNobyIsICJIZWxsbywgU3dlZGVuISIgXQpFTlRSWVBPSU5UIG15LXByb2dyYW0gc3RhcnQK", + "language": "Dockerfile" + }, + "range": [ + { + "start": { + "line": 17 + }, + "end": { + "line": 17 + } + } + ] + }, + { + "vertex": "sha256:703fee0c090bf71539abdd28ae63eb49ced05ebd6da49db96224888f49db219d", + "level": 1, + "short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdjT3B5JyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMTgp", + "detail": [ + "QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ==" + ], + "url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/", + "sourceInfo": { + "filename": "lint.Dockerfile", + "data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCk1BSU5UQUlORVIgbW9ieUBleGFtcGxlLmNvbQpDT1B5IC0tZnJvbT1iYXNlIFwKICAvbGludC5Eb2NrZXJmaWxlIFwKICAvCgpDTUQgWyAiZWNobyIsICJIZWxsbywgTm9yd2F5ISIgXQpDTUQgWyAiZWNobyIsICJIZWxsbywgU3dlZGVuISIgXQpFTlRSWVBPSU5UIG15LXByb2dyYW0gc3RhcnQK", + "language": "Dockerfile" + }, + "range": [ + { + "start": { + "line": 18 + }, + "end": { + "line": 18 + } + } + ] + }, + { + "vertex": "sha256:703fee0c090bf71539abdd28ae63eb49ced05ebd6da49db96224888f49db219d", + "level": 1, + "short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdDT1B5JyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMjIp", + "detail": [ + "QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ==" + ], + "url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/", + "sourceInfo": { + "filename": "lint.Dockerfile", + "data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCk1BSU5UQUlORVIgbW9ieUBleGFtcGxlLmNvbQpDT1B5IC0tZnJvbT1iYXNlIFwKICAvbGludC5Eb2NrZXJmaWxlIFwKICAvCgpDTUQgWyAiZWNobyIsICJIZWxsbywgTm9yd2F5ISIgXQpDTUQgWyAiZWNobyIsICJIZWxsbywgU3dlZGVuISIgXQpFTlRSWVBPSU5UIG15LXByb2dyYW0gc3RhcnQK", + "language": "Dockerfile" + }, + "range": [ + { + "start": { + "line": 22 + }, + "end": { + "line": 22 + } + }, + { + "start": { + "line": 23 + }, + "end": { + "line": 23 + } + }, + { + "start": { + "line": 24 + }, + "end": { + "line": 24 + } + } + ] + }, + { + "vertex": "sha256:a5ba072453def0016837337b14eac8e587782c88e0f40bef076f63c91aa757b4", + "level": 1, + "short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdjT3B5JyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMTgp", + "detail": [ + "QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ==" + ], + "url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/", + "sourceInfo": { + "filename": "lint-other.Dockerfile", + "data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvTSBidXN5Ym94IGFTIG5vdHVzZWQKQ09QWSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCkNPUHkgLS1mcm9tPWJhc2UgXAogIC9saW50LW90aGVyLkRvY2tlcmZpbGUgXAogIC8K", + "language": "Dockerfile" + }, + "range": [ + { + "start": { + "line": 18 + }, + "end": { + "line": 18 + } + } + ] + } + ], + "lint": { + "buildx.build.provenance": { + "buildType": "https://mobyproject.org/buildkit@v1", + "materials": [ + { + "uri": "pkg:docker/docker/dockerfile-upstream@master", + "digest": { + "sha256": "bcfc291ad4ebc0fb1f53d2b2e4a4f6ba5a6a5df61d8a501aa6edb18f8dec339f" + } + }, + { + "uri": "pkg:docker/busybox@latest?platform=linux%2Famd64", + "digest": { + "sha256": "9ae97d36d26566ff84e8893c64a6dc4fe8ca6d1144bf5b87b2b85a32def253c7" + } + } + ], + "invocation": { + "configSource": { + "entryPoint": "lint.Dockerfile" + }, + "parameters": { + "frontend": "gateway.v0", + "args": { + "cmdline": "docker/dockerfile-upstream:master", + "source": "docker/dockerfile-upstream:master" + }, + "locals": [ + { + "name": "context" + }, + { + "name": "dockerfile" + } + ] + }, + "environment": { + "platform": "linux/amd64" + } + } + }, + "buildx.build.ref": "default/default/x3tig9yrbzg2bp0ahn840m9hs", + "containerimage.config.digest": "sha256:0c1ae53d25e7cad9c1d81de558cdf959dfaf49e32d6918984eae14ae33197c2f", + "containerimage.digest": "sha256:0c1ae53d25e7cad9c1d81de558cdf959dfaf49e32d6918984eae14ae33197c2f" + }, + "lint-inline": { + "buildx.build.provenance": { + "buildType": "https://mobyproject.org/buildkit@v1", + "materials": [ + { + "uri": "pkg:docker/alpine@latest?platform=linux%2Famd64", + "digest": { + "sha256": "94e5f06ff8e3d4441dc3cd8b090ff38dc911bfa8ebdb0dc28395bc98f82f983f" + } + } + ], + "invocation": { + "configSource": { + "entryPoint": "Dockerfile" + }, + "parameters": { + "frontend": "dockerfile.v0", + "args": { + "dockerfilekey": "dockerfile" + }, + "locals": [ + { + "name": "context" + }, + { + "name": "dockerfile" + } + ] + }, + "environment": { + "platform": "linux/amd64" + } + } + }, + "buildx.build.ref": "default/default/f9i6og3j529lrezk83aw9k8fr", + "containerimage.config.digest": "sha256:b91f245896946759eb112149602f5638a9263d0ebc3d5e8b46533960494bda32", + "containerimage.digest": "sha256:b91f245896946759eb112149602f5638a9263d0ebc3d5e8b46533960494bda32" + }, + "lint-other": { + "buildx.build.provenance": { + "buildType": "https://mobyproject.org/buildkit@v1", + "materials": [ + { + "uri": "pkg:docker/docker/dockerfile-upstream@master", + "digest": { + "sha256": "bcfc291ad4ebc0fb1f53d2b2e4a4f6ba5a6a5df61d8a501aa6edb18f8dec339f" + } + }, + { + "uri": "pkg:docker/busybox@latest?platform=linux%2Famd64", + "digest": { + "sha256": "9ae97d36d26566ff84e8893c64a6dc4fe8ca6d1144bf5b87b2b85a32def253c7" + } + } + ], + "invocation": { + "configSource": { + "entryPoint": "lint-other.Dockerfile" + }, + "parameters": { + "frontend": "gateway.v0", + "args": { + "cmdline": "docker/dockerfile-upstream:master", + "source": "docker/dockerfile-upstream:master" + }, + "locals": [ + { + "name": "context" + }, + { + "name": "dockerfile" + } + ] + }, + "environment": { + "platform": "linux/amd64" + } + } + }, + "buildx.build.ref": "default/default/yfq4itxr5kgustkcmp8jr4b9m", + "containerimage.config.digest": "sha256:897b83786d8d9158cd652f8ea0d3c8efcd098273d74f6fb9daa6904144a31537", + "containerimage.digest": "sha256:897b83786d8d9158cd652f8ea0d3c8efcd098273d74f6fb9daa6904144a31537" + } +} \ No newline at end of file diff --git a/__tests__/fixtures/metadata.json b/__tests__/fixtures/metadata-build.json similarity index 100% rename from __tests__/fixtures/metadata.json rename to __tests__/fixtures/metadata-build.json diff --git a/src/buildx/bake.ts b/src/buildx/bake.ts index b53fa60a..48225cba 100644 --- a/src/buildx/bake.ts +++ b/src/buildx/bake.ts @@ -26,6 +26,7 @@ import {Util} from '../util'; import {ExecOptions} from '@actions/exec'; import {BakeDefinition} from '../types/buildx/bake'; import {BuildMetadata} from '../types/buildx/build'; +import {VertexWarning} from '../types/buildkit/client'; export interface BakeOpts { buildx?: Buildx; @@ -86,6 +87,19 @@ export class Bake { return refs.length > 0 ? refs : undefined; } + public resolveWarnings(metadata?: BuildMetadata): Array | undefined { + if (!metadata) { + metadata = this.resolveMetadata(); + if (!metadata) { + return undefined; + } + } + if ('buildx.build.warnings' in metadata) { + return metadata['buildx.build.warnings'] as Array; + } + return undefined; + } + public async getDefinition(cmdOpts: BakeCmdOpts, execOptions?: ExecOptions): Promise { execOptions = execOptions || {ignoreReturnCode: true}; execOptions.ignoreReturnCode = true; From aa8033de8f3ee1257ed485f66db111d8e213c092 Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Wed, 31 Jul 2024 11:01:57 +0200 Subject: [PATCH 2/3] jest: fix temp dir Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- __tests__/buildkit/config.test.ts | 12 +++++------- __tests__/buildx/bake.test.ts | 12 +++++------- __tests__/buildx/build.test.ts | 12 +++++------- __tests__/buildx/buildx.test.itg.ts | 9 ++++----- __tests__/buildx/buildx.test.ts | 12 +++++------- __tests__/buildx/history.test.itg.ts | 9 ++++----- __tests__/buildx/install.test.ts | 8 ++++---- __tests__/cache.test.itg.ts | 8 ++++---- __tests__/context.test.ts | 14 ++++++-------- __tests__/docker/docker.test.ts | 7 +++---- __tests__/docker/install.test.itg.ts | 7 ++++--- __tests__/docker/install.test.ts | 8 ++++---- __tests__/github.test.itg.ts | 7 +++---- __tests__/oci/oci.test.ts | 7 +++---- 14 files changed, 59 insertions(+), 73 deletions(-) diff --git a/__tests__/buildkit/config.test.ts b/__tests__/buildkit/config.test.ts index bf345fff..4a8a1a22 100644 --- a/__tests__/buildkit/config.test.ts +++ b/__tests__/buildkit/config.test.ts @@ -15,22 +15,20 @@ */ import {describe, expect, jest, test, afterEach} from '@jest/globals'; -import * as fs from 'fs'; -import * as path from 'path'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; import * as rimraf from 'rimraf'; import {BuildKit} from '../../src/buildkit/buildkit'; import {Context} from '../../src/context'; const fixturesDir = path.join(__dirname, '..', 'fixtures'); -// prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildkit-config-jest'); +const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildkit-config-')); const tmpName = path.join(tmpDir, '.tmpname-jest'); jest.spyOn(Context, 'tmpDir').mockImplementation((): string => { - if (!fs.existsSync(tmpDir)) { - fs.mkdirSync(tmpDir, {recursive: true}); - } + fs.mkdirSync(tmpDir, {recursive: true}); return tmpDir; }); diff --git a/__tests__/buildx/bake.test.ts b/__tests__/buildx/bake.test.ts index 47f22d3b..5e0f8200 100644 --- a/__tests__/buildx/bake.test.ts +++ b/__tests__/buildx/bake.test.ts @@ -15,8 +15,9 @@ */ import {afterEach, describe, expect, it, jest, test} from '@jest/globals'; -import * as fs from 'fs'; -import * as path from 'path'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; import * as rimraf from 'rimraf'; import {Bake} from '../../src/buildx/bake'; @@ -27,15 +28,12 @@ import {BakeDefinition} from '../../src/types/buildx/bake'; import {BuildMetadata} from '../../src/types/buildx/build'; const fixturesDir = path.join(__dirname, '..', 'fixtures'); -// prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-bake-jest'); +const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-bake-')); const tmpName = path.join(tmpDir, '.tmpname-jest'); const metadata = JSON.parse(fs.readFileSync(path.join(fixturesDir, 'metadata-bake.json'), 'utf-8')); jest.spyOn(Context, 'tmpDir').mockImplementation((): string => { - if (!fs.existsSync(tmpDir)) { - fs.mkdirSync(tmpDir, {recursive: true}); - } + fs.mkdirSync(tmpDir, {recursive: true}); return tmpDir; }); diff --git a/__tests__/buildx/build.test.ts b/__tests__/buildx/build.test.ts index f7bc83cc..b50dd32d 100644 --- a/__tests__/buildx/build.test.ts +++ b/__tests__/buildx/build.test.ts @@ -15,23 +15,21 @@ */ import {afterEach, beforeEach, describe, expect, it, jest, test} from '@jest/globals'; -import * as fs from 'fs'; -import * as path from 'path'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; import * as rimraf from 'rimraf'; import {Context} from '../../src/context'; import {Build} from '../../src/buildx/build'; const fixturesDir = path.join(__dirname, '..', 'fixtures'); -// prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-build-jest'); +const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-build-')); const tmpName = path.join(tmpDir, '.tmpname-jest'); const metadata = JSON.parse(fs.readFileSync(path.join(fixturesDir, 'metadata-build.json'), 'utf-8')); jest.spyOn(Context, 'tmpDir').mockImplementation((): string => { - if (!fs.existsSync(tmpDir)) { - fs.mkdirSync(tmpDir, {recursive: true}); - } + fs.mkdirSync(tmpDir, {recursive: true}); return tmpDir; }); diff --git a/__tests__/buildx/buildx.test.itg.ts b/__tests__/buildx/buildx.test.itg.ts index cf7bcdcb..5ebb0fa8 100644 --- a/__tests__/buildx/buildx.test.itg.ts +++ b/__tests__/buildx/buildx.test.itg.ts @@ -15,8 +15,9 @@ */ import {describe, expect, it} from '@jest/globals'; -import * as fs from 'fs'; -import * as path from 'path'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; import * as core from '@actions/core'; import {Buildx} from '../../src/buildx/buildx'; @@ -25,9 +26,7 @@ import {Bake} from '../../src/buildx/bake'; import {Exec} from '../../src/exec'; const fixturesDir = path.join(__dirname, '..', 'fixtures'); - -// prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-jest'); +const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-buildx-itg-')); const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip; diff --git a/__tests__/buildx/buildx.test.ts b/__tests__/buildx/buildx.test.ts index a8767802..3c0793d4 100644 --- a/__tests__/buildx/buildx.test.ts +++ b/__tests__/buildx/buildx.test.ts @@ -15,8 +15,9 @@ */ import {describe, expect, it, jest, test, beforeEach, afterEach} from '@jest/globals'; -import * as fs from 'fs'; -import * as path from 'path'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; import * as rimraf from 'rimraf'; import * as semver from 'semver'; @@ -27,14 +28,11 @@ import {Exec} from '../../src/exec'; import {Cert, LocalState} from '../../src/types/buildx/buildx'; const fixturesDir = path.join(__dirname, '..', 'fixtures'); -// prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-jest'); +const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-buildx-')); const tmpName = path.join(tmpDir, '.tmpname-jest'); jest.spyOn(Context, 'tmpDir').mockImplementation((): string => { - if (!fs.existsSync(tmpDir)) { - fs.mkdirSync(tmpDir, {recursive: true}); - } + fs.mkdirSync(tmpDir, {recursive: true}); return tmpDir; }); diff --git a/__tests__/buildx/history.test.itg.ts b/__tests__/buildx/history.test.itg.ts index efcf1e8e..0671286a 100644 --- a/__tests__/buildx/history.test.itg.ts +++ b/__tests__/buildx/history.test.itg.ts @@ -15,8 +15,9 @@ */ import {afterEach, beforeEach, describe, expect, it, jest, test} from '@jest/globals'; -import * as fs from 'fs'; -import * as path from 'path'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; import {Buildx} from '../../src/buildx/buildx'; import {Bake} from '../../src/buildx/bake'; @@ -25,9 +26,7 @@ import {History} from '../../src/buildx/history'; import {Exec} from '../../src/exec'; const fixturesDir = path.join(__dirname, '..', 'fixtures'); - -// prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-history-jest'); +const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-history-itg-')); const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip; diff --git a/__tests__/buildx/install.test.ts b/__tests__/buildx/install.test.ts index 92ae0b37..ed5b3580 100644 --- a/__tests__/buildx/install.test.ts +++ b/__tests__/buildx/install.test.ts @@ -15,15 +15,15 @@ */ import {describe, expect, it, jest, test, afterEach} from '@jest/globals'; -import * as fs from 'fs'; -import * as path from 'path'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; import * as rimraf from 'rimraf'; import osm = require('os'); import {Install} from '../../src/buildx/install'; -// prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-jest'); +const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-install-')); afterEach(function () { rimraf.sync(tmpDir); diff --git a/__tests__/cache.test.itg.ts b/__tests__/cache.test.itg.ts index ad295f74..02d3b884 100644 --- a/__tests__/cache.test.itg.ts +++ b/__tests__/cache.test.itg.ts @@ -14,15 +14,15 @@ * limitations under the License. */ -import path from 'path'; import {describe, expect, it} from '@jest/globals'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; import {Cache} from '../src/cache'; -// prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'cache-jest'); - const fixturesDir = path.join(__dirname, 'fixtures'); +const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'cache-itg-')); describe('cache', () => { it('github-repo', async () => { diff --git a/__tests__/context.test.ts b/__tests__/context.test.ts index 325655c0..0f975830 100644 --- a/__tests__/context.test.ts +++ b/__tests__/context.test.ts @@ -14,21 +14,19 @@ * limitations under the License. */ -import * as fs from 'fs'; -import * as path from 'path'; -import * as rimraf from 'rimraf'; import {describe, expect, jest, it, afterEach} from '@jest/globals'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; +import * as rimraf from 'rimraf'; import {Context} from '../src/context'; -// prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'context-jest'); +const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'context-')); const tmpName = path.join(tmpDir, '.tmpname-jest'); jest.spyOn(Context, 'tmpDir').mockImplementation((): string => { - if (!fs.existsSync(tmpDir)) { - fs.mkdirSync(tmpDir, {recursive: true}); - } + fs.mkdirSync(tmpDir, {recursive: true}); return tmpDir; }); diff --git a/__tests__/docker/docker.test.ts b/__tests__/docker/docker.test.ts index ea4f78fb..0b131135 100644 --- a/__tests__/docker/docker.test.ts +++ b/__tests__/docker/docker.test.ts @@ -15,7 +15,8 @@ */ import {afterEach, beforeEach, describe, expect, it, jest} from '@jest/globals'; -import * as fs from 'fs'; +import fs from 'fs'; +import os from 'os'; import path from 'path'; import * as io from '@actions/io'; import osm = require('os'); @@ -26,9 +27,7 @@ import {Docker} from '../../src/docker/docker'; import {ConfigFile} from '../../src/types/docker/docker'; const fixturesDir = path.join(__dirname, '..', 'fixtures'); - -// prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'docker-jest'); +const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'docker-docker-')); afterEach(function () { rimraf.sync(tmpDir); diff --git a/__tests__/docker/install.test.itg.ts b/__tests__/docker/install.test.itg.ts index c55f43a8..679fa854 100644 --- a/__tests__/docker/install.test.itg.ts +++ b/__tests__/docker/install.test.itg.ts @@ -14,15 +14,16 @@ * limitations under the License. */ -import path from 'path'; import {jest, describe, expect, test, beforeEach, afterEach} from '@jest/globals'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; import {Install} from '../../src/docker/install'; import {Docker} from '../../src/docker/docker'; import {Exec} from '../../src/exec'; -// prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'docker-install-jest'); +const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'docker-install-itg-')); describe('install', () => { const originalEnv = process.env; diff --git a/__tests__/docker/install.test.ts b/__tests__/docker/install.test.ts index ab921313..80ecc29c 100644 --- a/__tests__/docker/install.test.ts +++ b/__tests__/docker/install.test.ts @@ -15,15 +15,15 @@ */ import {describe, expect, jest, test, beforeEach, afterEach, it} from '@jest/globals'; -import * as fs from 'fs'; -import * as path from 'path'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; import * as rimraf from 'rimraf'; import osm = require('os'); import {Install} from '../../src/docker/install'; -// prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'docker-install-jest'); +const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'docker-install-')); afterEach(function () { rimraf.sync(tmpDir); diff --git a/__tests__/github.test.itg.ts b/__tests__/github.test.itg.ts index b720ece4..cfa63ada 100644 --- a/__tests__/github.test.itg.ts +++ b/__tests__/github.test.itg.ts @@ -16,7 +16,8 @@ import {describe, expect, it, test} from '@jest/globals'; import fs from 'fs'; -import * as path from 'path'; +import os from 'os'; +import path from 'path'; import {Buildx} from '../src/buildx/buildx'; import {Bake} from '../src/buildx/bake'; @@ -26,9 +27,7 @@ import {GitHub} from '../src/github'; import {History} from '../src/buildx/history'; const fixturesDir = path.join(__dirname, 'fixtures'); - -// prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'github-jest'); +const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'github-itg-')); const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip; diff --git a/__tests__/oci/oci.test.ts b/__tests__/oci/oci.test.ts index 54dadf55..f4201d95 100644 --- a/__tests__/oci/oci.test.ts +++ b/__tests__/oci/oci.test.ts @@ -15,16 +15,15 @@ */ import {afterEach, describe, expect, test} from '@jest/globals'; -import * as fs from 'fs'; +import fs from 'fs'; +import os from 'os'; import path from 'path'; import * as rimraf from 'rimraf'; import {OCI} from '../../src/oci/oci'; const fixturesDir = path.join(__dirname, '..', 'fixtures'); - -// prettier-ignore -const tmpDir = path.join(process.env.TEMP || '/tmp', 'docker-jest'); +const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'oci-oci-')); afterEach(function () { rimraf.sync(tmpDir); From eb838bda3ab8516b8e44f3c82e0e7f17739f7f22 Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Wed, 31 Jul 2024 11:04:17 +0200 Subject: [PATCH 3/3] jest: rename fixtures folder Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- .../{fixtures => .fixtures}/bake-01-overrides.json | 0 .../{fixtures => .fixtures}/bake-01-validate.json | 0 __tests__/{fixtures => .fixtures}/bake-01.hcl | 0 .../{fixtures => .fixtures}/bake-02-build.json | 0 __tests__/{fixtures => .fixtures}/bake-02.hcl | 0 .../bake-buildx-0.10.4-binaries-cross.json | 0 .../bake-test-docker-action-remote-private.json | 0 __tests__/{fixtures => .fixtures}/buildkitd.toml | 0 .../buildx-refs/__group__/1fugf958r4peyg86h6scim5t5 | 0 .../default/default/36dix0eiv9evr61vrwzn32w7q | 0 .../default/default/49p5r8und2konke5pmlyzqp3n | 0 .../default/default/7pnnqpgacnqq98oa1a1h5sz6t | 0 .../default/default/84p2qpgacnqq98oa1a1h5sz6t | 0 .../default/default/a5s9rlg9cnqq98oa1a1h5sz6t | 0 .../default/default/a8zqzhhv5yiazm396jobsgdw2 | 0 .../default/default/aav2ix4nw5eky66fw045dkylr | 0 .../default/default/dfsz8r57a98zf789pmlyzqp3n | 0 .../default/default/ij71n3ubmhck85d03zdvye5nr | 0 .../default/default/o1ctbgdb1mwekkxocc6filxde | 0 .../default/default/qvb2qy61mspqdyzf8whvjy0x1 | 0 .../default/default/qxu22kx1mrydcjkbl0b0l6es8 | 0 .../default/default/vzxn0jxr44khtq7hc8drtzwjv | 0 .../default/default/w38vcd5fo5cfvfyig77qjec0v | 0 .../buildx-refs/foo/foo0/21hqcxmgxyhugz2m24tmi7xco | 0 .../buildx-refs/foo/foo0/5nm14argzndbc4hw1jx6v9d5k | 0 .../buildx-refs/foo/foo0/7dblgs0dsjm22ti6p53sih6b7 | 0 .../docker-config-auths.json | 0 .../docker-config-proxies.json | 0 .../dockerhub-repoalltags.json | 0 .../{fixtures => .fixtures}/dockerhub-repoinfo.json | 0 .../{fixtures => .fixtures}/dockerhub-repotags.json | 0 __tests__/{fixtures => .fixtures}/github-repo.json | 0 __tests__/{fixtures => .fixtures}/hello-bake.hcl | 0 .../{fixtures => .fixtures}/hello-err.Dockerfile | 0 __tests__/{fixtures => .fixtures}/hello.Dockerfile | 0 __tests__/{fixtures => .fixtures}/inspect1.txt | 0 __tests__/{fixtures => .fixtures}/inspect10.txt | 0 __tests__/{fixtures => .fixtures}/inspect11.txt | 0 __tests__/{fixtures => .fixtures}/inspect2.txt | 0 __tests__/{fixtures => .fixtures}/inspect3.txt | 0 __tests__/{fixtures => .fixtures}/inspect4.txt | 0 __tests__/{fixtures => .fixtures}/inspect5.txt | 0 __tests__/{fixtures => .fixtures}/inspect6.txt | 0 __tests__/{fixtures => .fixtures}/inspect7.txt | 0 __tests__/{fixtures => .fixtures}/inspect8.txt | 0 __tests__/{fixtures => .fixtures}/inspect9.txt | 0 .../{fixtures => .fixtures}/lint-other.Dockerfile | 0 __tests__/{fixtures => .fixtures}/lint.Dockerfile | 0 __tests__/{fixtures => .fixtures}/lint.hcl | 0 .../{fixtures => .fixtures}/metadata-bake.json | 0 .../{fixtures => .fixtures}/metadata-build.json | 0 .../crazy-max~docker-alpine-s6~II9A63.dockerbuild | Bin .../docker~test-docker-action~COIO50.dockerbuild | Bin .../docker~test-docker-action~SNHBPN+3.dockerbuild | Bin .../docker~test-docker-action~TYO4JJ+15.dockerbuild | Bin .../oci-archive/hello-oci-gzip.tar | Bin .../oci-archive/hello-oci-multiplatform-gzip.tar | Bin .../oci-archive/hello-oci-uncompressed.tar | Bin .../oci-archive/hello-oci-zstd.tar | Bin .../oci-archive/moby~buildkit~LWDOW6.dockerbuild | Bin __tests__/{fixtures => .fixtures}/pgp.txt | 0 __tests__/{fixtures => .fixtures}/runtimeToken.txt | 0 __tests__/{fixtures => .fixtures}/secret.txt | 0 __tests__/buildkit/config.test.ts | 2 +- __tests__/buildx/bake.test.itg.ts | 2 +- __tests__/buildx/bake.test.ts | 2 +- __tests__/buildx/build.test.ts | 2 +- __tests__/buildx/builder.test.ts | 2 +- __tests__/buildx/buildx.test.itg.ts | 2 +- __tests__/buildx/buildx.test.ts | 2 +- __tests__/buildx/history.test.itg.ts | 2 +- __tests__/cache.test.itg.ts | 2 +- __tests__/docker/docker.test.ts | 2 +- __tests__/dockerhub.test.ts | 6 +++--- __tests__/github.test.itg.ts | 2 +- __tests__/github.test.ts | 6 +++--- __tests__/oci/oci.test.ts | 2 +- __tests__/util.test.ts | 2 +- 78 files changed, 19 insertions(+), 19 deletions(-) rename __tests__/{fixtures => .fixtures}/bake-01-overrides.json (100%) rename __tests__/{fixtures => .fixtures}/bake-01-validate.json (100%) rename __tests__/{fixtures => .fixtures}/bake-01.hcl (100%) rename __tests__/{fixtures => .fixtures}/bake-02-build.json (100%) rename __tests__/{fixtures => .fixtures}/bake-02.hcl (100%) rename __tests__/{fixtures => .fixtures}/bake-buildx-0.10.4-binaries-cross.json (100%) rename __tests__/{fixtures => .fixtures}/bake-test-docker-action-remote-private.json (100%) rename __tests__/{fixtures => .fixtures}/buildkitd.toml (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/__group__/1fugf958r4peyg86h6scim5t5 (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/default/default/36dix0eiv9evr61vrwzn32w7q (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/default/default/49p5r8und2konke5pmlyzqp3n (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/default/default/7pnnqpgacnqq98oa1a1h5sz6t (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/default/default/84p2qpgacnqq98oa1a1h5sz6t (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/default/default/a5s9rlg9cnqq98oa1a1h5sz6t (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/default/default/a8zqzhhv5yiazm396jobsgdw2 (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/default/default/aav2ix4nw5eky66fw045dkylr (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/default/default/dfsz8r57a98zf789pmlyzqp3n (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/default/default/ij71n3ubmhck85d03zdvye5nr (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/default/default/o1ctbgdb1mwekkxocc6filxde (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/default/default/qvb2qy61mspqdyzf8whvjy0x1 (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/default/default/qxu22kx1mrydcjkbl0b0l6es8 (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/default/default/vzxn0jxr44khtq7hc8drtzwjv (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/default/default/w38vcd5fo5cfvfyig77qjec0v (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/foo/foo0/21hqcxmgxyhugz2m24tmi7xco (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/foo/foo0/5nm14argzndbc4hw1jx6v9d5k (100%) rename __tests__/{fixtures => .fixtures}/buildx-refs/foo/foo0/7dblgs0dsjm22ti6p53sih6b7 (100%) rename __tests__/{fixtures => .fixtures}/docker-config-auths.json (100%) rename __tests__/{fixtures => .fixtures}/docker-config-proxies.json (100%) rename __tests__/{fixtures => .fixtures}/dockerhub-repoalltags.json (100%) rename __tests__/{fixtures => .fixtures}/dockerhub-repoinfo.json (100%) rename __tests__/{fixtures => .fixtures}/dockerhub-repotags.json (100%) rename __tests__/{fixtures => .fixtures}/github-repo.json (100%) rename __tests__/{fixtures => .fixtures}/hello-bake.hcl (100%) rename __tests__/{fixtures => .fixtures}/hello-err.Dockerfile (100%) rename __tests__/{fixtures => .fixtures}/hello.Dockerfile (100%) rename __tests__/{fixtures => .fixtures}/inspect1.txt (100%) rename __tests__/{fixtures => .fixtures}/inspect10.txt (100%) rename __tests__/{fixtures => .fixtures}/inspect11.txt (100%) rename __tests__/{fixtures => .fixtures}/inspect2.txt (100%) rename __tests__/{fixtures => .fixtures}/inspect3.txt (100%) rename __tests__/{fixtures => .fixtures}/inspect4.txt (100%) rename __tests__/{fixtures => .fixtures}/inspect5.txt (100%) rename __tests__/{fixtures => .fixtures}/inspect6.txt (100%) rename __tests__/{fixtures => .fixtures}/inspect7.txt (100%) rename __tests__/{fixtures => .fixtures}/inspect8.txt (100%) rename __tests__/{fixtures => .fixtures}/inspect9.txt (100%) rename __tests__/{fixtures => .fixtures}/lint-other.Dockerfile (100%) rename __tests__/{fixtures => .fixtures}/lint.Dockerfile (100%) rename __tests__/{fixtures => .fixtures}/lint.hcl (100%) rename __tests__/{fixtures => .fixtures}/metadata-bake.json (100%) rename __tests__/{fixtures => .fixtures}/metadata-build.json (100%) rename __tests__/{fixtures => .fixtures}/oci-archive/crazy-max~docker-alpine-s6~II9A63.dockerbuild (100%) rename __tests__/{fixtures => .fixtures}/oci-archive/docker~test-docker-action~COIO50.dockerbuild (100%) rename __tests__/{fixtures => .fixtures}/oci-archive/docker~test-docker-action~SNHBPN+3.dockerbuild (100%) rename __tests__/{fixtures => .fixtures}/oci-archive/docker~test-docker-action~TYO4JJ+15.dockerbuild (100%) rename __tests__/{fixtures => .fixtures}/oci-archive/hello-oci-gzip.tar (100%) rename __tests__/{fixtures => .fixtures}/oci-archive/hello-oci-multiplatform-gzip.tar (100%) rename __tests__/{fixtures => .fixtures}/oci-archive/hello-oci-uncompressed.tar (100%) rename __tests__/{fixtures => .fixtures}/oci-archive/hello-oci-zstd.tar (100%) rename __tests__/{fixtures => .fixtures}/oci-archive/moby~buildkit~LWDOW6.dockerbuild (100%) rename __tests__/{fixtures => .fixtures}/pgp.txt (100%) rename __tests__/{fixtures => .fixtures}/runtimeToken.txt (100%) rename __tests__/{fixtures => .fixtures}/secret.txt (100%) diff --git a/__tests__/fixtures/bake-01-overrides.json b/__tests__/.fixtures/bake-01-overrides.json similarity index 100% rename from __tests__/fixtures/bake-01-overrides.json rename to __tests__/.fixtures/bake-01-overrides.json diff --git a/__tests__/fixtures/bake-01-validate.json b/__tests__/.fixtures/bake-01-validate.json similarity index 100% rename from __tests__/fixtures/bake-01-validate.json rename to __tests__/.fixtures/bake-01-validate.json diff --git a/__tests__/fixtures/bake-01.hcl b/__tests__/.fixtures/bake-01.hcl similarity index 100% rename from __tests__/fixtures/bake-01.hcl rename to __tests__/.fixtures/bake-01.hcl diff --git a/__tests__/fixtures/bake-02-build.json b/__tests__/.fixtures/bake-02-build.json similarity index 100% rename from __tests__/fixtures/bake-02-build.json rename to __tests__/.fixtures/bake-02-build.json diff --git a/__tests__/fixtures/bake-02.hcl b/__tests__/.fixtures/bake-02.hcl similarity index 100% rename from __tests__/fixtures/bake-02.hcl rename to __tests__/.fixtures/bake-02.hcl diff --git a/__tests__/fixtures/bake-buildx-0.10.4-binaries-cross.json b/__tests__/.fixtures/bake-buildx-0.10.4-binaries-cross.json similarity index 100% rename from __tests__/fixtures/bake-buildx-0.10.4-binaries-cross.json rename to __tests__/.fixtures/bake-buildx-0.10.4-binaries-cross.json diff --git a/__tests__/fixtures/bake-test-docker-action-remote-private.json b/__tests__/.fixtures/bake-test-docker-action-remote-private.json similarity index 100% rename from __tests__/fixtures/bake-test-docker-action-remote-private.json rename to __tests__/.fixtures/bake-test-docker-action-remote-private.json diff --git a/__tests__/fixtures/buildkitd.toml b/__tests__/.fixtures/buildkitd.toml similarity index 100% rename from __tests__/fixtures/buildkitd.toml rename to __tests__/.fixtures/buildkitd.toml diff --git a/__tests__/fixtures/buildx-refs/__group__/1fugf958r4peyg86h6scim5t5 b/__tests__/.fixtures/buildx-refs/__group__/1fugf958r4peyg86h6scim5t5 similarity index 100% rename from __tests__/fixtures/buildx-refs/__group__/1fugf958r4peyg86h6scim5t5 rename to __tests__/.fixtures/buildx-refs/__group__/1fugf958r4peyg86h6scim5t5 diff --git a/__tests__/fixtures/buildx-refs/default/default/36dix0eiv9evr61vrwzn32w7q b/__tests__/.fixtures/buildx-refs/default/default/36dix0eiv9evr61vrwzn32w7q similarity index 100% rename from __tests__/fixtures/buildx-refs/default/default/36dix0eiv9evr61vrwzn32w7q rename to __tests__/.fixtures/buildx-refs/default/default/36dix0eiv9evr61vrwzn32w7q diff --git a/__tests__/fixtures/buildx-refs/default/default/49p5r8und2konke5pmlyzqp3n b/__tests__/.fixtures/buildx-refs/default/default/49p5r8und2konke5pmlyzqp3n similarity index 100% rename from __tests__/fixtures/buildx-refs/default/default/49p5r8und2konke5pmlyzqp3n rename to __tests__/.fixtures/buildx-refs/default/default/49p5r8und2konke5pmlyzqp3n diff --git a/__tests__/fixtures/buildx-refs/default/default/7pnnqpgacnqq98oa1a1h5sz6t b/__tests__/.fixtures/buildx-refs/default/default/7pnnqpgacnqq98oa1a1h5sz6t similarity index 100% rename from __tests__/fixtures/buildx-refs/default/default/7pnnqpgacnqq98oa1a1h5sz6t rename to __tests__/.fixtures/buildx-refs/default/default/7pnnqpgacnqq98oa1a1h5sz6t diff --git a/__tests__/fixtures/buildx-refs/default/default/84p2qpgacnqq98oa1a1h5sz6t b/__tests__/.fixtures/buildx-refs/default/default/84p2qpgacnqq98oa1a1h5sz6t similarity index 100% rename from __tests__/fixtures/buildx-refs/default/default/84p2qpgacnqq98oa1a1h5sz6t rename to __tests__/.fixtures/buildx-refs/default/default/84p2qpgacnqq98oa1a1h5sz6t diff --git a/__tests__/fixtures/buildx-refs/default/default/a5s9rlg9cnqq98oa1a1h5sz6t b/__tests__/.fixtures/buildx-refs/default/default/a5s9rlg9cnqq98oa1a1h5sz6t similarity index 100% rename from __tests__/fixtures/buildx-refs/default/default/a5s9rlg9cnqq98oa1a1h5sz6t rename to __tests__/.fixtures/buildx-refs/default/default/a5s9rlg9cnqq98oa1a1h5sz6t diff --git a/__tests__/fixtures/buildx-refs/default/default/a8zqzhhv5yiazm396jobsgdw2 b/__tests__/.fixtures/buildx-refs/default/default/a8zqzhhv5yiazm396jobsgdw2 similarity index 100% rename from __tests__/fixtures/buildx-refs/default/default/a8zqzhhv5yiazm396jobsgdw2 rename to __tests__/.fixtures/buildx-refs/default/default/a8zqzhhv5yiazm396jobsgdw2 diff --git a/__tests__/fixtures/buildx-refs/default/default/aav2ix4nw5eky66fw045dkylr b/__tests__/.fixtures/buildx-refs/default/default/aav2ix4nw5eky66fw045dkylr similarity index 100% rename from __tests__/fixtures/buildx-refs/default/default/aav2ix4nw5eky66fw045dkylr rename to __tests__/.fixtures/buildx-refs/default/default/aav2ix4nw5eky66fw045dkylr diff --git a/__tests__/fixtures/buildx-refs/default/default/dfsz8r57a98zf789pmlyzqp3n b/__tests__/.fixtures/buildx-refs/default/default/dfsz8r57a98zf789pmlyzqp3n similarity index 100% rename from __tests__/fixtures/buildx-refs/default/default/dfsz8r57a98zf789pmlyzqp3n rename to __tests__/.fixtures/buildx-refs/default/default/dfsz8r57a98zf789pmlyzqp3n diff --git a/__tests__/fixtures/buildx-refs/default/default/ij71n3ubmhck85d03zdvye5nr b/__tests__/.fixtures/buildx-refs/default/default/ij71n3ubmhck85d03zdvye5nr similarity index 100% rename from __tests__/fixtures/buildx-refs/default/default/ij71n3ubmhck85d03zdvye5nr rename to __tests__/.fixtures/buildx-refs/default/default/ij71n3ubmhck85d03zdvye5nr diff --git a/__tests__/fixtures/buildx-refs/default/default/o1ctbgdb1mwekkxocc6filxde b/__tests__/.fixtures/buildx-refs/default/default/o1ctbgdb1mwekkxocc6filxde similarity index 100% rename from __tests__/fixtures/buildx-refs/default/default/o1ctbgdb1mwekkxocc6filxde rename to __tests__/.fixtures/buildx-refs/default/default/o1ctbgdb1mwekkxocc6filxde diff --git a/__tests__/fixtures/buildx-refs/default/default/qvb2qy61mspqdyzf8whvjy0x1 b/__tests__/.fixtures/buildx-refs/default/default/qvb2qy61mspqdyzf8whvjy0x1 similarity index 100% rename from __tests__/fixtures/buildx-refs/default/default/qvb2qy61mspqdyzf8whvjy0x1 rename to __tests__/.fixtures/buildx-refs/default/default/qvb2qy61mspqdyzf8whvjy0x1 diff --git a/__tests__/fixtures/buildx-refs/default/default/qxu22kx1mrydcjkbl0b0l6es8 b/__tests__/.fixtures/buildx-refs/default/default/qxu22kx1mrydcjkbl0b0l6es8 similarity index 100% rename from __tests__/fixtures/buildx-refs/default/default/qxu22kx1mrydcjkbl0b0l6es8 rename to __tests__/.fixtures/buildx-refs/default/default/qxu22kx1mrydcjkbl0b0l6es8 diff --git a/__tests__/fixtures/buildx-refs/default/default/vzxn0jxr44khtq7hc8drtzwjv b/__tests__/.fixtures/buildx-refs/default/default/vzxn0jxr44khtq7hc8drtzwjv similarity index 100% rename from __tests__/fixtures/buildx-refs/default/default/vzxn0jxr44khtq7hc8drtzwjv rename to __tests__/.fixtures/buildx-refs/default/default/vzxn0jxr44khtq7hc8drtzwjv diff --git a/__tests__/fixtures/buildx-refs/default/default/w38vcd5fo5cfvfyig77qjec0v b/__tests__/.fixtures/buildx-refs/default/default/w38vcd5fo5cfvfyig77qjec0v similarity index 100% rename from __tests__/fixtures/buildx-refs/default/default/w38vcd5fo5cfvfyig77qjec0v rename to __tests__/.fixtures/buildx-refs/default/default/w38vcd5fo5cfvfyig77qjec0v diff --git a/__tests__/fixtures/buildx-refs/foo/foo0/21hqcxmgxyhugz2m24tmi7xco b/__tests__/.fixtures/buildx-refs/foo/foo0/21hqcxmgxyhugz2m24tmi7xco similarity index 100% rename from __tests__/fixtures/buildx-refs/foo/foo0/21hqcxmgxyhugz2m24tmi7xco rename to __tests__/.fixtures/buildx-refs/foo/foo0/21hqcxmgxyhugz2m24tmi7xco diff --git a/__tests__/fixtures/buildx-refs/foo/foo0/5nm14argzndbc4hw1jx6v9d5k b/__tests__/.fixtures/buildx-refs/foo/foo0/5nm14argzndbc4hw1jx6v9d5k similarity index 100% rename from __tests__/fixtures/buildx-refs/foo/foo0/5nm14argzndbc4hw1jx6v9d5k rename to __tests__/.fixtures/buildx-refs/foo/foo0/5nm14argzndbc4hw1jx6v9d5k diff --git a/__tests__/fixtures/buildx-refs/foo/foo0/7dblgs0dsjm22ti6p53sih6b7 b/__tests__/.fixtures/buildx-refs/foo/foo0/7dblgs0dsjm22ti6p53sih6b7 similarity index 100% rename from __tests__/fixtures/buildx-refs/foo/foo0/7dblgs0dsjm22ti6p53sih6b7 rename to __tests__/.fixtures/buildx-refs/foo/foo0/7dblgs0dsjm22ti6p53sih6b7 diff --git a/__tests__/fixtures/docker-config-auths.json b/__tests__/.fixtures/docker-config-auths.json similarity index 100% rename from __tests__/fixtures/docker-config-auths.json rename to __tests__/.fixtures/docker-config-auths.json diff --git a/__tests__/fixtures/docker-config-proxies.json b/__tests__/.fixtures/docker-config-proxies.json similarity index 100% rename from __tests__/fixtures/docker-config-proxies.json rename to __tests__/.fixtures/docker-config-proxies.json diff --git a/__tests__/fixtures/dockerhub-repoalltags.json b/__tests__/.fixtures/dockerhub-repoalltags.json similarity index 100% rename from __tests__/fixtures/dockerhub-repoalltags.json rename to __tests__/.fixtures/dockerhub-repoalltags.json diff --git a/__tests__/fixtures/dockerhub-repoinfo.json b/__tests__/.fixtures/dockerhub-repoinfo.json similarity index 100% rename from __tests__/fixtures/dockerhub-repoinfo.json rename to __tests__/.fixtures/dockerhub-repoinfo.json diff --git a/__tests__/fixtures/dockerhub-repotags.json b/__tests__/.fixtures/dockerhub-repotags.json similarity index 100% rename from __tests__/fixtures/dockerhub-repotags.json rename to __tests__/.fixtures/dockerhub-repotags.json diff --git a/__tests__/fixtures/github-repo.json b/__tests__/.fixtures/github-repo.json similarity index 100% rename from __tests__/fixtures/github-repo.json rename to __tests__/.fixtures/github-repo.json diff --git a/__tests__/fixtures/hello-bake.hcl b/__tests__/.fixtures/hello-bake.hcl similarity index 100% rename from __tests__/fixtures/hello-bake.hcl rename to __tests__/.fixtures/hello-bake.hcl diff --git a/__tests__/fixtures/hello-err.Dockerfile b/__tests__/.fixtures/hello-err.Dockerfile similarity index 100% rename from __tests__/fixtures/hello-err.Dockerfile rename to __tests__/.fixtures/hello-err.Dockerfile diff --git a/__tests__/fixtures/hello.Dockerfile b/__tests__/.fixtures/hello.Dockerfile similarity index 100% rename from __tests__/fixtures/hello.Dockerfile rename to __tests__/.fixtures/hello.Dockerfile diff --git a/__tests__/fixtures/inspect1.txt b/__tests__/.fixtures/inspect1.txt similarity index 100% rename from __tests__/fixtures/inspect1.txt rename to __tests__/.fixtures/inspect1.txt diff --git a/__tests__/fixtures/inspect10.txt b/__tests__/.fixtures/inspect10.txt similarity index 100% rename from __tests__/fixtures/inspect10.txt rename to __tests__/.fixtures/inspect10.txt diff --git a/__tests__/fixtures/inspect11.txt b/__tests__/.fixtures/inspect11.txt similarity index 100% rename from __tests__/fixtures/inspect11.txt rename to __tests__/.fixtures/inspect11.txt diff --git a/__tests__/fixtures/inspect2.txt b/__tests__/.fixtures/inspect2.txt similarity index 100% rename from __tests__/fixtures/inspect2.txt rename to __tests__/.fixtures/inspect2.txt diff --git a/__tests__/fixtures/inspect3.txt b/__tests__/.fixtures/inspect3.txt similarity index 100% rename from __tests__/fixtures/inspect3.txt rename to __tests__/.fixtures/inspect3.txt diff --git a/__tests__/fixtures/inspect4.txt b/__tests__/.fixtures/inspect4.txt similarity index 100% rename from __tests__/fixtures/inspect4.txt rename to __tests__/.fixtures/inspect4.txt diff --git a/__tests__/fixtures/inspect5.txt b/__tests__/.fixtures/inspect5.txt similarity index 100% rename from __tests__/fixtures/inspect5.txt rename to __tests__/.fixtures/inspect5.txt diff --git a/__tests__/fixtures/inspect6.txt b/__tests__/.fixtures/inspect6.txt similarity index 100% rename from __tests__/fixtures/inspect6.txt rename to __tests__/.fixtures/inspect6.txt diff --git a/__tests__/fixtures/inspect7.txt b/__tests__/.fixtures/inspect7.txt similarity index 100% rename from __tests__/fixtures/inspect7.txt rename to __tests__/.fixtures/inspect7.txt diff --git a/__tests__/fixtures/inspect8.txt b/__tests__/.fixtures/inspect8.txt similarity index 100% rename from __tests__/fixtures/inspect8.txt rename to __tests__/.fixtures/inspect8.txt diff --git a/__tests__/fixtures/inspect9.txt b/__tests__/.fixtures/inspect9.txt similarity index 100% rename from __tests__/fixtures/inspect9.txt rename to __tests__/.fixtures/inspect9.txt diff --git a/__tests__/fixtures/lint-other.Dockerfile b/__tests__/.fixtures/lint-other.Dockerfile similarity index 100% rename from __tests__/fixtures/lint-other.Dockerfile rename to __tests__/.fixtures/lint-other.Dockerfile diff --git a/__tests__/fixtures/lint.Dockerfile b/__tests__/.fixtures/lint.Dockerfile similarity index 100% rename from __tests__/fixtures/lint.Dockerfile rename to __tests__/.fixtures/lint.Dockerfile diff --git a/__tests__/fixtures/lint.hcl b/__tests__/.fixtures/lint.hcl similarity index 100% rename from __tests__/fixtures/lint.hcl rename to __tests__/.fixtures/lint.hcl diff --git a/__tests__/fixtures/metadata-bake.json b/__tests__/.fixtures/metadata-bake.json similarity index 100% rename from __tests__/fixtures/metadata-bake.json rename to __tests__/.fixtures/metadata-bake.json diff --git a/__tests__/fixtures/metadata-build.json b/__tests__/.fixtures/metadata-build.json similarity index 100% rename from __tests__/fixtures/metadata-build.json rename to __tests__/.fixtures/metadata-build.json diff --git a/__tests__/fixtures/oci-archive/crazy-max~docker-alpine-s6~II9A63.dockerbuild b/__tests__/.fixtures/oci-archive/crazy-max~docker-alpine-s6~II9A63.dockerbuild similarity index 100% rename from __tests__/fixtures/oci-archive/crazy-max~docker-alpine-s6~II9A63.dockerbuild rename to __tests__/.fixtures/oci-archive/crazy-max~docker-alpine-s6~II9A63.dockerbuild diff --git a/__tests__/fixtures/oci-archive/docker~test-docker-action~COIO50.dockerbuild b/__tests__/.fixtures/oci-archive/docker~test-docker-action~COIO50.dockerbuild similarity index 100% rename from __tests__/fixtures/oci-archive/docker~test-docker-action~COIO50.dockerbuild rename to __tests__/.fixtures/oci-archive/docker~test-docker-action~COIO50.dockerbuild diff --git a/__tests__/fixtures/oci-archive/docker~test-docker-action~SNHBPN+3.dockerbuild b/__tests__/.fixtures/oci-archive/docker~test-docker-action~SNHBPN+3.dockerbuild similarity index 100% rename from __tests__/fixtures/oci-archive/docker~test-docker-action~SNHBPN+3.dockerbuild rename to __tests__/.fixtures/oci-archive/docker~test-docker-action~SNHBPN+3.dockerbuild diff --git a/__tests__/fixtures/oci-archive/docker~test-docker-action~TYO4JJ+15.dockerbuild b/__tests__/.fixtures/oci-archive/docker~test-docker-action~TYO4JJ+15.dockerbuild similarity index 100% rename from __tests__/fixtures/oci-archive/docker~test-docker-action~TYO4JJ+15.dockerbuild rename to __tests__/.fixtures/oci-archive/docker~test-docker-action~TYO4JJ+15.dockerbuild diff --git a/__tests__/fixtures/oci-archive/hello-oci-gzip.tar b/__tests__/.fixtures/oci-archive/hello-oci-gzip.tar similarity index 100% rename from __tests__/fixtures/oci-archive/hello-oci-gzip.tar rename to __tests__/.fixtures/oci-archive/hello-oci-gzip.tar diff --git a/__tests__/fixtures/oci-archive/hello-oci-multiplatform-gzip.tar b/__tests__/.fixtures/oci-archive/hello-oci-multiplatform-gzip.tar similarity index 100% rename from __tests__/fixtures/oci-archive/hello-oci-multiplatform-gzip.tar rename to __tests__/.fixtures/oci-archive/hello-oci-multiplatform-gzip.tar diff --git a/__tests__/fixtures/oci-archive/hello-oci-uncompressed.tar b/__tests__/.fixtures/oci-archive/hello-oci-uncompressed.tar similarity index 100% rename from __tests__/fixtures/oci-archive/hello-oci-uncompressed.tar rename to __tests__/.fixtures/oci-archive/hello-oci-uncompressed.tar diff --git a/__tests__/fixtures/oci-archive/hello-oci-zstd.tar b/__tests__/.fixtures/oci-archive/hello-oci-zstd.tar similarity index 100% rename from __tests__/fixtures/oci-archive/hello-oci-zstd.tar rename to __tests__/.fixtures/oci-archive/hello-oci-zstd.tar diff --git a/__tests__/fixtures/oci-archive/moby~buildkit~LWDOW6.dockerbuild b/__tests__/.fixtures/oci-archive/moby~buildkit~LWDOW6.dockerbuild similarity index 100% rename from __tests__/fixtures/oci-archive/moby~buildkit~LWDOW6.dockerbuild rename to __tests__/.fixtures/oci-archive/moby~buildkit~LWDOW6.dockerbuild diff --git a/__tests__/fixtures/pgp.txt b/__tests__/.fixtures/pgp.txt similarity index 100% rename from __tests__/fixtures/pgp.txt rename to __tests__/.fixtures/pgp.txt diff --git a/__tests__/fixtures/runtimeToken.txt b/__tests__/.fixtures/runtimeToken.txt similarity index 100% rename from __tests__/fixtures/runtimeToken.txt rename to __tests__/.fixtures/runtimeToken.txt diff --git a/__tests__/fixtures/secret.txt b/__tests__/.fixtures/secret.txt similarity index 100% rename from __tests__/fixtures/secret.txt rename to __tests__/.fixtures/secret.txt diff --git a/__tests__/buildkit/config.test.ts b/__tests__/buildkit/config.test.ts index 4a8a1a22..513ce156 100644 --- a/__tests__/buildkit/config.test.ts +++ b/__tests__/buildkit/config.test.ts @@ -23,7 +23,7 @@ import * as rimraf from 'rimraf'; import {BuildKit} from '../../src/buildkit/buildkit'; import {Context} from '../../src/context'; -const fixturesDir = path.join(__dirname, '..', 'fixtures'); +const fixturesDir = path.join(__dirname, '..', '.fixtures'); const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildkit-config-')); const tmpName = path.join(tmpDir, '.tmpname-jest'); diff --git a/__tests__/buildx/bake.test.itg.ts b/__tests__/buildx/bake.test.itg.ts index f4499f2b..0f0f9550 100644 --- a/__tests__/buildx/bake.test.itg.ts +++ b/__tests__/buildx/bake.test.itg.ts @@ -21,7 +21,7 @@ import * as path from 'path'; import {Bake} from '../../src/buildx/bake'; import {BakeDefinition} from '../../src/types/buildx/bake'; -const fixturesDir = path.join(__dirname, '..', 'fixtures'); +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; diff --git a/__tests__/buildx/bake.test.ts b/__tests__/buildx/bake.test.ts index 5e0f8200..1bb0ff10 100644 --- a/__tests__/buildx/bake.test.ts +++ b/__tests__/buildx/bake.test.ts @@ -27,7 +27,7 @@ import {ExecOptions} from '@actions/exec'; import {BakeDefinition} from '../../src/types/buildx/bake'; import {BuildMetadata} from '../../src/types/buildx/build'; -const fixturesDir = path.join(__dirname, '..', 'fixtures'); +const fixturesDir = path.join(__dirname, '..', '.fixtures'); const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-bake-')); const tmpName = path.join(tmpDir, '.tmpname-jest'); const metadata = JSON.parse(fs.readFileSync(path.join(fixturesDir, 'metadata-bake.json'), 'utf-8')); diff --git a/__tests__/buildx/build.test.ts b/__tests__/buildx/build.test.ts index b50dd32d..66593664 100644 --- a/__tests__/buildx/build.test.ts +++ b/__tests__/buildx/build.test.ts @@ -23,7 +23,7 @@ import * as rimraf from 'rimraf'; import {Context} from '../../src/context'; import {Build} from '../../src/buildx/build'; -const fixturesDir = path.join(__dirname, '..', 'fixtures'); +const fixturesDir = path.join(__dirname, '..', '.fixtures'); const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-build-')); const tmpName = path.join(tmpDir, '.tmpname-jest'); const metadata = JSON.parse(fs.readFileSync(path.join(fixturesDir, 'metadata-build.json'), 'utf-8')); diff --git a/__tests__/buildx/builder.test.ts b/__tests__/buildx/builder.test.ts index dd060f54..f19ef9fb 100644 --- a/__tests__/buildx/builder.test.ts +++ b/__tests__/buildx/builder.test.ts @@ -23,7 +23,7 @@ import {Exec} from '../../src/exec'; import {BuilderInfo} from '../../src/types/buildx/builder'; -const fixturesDir = path.join(__dirname, '..', 'fixtures'); +const fixturesDir = path.join(__dirname, '..', '.fixtures'); jest.spyOn(Builder.prototype, 'inspect').mockImplementation(async (): Promise => { return { diff --git a/__tests__/buildx/buildx.test.itg.ts b/__tests__/buildx/buildx.test.itg.ts index 5ebb0fa8..f4b22a9e 100644 --- a/__tests__/buildx/buildx.test.itg.ts +++ b/__tests__/buildx/buildx.test.itg.ts @@ -25,7 +25,7 @@ import {Build} from '../../src/buildx/build'; import {Bake} from '../../src/buildx/bake'; import {Exec} from '../../src/exec'; -const fixturesDir = path.join(__dirname, '..', 'fixtures'); +const fixturesDir = path.join(__dirname, '..', '.fixtures'); const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-buildx-itg-')); const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip; diff --git a/__tests__/buildx/buildx.test.ts b/__tests__/buildx/buildx.test.ts index 3c0793d4..3fa41a47 100644 --- a/__tests__/buildx/buildx.test.ts +++ b/__tests__/buildx/buildx.test.ts @@ -27,7 +27,7 @@ import {Exec} from '../../src/exec'; import {Cert, LocalState} from '../../src/types/buildx/buildx'; -const fixturesDir = path.join(__dirname, '..', 'fixtures'); +const fixturesDir = path.join(__dirname, '..', '.fixtures'); const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-buildx-')); const tmpName = path.join(tmpDir, '.tmpname-jest'); diff --git a/__tests__/buildx/history.test.itg.ts b/__tests__/buildx/history.test.itg.ts index 0671286a..52e4895f 100644 --- a/__tests__/buildx/history.test.itg.ts +++ b/__tests__/buildx/history.test.itg.ts @@ -25,7 +25,7 @@ import {Build} from '../../src/buildx/build'; import {History} from '../../src/buildx/history'; import {Exec} from '../../src/exec'; -const fixturesDir = path.join(__dirname, '..', 'fixtures'); +const fixturesDir = path.join(__dirname, '..', '.fixtures'); const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-history-itg-')); const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip; diff --git a/__tests__/cache.test.itg.ts b/__tests__/cache.test.itg.ts index 02d3b884..a32d4c6b 100644 --- a/__tests__/cache.test.itg.ts +++ b/__tests__/cache.test.itg.ts @@ -21,7 +21,7 @@ import path from 'path'; import {Cache} from '../src/cache'; -const fixturesDir = path.join(__dirname, 'fixtures'); +const fixturesDir = path.join(__dirname, '.fixtures'); const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'cache-itg-')); describe('cache', () => { diff --git a/__tests__/docker/docker.test.ts b/__tests__/docker/docker.test.ts index 0b131135..c0bd65a2 100644 --- a/__tests__/docker/docker.test.ts +++ b/__tests__/docker/docker.test.ts @@ -26,7 +26,7 @@ import {Docker} from '../../src/docker/docker'; import {ConfigFile} from '../../src/types/docker/docker'; -const fixturesDir = path.join(__dirname, '..', 'fixtures'); +const fixturesDir = path.join(__dirname, '..', '.fixtures'); const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'docker-docker-')); afterEach(function () { diff --git a/__tests__/dockerhub.test.ts b/__tests__/dockerhub.test.ts index 971cfb52..50ab3c2f 100644 --- a/__tests__/dockerhub.test.ts +++ b/__tests__/dockerhub.test.ts @@ -21,9 +21,9 @@ import * as path from 'path'; import {DockerHub} from '../src/dockerhub'; import {RepositoryResponse, RepositoryTagsResponse} from '../src/types/dockerhub'; -import repoInfoFixture from './fixtures/dockerhub-repoinfo.json'; -import repoTagsFixture from './fixtures/dockerhub-repotags.json'; -import repoAllTagsFixture from './fixtures/dockerhub-repoalltags.json'; +import repoInfoFixture from './.fixtures/dockerhub-repoinfo.json'; +import repoTagsFixture from './.fixtures/dockerhub-repotags.json'; +import repoAllTagsFixture from './.fixtures/dockerhub-repoalltags.json'; describe('getRepository', () => { it('returns repo info', async () => { diff --git a/__tests__/github.test.itg.ts b/__tests__/github.test.itg.ts index cfa63ada..7a3a7188 100644 --- a/__tests__/github.test.itg.ts +++ b/__tests__/github.test.itg.ts @@ -26,7 +26,7 @@ import {Exec} from '../src/exec'; import {GitHub} from '../src/github'; import {History} from '../src/buildx/history'; -const fixturesDir = path.join(__dirname, 'fixtures'); +const fixturesDir = path.join(__dirname, '.fixtures'); const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'github-itg-')); const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip; diff --git a/__tests__/github.test.ts b/__tests__/github.test.ts index 54c211a6..4f78cd97 100644 --- a/__tests__/github.test.ts +++ b/__tests__/github.test.ts @@ -22,7 +22,7 @@ import * as core from '@actions/core'; import {GitHub} from '../src/github'; import {GitHubRepo} from '../src/types/github'; -import repoFixture from './fixtures/github-repo.json'; +import repoFixture from './.fixtures/github-repo.json'; jest.spyOn(GitHub.prototype, 'repoData').mockImplementation((): Promise => { return >(repoFixture as unknown); }); @@ -123,7 +123,7 @@ describe('actionsRuntimeToken', () => { }); it('fixture', async () => { process.env.ACTIONS_RUNTIME_TOKEN = fs - .readFileSync(path.join(__dirname, 'fixtures', 'runtimeToken.txt')) + .readFileSync(path.join(__dirname, '.fixtures', 'runtimeToken.txt')) .toString() .trim(); const runtimeToken = GitHub.actionsRuntimeToken; @@ -154,7 +154,7 @@ describe('printActionsRuntimeTokenACs', () => { it('refs/heads/master', async () => { const infoSpy = jest.spyOn(core, 'info'); process.env.ACTIONS_RUNTIME_TOKEN = fs - .readFileSync(path.join(__dirname, 'fixtures', 'runtimeToken.txt')) + .readFileSync(path.join(__dirname, '.fixtures', 'runtimeToken.txt')) .toString() .trim(); await GitHub.printActionsRuntimeTokenACs(); diff --git a/__tests__/oci/oci.test.ts b/__tests__/oci/oci.test.ts index f4201d95..803db122 100644 --- a/__tests__/oci/oci.test.ts +++ b/__tests__/oci/oci.test.ts @@ -22,7 +22,7 @@ import * as rimraf from 'rimraf'; import {OCI} from '../../src/oci/oci'; -const fixturesDir = path.join(__dirname, '..', 'fixtures'); +const fixturesDir = path.join(__dirname, '..', '.fixtures'); const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'oci-oci-')); afterEach(function () { diff --git a/__tests__/util.test.ts b/__tests__/util.test.ts index 2a733d94..ccd083f5 100644 --- a/__tests__/util.test.ts +++ b/__tests__/util.test.ts @@ -165,7 +165,7 @@ FOO=bar` }); it('large multiline values', async () => { - const pgp = fs.readFileSync(path.join(__dirname, 'fixtures', 'pgp.txt'), {encoding: 'utf-8'}); + const pgp = fs.readFileSync(path.join(__dirname, '.fixtures', 'pgp.txt'), {encoding: 'utf-8'}); setInput( 'secrets', `"GPG_KEY=${pgp}"