docker-metadata-action/__tests__/flavor.test.ts

183 lines
3.1 KiB
TypeScript
Raw Permalink Normal View History

import {describe, expect, test} from '@jest/globals';
import {Flavor, Transform} from '../src/flavor';
describe('transform', () => {
// prettier-ignore
test.each([
[
[
`randomstr`,
`latest=auto`
],
{} as Flavor,
true
],
[
[
`unknwown=foo`
],
{} as Flavor,
true
],
[
[
`latest`,
],
{} as Flavor,
true
],
[
[
`latest=true`
],
{
latest: "true",
prefix: "",
prefixLatest: false,
suffix: "",
suffixLatest: false,
} as Flavor,
false
],
[
[
`latest=false`
],
{
latest: "false",
prefix: "",
prefixLatest: false,
suffix: "",
suffixLatest: false,
} as Flavor,
false
],
[
[
`latest=auto`
],
{
latest: "auto",
prefix: "",
prefixLatest: false,
suffix: "",
suffixLatest: false,
} as Flavor,
false
],
[
[
`latest=foo`
],
{} as Flavor,
true
],
[
[
`prefix=sha-`
],
{
latest: "auto",
prefix: "sha-",
prefixLatest: false,
suffix: "",
suffixLatest: false,
} as Flavor,
false
],
[
[
`suffix=-alpine`
],
{
latest: "auto",
prefix: "",
prefixLatest: false,
suffix: "-alpine",
suffixLatest: false,
} as Flavor,
false
],
[
[
`latest=false`,
`prefix=dev-`,
`suffix=-alpine`
],
{
latest: "false",
prefix: "dev-",
prefixLatest: false,
suffix: "-alpine",
suffixLatest: false,
} as Flavor,
false
],
[
[
`prefix=dev-,onlatest=true`,
],
{
latest: "auto",
prefix: "dev-",
prefixLatest: true,
suffix: "",
suffixLatest: false,
} as Flavor,
false
],
[
[
`suffix=-alpine,onlatest=true`,
],
{
latest: "auto",
prefix: "",
prefixLatest: false,
suffix: "-alpine",
suffixLatest: true,
} as Flavor,
false
],
[
[
`prefix=dev-,onlatest=true`,
`suffix=-alpine,onlatest=true`,
],
{
latest: "auto",
prefix: "dev-",
prefixLatest: true,
suffix: "-alpine",
suffixLatest: true,
} as Flavor,
false
],
[
[
`prefix= `,
],
{
latest: "auto",
prefix: "",
prefixLatest: false,
suffix: "",
suffixLatest: false,
} as Flavor,
false
]
])('given %p attributes', async (inputs: string[], expected: Flavor, invalid: boolean) => {
try {
const flavor = Transform(inputs);
expect(flavor).toEqual(expected);
} catch (err) {
if (!invalid) {
console.error(err);
}
// eslint-disable-next-line jest/no-conditional-expect
expect(true).toBe(invalid);
}
});
});