fix: add semantic tags prepended with v

pull/423/head
Webber 2022-08-04 00:52:00 +02:00
parent fb86052d28
commit 0fa866c456
2 changed files with 37 additions and 33 deletions

View File

@ -1,30 +1,3 @@
const addVariantsPrependingV = (array: string[]) => array.map((tag) => [tag, `v${tag}`]).flat();
/**
* Array of versions that will be detected as version tags. Not all of these are
* "semantic versions", but can be used to generate one. Especially using the
* `versioning: Semantic` option.
*/
export const validVersionTagInputs = addVariantsPrependingV(['0', '1', '0.1', '1.0', '1.1.0', '1.2.3']);
export const invalidVersionTagInputs = addVariantsPrependingV([
'+invalid',
'-invalid',
'-invalid+invalid',
'-invalid.01',
'alpha',
'alpha.beta',
'alpha.beta.1',
'alpha.1',
'alpha+beta',
'alpha_beta',
'alpha.',
'alpha..',
'beta',
'-alpha.',
'-1.0.3-gamma+b7718',
'+justmeta',
]);
export const completelyValidSemanticVersions = [ export const completelyValidSemanticVersions = [
'0.0.4', '0.0.4',
'1.2.3', '1.2.3',
@ -59,7 +32,6 @@ export const completelyValidSemanticVersions = [
'1.0.0-0A.is.legal', '1.0.0-0A.is.legal',
]; ];
// Not completely valid semantic versions
export const notCompletelyValidSemanticVersions = [ export const notCompletelyValidSemanticVersions = [
'1', '1',
'1.2', '1.2',
@ -102,3 +74,39 @@ export const notCompletelyValidSemanticVersions = [
'9.8.7-whatever+meta+meta', '9.8.7-whatever+meta+meta',
'99999999999999999999999.999999999999999999.99999999999999999----RC-SNAPSHOT.12.09.1--------------------------------..12', '99999999999999999999999.999999999999999999.99999999999999999----RC-SNAPSHOT.12.09.1--------------------------------..12',
]; ];
const addVariantsPrependingV = (array: string[]) => array.map((tag) => [tag, `v${tag}`]).flat();
/**
* Array of versions that will be detected as version tags. Not all of these are
* "semantic versions", but can be used to generate one. Especially using the
* `versioning: Semantic` option.
*/
export const validVersionTagInputs = addVariantsPrependingV([
'0',
'1',
'0.1',
'1.0',
'1.1.0',
'1.2.3',
...completelyValidSemanticVersions,
]);
export const invalidVersionTagInputs = addVariantsPrependingV([
'+invalid',
'-invalid',
'-invalid+invalid',
'-invalid.01',
'alpha',
'alpha.beta',
'alpha.beta.1',
'alpha.1',
'alpha+beta',
'alpha_beta',
'alpha.',
'alpha..',
'beta',
'-alpha.',
'-1.0.3-gamma+b7718',
'+justmeta',
]);

View File

@ -2,7 +2,7 @@ import * as core from '@actions/core';
import NotImplementedException from './error/not-implemented-exception'; import NotImplementedException from './error/not-implemented-exception';
import System from './system'; import System from './system';
import Versioning from './versioning'; import Versioning from './versioning';
import { completelyValidSemanticVersions, validVersionTagInputs, invalidVersionTagInputs } from './__data__/versions'; import { validVersionTagInputs, invalidVersionTagInputs } from './__data__/versions';
afterEach(() => { afterEach(() => {
jest.restoreAllMocks(); jest.restoreAllMocks();
@ -50,10 +50,6 @@ describe('Versioning', () => {
expect(await matchInputUsingGrep(input)).toStrictEqual(input); expect(await matchInputUsingGrep(input)).toStrictEqual(input);
}); });
it.concurrent.each(completelyValidSemanticVersions)(`accepts valid semantic version '%s'`, async (input) => {
expect(await matchInputUsingGrep(input)).toStrictEqual(input);
});
it.concurrent.each(invalidVersionTagInputs)(`rejects non-version tag input '%s'`, async (input) => { it.concurrent.each(invalidVersionTagInputs)(`rejects non-version tag input '%s'`, async (input) => {
await expect(async () => matchInputUsingGrep(input)).rejects.toThrowError(/^Failed to run/); await expect(async () => matchInputUsingGrep(input)).rejects.toThrowError(/^Failed to run/);
}); });