import * as fs from 'fs'; import * as path from 'path'; import * as dotenv from 'dotenv'; import * as moment from 'moment'; import {getInputs, Inputs} from '../src/context'; import * as github from '../src/github'; import {Meta, Version} from '../src/meta'; import {Context} from '@actions/github/lib/context'; import {ReposGetResponseData} from '@octokit/types'; jest.spyOn(github, 'repo').mockImplementation( (): Promise => { return >require(path.join(__dirname, 'fixtures', 'repo.json')); } ); jest.spyOn(github, 'context').mockImplementation( (): Context => { return new Context(); } ); jest.spyOn(global.Date.prototype, 'toISOString').mockImplementation(() => { return '2020-01-10T00:30:00.000Z'; }); jest.mock('moment', () => { return () => jest.requireActual('moment')('2020-01-10T00:30:00.000Z'); }); beforeEach(() => { Object.keys(process.env).forEach(function (key) { if (key !== 'GITHUB_TOKEN' && key.startsWith('GITHUB_')) { delete process.env[key]; } }); }); const tagsLabelsTest = async (envFile: string, inputs: Inputs, exVersion: Version, exTags: Array, exLabels: Array) => { process.env = dotenv.parse(fs.readFileSync(path.join(__dirname, 'fixtures', envFile))); const context = github.context(); console.log(process.env, context); const repo = await github.repo(process.env.GITHUB_TOKEN || ''); const meta = new Meta({...getInputs(), ...inputs}, context, repo); const version = meta.version; console.log('version', version); expect(version).toEqual(exVersion); const tags = meta.tags(); console.log('tags', tags); expect(tags).toEqual(exTags); const labels = meta.labels(); console.log('labels', labels); expect(labels).toEqual(exLabels); }; describe('null', () => { // prettier-ignore test.each([ [ 'event_null.env', { images: ['user/app'], } as Inputs, { main: undefined, partial: [], latest: false } as Version, [], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_empty.env', { images: ['user/app'], } as Inputs, { main: undefined, partial: [], latest: false } as Version, [], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=", "org.opencontainers.image.licenses=MIT" ] ], ])('given %p event ', tagsLabelsTest); }); describe('push', () => { // prettier-ignore test.each([ [ 'event_push.env', { images: ['user/app'], } as Inputs, { main: 'dev', partial: [], latest: false } as Version, [ 'user/app:dev' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=dev", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_push_defbranch.env', { images: ['user/app'], tagEdge: true, } as Inputs, { main: 'edge', partial: [], latest: false } as Version, [ 'user/app:edge' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=edge", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_push_defbranch.env', { images: ['user/app'], } as Inputs, { main: 'master', partial: [], latest: false } as Version, [ 'user/app:master' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=master", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_workflow_dispatch.env', { images: ['user/app'], tagEdge: true, } as Inputs, { main: 'edge', partial: [], latest: false } as Version, [ 'user/app:edge' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=edge", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_push.env', { images: ['org/app', 'ghcr.io/user/app'], } as Inputs, { main: 'dev', partial: [], latest: false } as Version, [ 'org/app:dev', 'ghcr.io/user/app:dev' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=dev", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_push_defbranch.env', { images: ['org/app', 'ghcr.io/user/app'], tagEdge: true, } as Inputs, { main: 'edge', partial: [], latest: false } as Version, [ 'org/app:edge', 'ghcr.io/user/app:edge' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=edge", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_push.env', { images: ['org/app', 'ghcr.io/user/app'], tagSha: true, } as Inputs, { main: 'dev', partial: [], latest: false } as Version, [ 'org/app:dev', 'org/app:sha-90dd603', 'ghcr.io/user/app:dev', 'ghcr.io/user/app:sha-90dd603' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=dev", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_push_defbranch.env', { images: ['org/app', 'ghcr.io/user/app'], tagSha: true, tagEdge: true, } as Inputs, { main: 'edge', partial: [], latest: false } as Version, [ 'org/app:edge', 'org/app:sha-90dd603', 'ghcr.io/user/app:edge', 'ghcr.io/user/app:sha-90dd603' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=edge", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_push.env', { images: ['org/app', 'ghcr.io/user/app'], tagSha: true, tagEdge: true, tagEdgeBranch: 'dev' } as Inputs, { main: 'edge', partial: [], latest: false } as Version, [ 'org/app:edge', 'org/app:sha-90dd603', 'ghcr.io/user/app:edge', 'ghcr.io/user/app:sha-90dd603' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=edge", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_push_defbranch.env', { images: ['org/app', 'ghcr.io/user/app'], tagSha: true, tagEdge: true, tagEdgeBranch: 'dev' } as Inputs, { main: 'master', partial: [], latest: false } as Version, [ 'org/app:master', 'org/app:sha-90dd603', 'ghcr.io/user/app:master', 'ghcr.io/user/app:sha-90dd603' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=master", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_push_invalidchars.env', { images: ['org/app', 'ghcr.io/user/app'], tagSha: true, tagEdge: true, } as Inputs, { main: 'my-feature-1245', partial: [], latest: false } as Version, [ 'org/app:my-feature-1245', 'org/app:sha-90dd603', 'ghcr.io/user/app:my-feature-1245', 'ghcr.io/user/app:sha-90dd603' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=my-feature-1245", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], ])('given %p event ', tagsLabelsTest); }); describe('push tag', () => { // prettier-ignore test.each([ [ 'event_tag_release1.env', { images: ['user/app'], } as Inputs, { main: 'release1', partial: [], latest: true } as Version, [ 'user/app:release1', 'user/app:latest' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=release1", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_20200110-RC2.env', { images: ['user/app'], } as Inputs, { main: '20200110-RC2', partial: [], latest: true } as Version, [ 'user/app:20200110-RC2', 'user/app:latest' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=20200110-RC2", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_20200110-RC2.env', { images: ['user/app'], tagMatch: `\\d{8}`, tagLatest: false, } as Inputs, { main: '20200110', partial: [], latest: false } as Version, [ 'user/app:20200110' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=20200110", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_20200110-RC2.env', { images: ['user/app'], tagMatch: `(.*)-RC`, tagMatchGroup: 1, tagLatest: false, } as Inputs, { main: '20200110', partial: [], latest: false } as Version, [ 'user/app:20200110' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=20200110", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_v1.1.1.env', { images: ['org/app', 'ghcr.io/user/app'], tagMatch: `\\d{1,3}.\\d{1,3}.\\d{1,3}`, } as Inputs, { main: '1.1.1', partial: [], latest: true } as Version, [ 'org/app:1.1.1', 'org/app:latest', 'ghcr.io/user/app:1.1.1', 'ghcr.io/user/app:latest' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=1.1.1", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_v1.1.1.env', { images: ['org/app', 'ghcr.io/user/app'], tagMatch: `^v(\\d{1,3}.\\d{1,3}.\\d{1,3})$`, tagMatchGroup: 1, } as Inputs, { main: '1.1.1', partial: [], latest: true } as Version, [ 'org/app:1.1.1', 'org/app:latest', 'ghcr.io/user/app:1.1.1', 'ghcr.io/user/app:latest' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=1.1.1", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_v2.0.8-beta.67.env', { images: ['org/app', 'ghcr.io/user/app'], tagMatch: `\\d{1,3}.\\d{1,3}.\\d{1,3}-(alpha|beta).\\d{1,3}`, } as Inputs, { main: '2.0.8-beta.67', partial: [], latest: true } as Version, [ 'org/app:2.0.8-beta.67', 'org/app:latest', 'ghcr.io/user/app:2.0.8-beta.67', 'ghcr.io/user/app:latest' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=2.0.8-beta.67", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_v2.0.8-beta.67.env', { images: ['org/app', 'ghcr.io/user/app'], tagMatch: `\\d{1,3}.\\d{1,3}`, } as Inputs, { main: '2.0', partial: [], latest: true } as Version, [ 'org/app:2.0', 'org/app:latest', 'ghcr.io/user/app:2.0', 'ghcr.io/user/app:latest' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=2.0", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_v2.0.8-beta.67.env', { images: ['org/app', 'ghcr.io/user/app'], tagMatch: `^v(\\d{1,3}.\\d{1,3}.\\d{1,3})$`, tagMatchGroup: 1, } as Inputs, { main: 'v2.0.8-beta.67', partial: [], latest: false } as Version, [ 'org/app:v2.0.8-beta.67', 'ghcr.io/user/app:v2.0.8-beta.67' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=v2.0.8-beta.67", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_sometag.env', { images: ['org/app', 'ghcr.io/user/app'], tagMatch: `\\d{1,3}.\\d{1,3}`, } as Inputs, { main: 'sometag', partial: [], latest: false } as Version, [ 'org/app:sometag', 'ghcr.io/user/app:sometag' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=sometag", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_v1.1.1.env', { images: ['org/app', 'ghcr.io/user/app'], tagSemver: ['{{version}}', '{{major}}.{{minor}}', '{{major}}'], } as Inputs, { main: '1.1.1', partial: ['1.1', '1'], latest: true } as Version, [ 'org/app:1.1.1', 'org/app:1.1', 'org/app:1', 'org/app:latest', 'ghcr.io/user/app:1.1.1', 'ghcr.io/user/app:1.1', 'ghcr.io/user/app:1', 'ghcr.io/user/app:latest' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=1.1.1", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_v1.1.1.env', { images: ['org/app', 'ghcr.io/user/app'], tagSemver: ['{{version}}', '{{major}}.{{minor}}.{{patch}}'], } as Inputs, { main: '1.1.1', partial: [], latest: true } as Version, [ 'org/app:1.1.1', 'org/app:latest', 'ghcr.io/user/app:1.1.1', 'ghcr.io/user/app:latest' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=1.1.1", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_v2.0.8-beta.67.env', { images: ['org/app', 'ghcr.io/user/app'], tagSemver: ['{{major}}.{{minor}}', '{{major}}'], } as Inputs, { main: '2.0.8-beta.67', partial: [], latest: false } as Version, [ 'org/app:2.0.8-beta.67', 'ghcr.io/user/app:2.0.8-beta.67' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=2.0.8-beta.67", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_sometag.env', { images: ['ghcr.io/user/app'], tagSemver: ['{{version}}', '{{major}}.{{minor}}', '{{major}}'], tagLatest: false, } as Inputs, { main: 'sometag', partial: [], latest: false } as Version, [ 'ghcr.io/user/app:sometag' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=sometag", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], ])('given %p event ', tagsLabelsTest); }); describe('latest', () => { // prettier-ignore test.each([ [ 'event_tag_release1.env', { images: ['user/app'], tagMatch: `^release\\d{1,2}`, } as Inputs, { main: 'release1', partial: [], latest: true, } as Version, [ 'user/app:release1', 'user/app:latest' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=release1", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_20200110-RC2.env', { images: ['user/app'], tagMatch: `^\\d+-RC\\d{1,2}`, } as Inputs, { main: '20200110-RC2', partial: [], latest: true } as Version, [ 'user/app:20200110-RC2', 'user/app:latest' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=20200110-RC2", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_20200110-RC2.env', { images: ['user/app'], tagMatch: `\\d{8}`, } as Inputs, { main: '20200110', partial: [], latest: true } as Version, [ 'user/app:20200110', 'user/app:latest' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=20200110", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_v1.1.1.env', { images: ['user/app'], tagMatch: `\\d{1,3}.\\d{1,3}.\\d{1,3}`, } as Inputs, { main: '1.1.1', partial: [], latest: true } as Version, [ 'user/app:1.1.1', 'user/app:latest' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=1.1.1", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_v1.1.1.env', { images: ['org/app', 'ghcr.io/user/app'], } as Inputs, { main: 'v1.1.1', partial: [], latest: true } as Version, [ 'org/app:v1.1.1', 'org/app:latest', 'ghcr.io/user/app:v1.1.1', 'ghcr.io/user/app:latest', ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=v1.1.1", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_v2.0.8-beta.67.env', { images: ['org/app', 'ghcr.io/user/app'], tagMatch: `\\d{1,3}.\\d{1,3}.\\d{1,3}`, } as Inputs, { main: '2.0.8', partial: [], latest: true } as Version, [ 'org/app:2.0.8', 'org/app:latest', 'ghcr.io/user/app:2.0.8', 'ghcr.io/user/app:latest' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=2.0.8", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_v1.1.1.env', { images: ['org/app', 'ghcr.io/user/app'], tagLatest: false, } as Inputs, { main: 'v1.1.1', partial: [], latest: false } as Version, [ 'org/app:v1.1.1', 'ghcr.io/user/app:v1.1.1', ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=v1.1.1", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_v1.1.1.env', { images: ['org/app', 'ghcr.io/MyUSER/MyApp'], tagLatest: false, } as Inputs, { main: 'v1.1.1', partial: [], latest: false } as Version, [ 'org/app:v1.1.1', 'ghcr.io/myuser/myapp:v1.1.1', ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=v1.1.1", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], ])('given %p event ', tagsLabelsTest); }); describe('pull_request', () => { // prettier-ignore test.each([ [ 'event_pull_request.env', { images: ['user/app'], } as Inputs, { main: 'pr-2', partial: [], latest: false } as Version, [ 'user/app:pr-2' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=pr-2", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=1e9249f05bfc090e0688b8fb9c1b347586add504", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_pull_request.env', { images: ['org/app', 'ghcr.io/user/app'], } as Inputs, { main: 'pr-2', partial: [], latest: false } as Version, [ 'org/app:pr-2', 'ghcr.io/user/app:pr-2' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=pr-2", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=1e9249f05bfc090e0688b8fb9c1b347586add504", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_pull_request.env', { images: ['org/app', 'ghcr.io/user/app'], tagSha: true, } as Inputs, { main: 'pr-2', partial: [], latest: false } as Version, [ 'org/app:pr-2', 'org/app:sha-1e9249f', 'ghcr.io/user/app:pr-2', 'ghcr.io/user/app:sha-1e9249f' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=pr-2", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=1e9249f05bfc090e0688b8fb9c1b347586add504", "org.opencontainers.image.licenses=MIT" ] ], ])('given %p event ', tagsLabelsTest); }); describe('schedule', () => { // prettier-ignore test.each([ [ 'event_schedule.env', { images: ['user/app'], } as Inputs, { main: 'nightly', partial: [], latest: false } as Version, [ 'user/app:nightly' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=nightly", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_schedule.env', { images: ['user/app'], tagSchedule: `{{date 'YYYYMMDD'}}` } as Inputs, { main: '20200110', partial: [], latest: false } as Version, [ 'user/app:20200110' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=20200110", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_schedule.env', { images: ['user/app'], tagSchedule: `{{date 'YYYYMMDD-HHmmss'}}` } as Inputs, { main: '20200110-003000', partial: [], latest: false } as Version, [ 'user/app:20200110-003000' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=20200110-003000", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_schedule.env', { images: ['org/app', 'ghcr.io/user/app'], } as Inputs, { main: 'nightly', partial: [], latest: false } as Version, [ 'org/app:nightly', 'ghcr.io/user/app:nightly' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=nightly", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_schedule.env', { images: ['org/app', 'ghcr.io/user/app'], tagSha: true, } as Inputs, { main: 'nightly', partial: [], latest: false } as Version, [ 'org/app:nightly', 'org/app:sha-90dd603', 'ghcr.io/user/app:nightly', 'ghcr.io/user/app:sha-90dd603' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=nightly", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], ])('given %p event ', tagsLabelsTest); }); describe('release', () => { // prettier-ignore test.each([ [ 'event_release.env', { images: ['user/app'], } as Inputs, { main: 'v1.1.1', partial: [], latest: true } as Version, [ 'user/app:v1.1.1', 'user/app:latest', ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=v1.1.1", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], ])('given %p event ', tagsLabelsTest); }); describe('custom', () => { // prettier-ignore test.each([ [ 'event_push.env', { images: ['user/app'], tagCustom: ['my', 'custom', 'tags'] } as Inputs, { main: 'dev', partial: ['my', 'custom', 'tags'], latest: false } as Version, [ 'user/app:dev', 'user/app:my', 'user/app:custom', 'user/app:tags' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=dev", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_push.env', { images: ['user/app'], tagCustom: ['my'] } as Inputs, { main: 'dev', partial: ['my'], latest: false } as Version, [ 'user/app:dev', 'user/app:my' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=dev", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_release1.env', { images: ['user/app'], tagCustom: ['my', 'custom', 'tags'] } as Inputs, { main: 'release1', partial: ['my', 'custom', 'tags'], latest: true } as Version, [ 'user/app:release1', 'user/app:my', 'user/app:custom', 'user/app:tags', 'user/app:latest' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=release1", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_20200110-RC2.env', { images: ['user/app'], tagMatch: `\\d{8}`, tagLatest: false, tagCustom: ['my', 'custom', 'tags'] } as Inputs, { main: '20200110', partial: ['my', 'custom', 'tags'], latest: false } as Version, [ 'user/app:20200110', 'user/app:my', 'user/app:custom', 'user/app:tags' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=20200110", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_v1.1.1.env', { images: ['org/app', 'ghcr.io/user/app'], tagSemver: ['{{version}}', '{{major}}.{{minor}}', '{{major}}'], tagCustom: ['my', 'custom', 'tags'] } as Inputs, { main: '1.1.1', partial: ['1.1', '1', 'my', 'custom', 'tags'], latest: true } as Version, [ 'org/app:1.1.1', 'org/app:1.1', 'org/app:1', 'org/app:my', 'org/app:custom', 'org/app:tags', 'org/app:latest', 'ghcr.io/user/app:1.1.1', 'ghcr.io/user/app:1.1', 'ghcr.io/user/app:1', 'ghcr.io/user/app:my', 'ghcr.io/user/app:custom', 'ghcr.io/user/app:tags', 'ghcr.io/user/app:latest' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=1.1.1", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], [ 'event_tag_v1.1.1.env', { images: ['org/app', 'ghcr.io/user/app'], tagSemver: ['{{version}}', '{{major}}.{{minor}}.{{patch}}'], tagCustom: ['my', 'custom', 'tags'], tagCustomOnly: true, } as Inputs, { main: 'my', partial: ['custom', 'tags'], latest: false } as Version, [ 'org/app:my', 'org/app:custom', 'org/app:tags', 'ghcr.io/user/app:my', 'ghcr.io/user/app:custom', 'ghcr.io/user/app:tags' ], [ "org.opencontainers.image.title=Hello-World", "org.opencontainers.image.description=This your first repo!", "org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.version=my", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071", "org.opencontainers.image.licenses=MIT" ] ], ])('given %p event ', tagsLabelsTest); });