diff --git a/dist/index.js b/dist/index.js index 33531379..f8abda07 100644 Binary files a/dist/index.js and b/dist/index.js differ diff --git a/dist/index.js.map b/dist/index.js.map index e50af36b..9d25c910 100644 Binary files a/dist/index.js.map and b/dist/index.js.map differ diff --git a/src/model/image-tag.test.ts b/src/model/image-tag.test.ts index a9241f2e..eb0db0f1 100644 --- a/src/model/image-tag.test.ts +++ b/src/model/image-tag.test.ts @@ -2,7 +2,7 @@ import ImageTag from './image-tag'; describe('ImageTag', () => { const testImageParameters = { - editorVersion: '2099.9.f9f9', + editorVersion: '2099.9.9f9', targetPlatform: 'Test', builderPlatform: '', containerRegistryRepository: 'unityci/editor', @@ -37,6 +37,11 @@ describe('ImageTag', () => { ).not.toThrow(); }); + test.each(['some version', ''])('throws for incorrect version %p', (editorVersion) => { + const { targetPlatform } = testImageParameters; + expect(() => new ImageTag({ editorVersion, targetPlatform })).toThrow(); + }); + test.each(['nonExisting'])('throws for unsupported target %p', (targetPlatform) => { expect(() => new ImageTag({ targetPlatform })).toThrow(); }); @@ -45,23 +50,23 @@ describe('ImageTag', () => { describe('toString', () => { it('returns the correct version', () => { const image = new ImageTag({ - editorVersion: '2099.1.1111', + editorVersion: '2099.1.1111f1', targetPlatform: testImageParameters.targetPlatform, containerRegistryRepository: 'unityci/editor', containerRegistryImageVersion: '3', }); switch (process.platform) { case 'win32': - expect(image.toString()).toStrictEqual(`${defaults.image}:windows-2099.1.1111-3`); + expect(image.toString()).toStrictEqual(`${defaults.image}:windows-2099.1.1111f1-3`); break; case 'linux': - expect(image.toString()).toStrictEqual(`${defaults.image}:ubuntu-2099.1.1111-3`); + expect(image.toString()).toStrictEqual(`${defaults.image}:ubuntu-2099.1.1111f1-3`); break; } }); it('returns customImage if given', () => { const image = new ImageTag({ - editorVersion: '2099.1.1111', + editorVersion: '2099.1.1111f1', targetPlatform: testImageParameters.targetPlatform, customImage: `${defaults.image}:2099.1.1111@347598437689743986`, containerRegistryRepository: 'unityci/editor', diff --git a/src/model/image-tag.ts b/src/model/image-tag.ts index 06f68d79..2b9fd910 100644 --- a/src/model/image-tag.ts +++ b/src/model/image-tag.ts @@ -20,6 +20,10 @@ class ImageTag { providerStrategy, } = imageProperties; + if (!ImageTag.versionPattern.test(editorVersion)) { + throw new Error(`Invalid version "${editorVersion}".`); + } + // Todo we might as well skip this class for customImage. // Either this.customImage = customImage; @@ -37,6 +41,10 @@ class ImageTag { this.imageRollingVersion = Number(containerRegistryImageVersion); // Will automatically roll to the latest non-breaking version. } + static get versionPattern(): RegExp { + return /^\d+\.\d+\.\d+[a-z]\d+$/; + } + static get targetPlatformSuffixes() { return { generic: '',