import each from 'jest-each'; import * as installer from '../src/installer'; describe('version tests', () => { each(['3.1.999', '3.1.101-preview.3']).test( "Exact version '%s' should be the same", vers => { let versInfo = new installer.DotNetVersionInfo(vers); expect(versInfo.isExactVersion()).toBe(true); expect(versInfo.version()).toBe(vers); } ); each([ ['3.1.x', '3.1'], ['1.1.*', '1.1'], ['2.0', '2.0'] ]).test("Generic version '%s' should be '%s'", (vers, resVers) => { let versInfo = new installer.DotNetVersionInfo(vers); expect(versInfo.isExactVersion()).toBe(false); expect(versInfo.version()).toBe(resVers); }); each([ '', '.', '..', ' . ', '. ', ' .', ' . . ', ' .. ', ' . ', '-1.-1', '-1', '-1.-1.-1', '..3', '1..3', '1..', '.2.3', '.2.x', '1', '2.x', '*.*.1', '*.1', '*.', '1.2.', '1.2.-abc', 'a.b', 'a.b.c', 'a.b.c-preview', ' 0 . 1 . 2 ' ]).test("Malformed version '%s' should throw", vers => { expect(() => new installer.DotNetVersionInfo(vers)).toThrow(); }); each([ ['3.1.x', '3.1.'], ['3.1.*', '3.1.'], ['3.1', '3.1.'], ['5.0.0-preview.6', '5.0.0-preview.6'], ['3.1.201', '3.1.201'] ]).test( "Resolving version '%s' as '%s'", async (input, expectedVersion) => { const dotnetInstaller = new installer.DotnetCoreInstaller(input); let versInfo = await dotnetInstaller.resolveVersion( new installer.DotNetVersionInfo(input) ); console.log(versInfo); expect(versInfo.startsWith(expectedVersion)); }, 100000 ); it('Resolving a nonexistent generic version fails', async () => { const dotnetInstaller = new installer.DotnetCoreInstaller('999.1.x'); try { await dotnetInstaller.resolveVersion( new installer.DotNetVersionInfo('999.1.x') ); fail(); } catch { expect(true); } }, 100000); });