2020-10-08 03:22:02 +02:00
|
|
|
import fs = require('fs');
|
|
|
|
import path = require('path');
|
|
|
|
import nock = require('nock');
|
|
|
|
import * as release from '../src/release';
|
|
|
|
|
|
|
|
const platform = release.getPlatform();
|
|
|
|
|
|
|
|
describe('release tests', () => {
|
|
|
|
it('getPlatform', () => {
|
|
|
|
const platformMap: {[index: string]: string} = {
|
|
|
|
linux: 'linux',
|
2020-10-08 03:36:34 +02:00
|
|
|
darwin: 'macos',
|
|
|
|
win32: 'windows'
|
2020-10-08 03:22:02 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
expect(platform).toEqual(platformMap[process.platform]);
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('determineVersion', () => {
|
|
|
|
beforeEach(() => {
|
|
|
|
const dataDir = path.join(__dirname, 'data');
|
|
|
|
|
|
|
|
nock('https://storage.googleapis.com', {allowUnmocked: true})
|
|
|
|
.get(`/flutter_infra/releases/releases_${platform}.json`)
|
|
|
|
.replyWithFile(200, path.join(dataDir, `releases_${platform}.json`));
|
|
|
|
});
|
|
|
|
|
|
|
|
afterEach(() => {
|
|
|
|
nock.cleanAll();
|
|
|
|
nock.enableNetConnect();
|
|
|
|
});
|
|
|
|
|
|
|
|
it('channel: "stable", version: ""', async () => {
|
|
|
|
const result = await release.determineVersion('', 'stable', platform);
|
|
|
|
|
|
|
|
expect(result.version).toEqual('1.22.0');
|
|
|
|
expect(result.rawVersion).toEqual('1.22.0');
|
|
|
|
expect(result.downloadUrl).toContain('1.22.0');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('channel: "beta", version: ""', async () => {
|
|
|
|
const result = await release.determineVersion('', 'beta', platform);
|
|
|
|
|
|
|
|
expect(result.version).toEqual('1.22.0-12.3.pre');
|
|
|
|
expect(result.rawVersion).toEqual('1.22.0-12.3.pre');
|
|
|
|
expect(result.downloadUrl).toContain('1.22.0-12.3.pre');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('channel: "dev", version: ""', async () => {
|
|
|
|
const result = await release.determineVersion('', 'dev', platform);
|
|
|
|
|
|
|
|
expect(result.version).toEqual('1.23.0-7.0.pre');
|
|
|
|
expect(result.rawVersion).toEqual('1.23.0-7.0.pre');
|
|
|
|
expect(result.downloadUrl).toContain('1.23.0-7.0.pre');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('channel: "dev", version: "1.17.x"', async () => {
|
|
|
|
const result = await release.determineVersion('1.17.x', 'dev', platform);
|
|
|
|
|
|
|
|
expect(result.version).toEqual('1.17.0-dev.5.0');
|
|
|
|
expect(result.rawVersion).toEqual('1.17.0-dev.5.0');
|
|
|
|
expect(result.downloadUrl).toContain('1.17.0-dev.5.0');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('channel: "dev", version: "1.17"', async () => {
|
|
|
|
const result = await release.determineVersion('1.17', 'dev', platform);
|
|
|
|
|
|
|
|
expect(result.version).toEqual('1.17.0-dev.5.0');
|
|
|
|
expect(result.rawVersion).toEqual('1.17.0-dev.5.0');
|
|
|
|
expect(result.downloadUrl).toContain('1.17.0-dev.5.0');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('channel: "dev", version: "1.7.x" (old format)', async () => {
|
|
|
|
const result = await release.determineVersion('1.7.x', 'dev', platform);
|
|
|
|
|
|
|
|
expect(result.version).toEqual('1.7.11');
|
|
|
|
expect(result.rawVersion).toEqual('v1.7.11');
|
|
|
|
expect(result.downloadUrl).toContain('v1.7.11');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('channel: "dev", version: "1.7" (old format)', async () => {
|
|
|
|
const result = await release.determineVersion('1.7', 'dev', platform);
|
|
|
|
|
|
|
|
expect(result.version).toEqual('1.7.11');
|
|
|
|
expect(result.rawVersion).toEqual('v1.7.11');
|
|
|
|
expect(result.downloadUrl).toContain('v1.7.11');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('channel: "dev", version: "0.12.x" (unknown)', async () => {
|
|
|
|
try {
|
|
|
|
await release.determineVersion('0.12.x', 'dev', platform);
|
|
|
|
} catch (e) {
|
|
|
|
expect(e.message).toEqual('unable to find release for 0.12.x');
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
it('channel: "dev", version: "0.12" (unknown)', async () => {
|
|
|
|
try {
|
|
|
|
await release.determineVersion('0.12', 'dev', platform);
|
|
|
|
} catch (e) {
|
|
|
|
expect(e.message).toEqual('unable to find release for 0.12');
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
it('channel: "dev", version: "1.17.0-dev.5.0"', async () => {
|
|
|
|
const result = await release.determineVersion(
|
|
|
|
'1.17.0-dev.5.0',
|
|
|
|
'dev',
|
|
|
|
platform
|
|
|
|
);
|
|
|
|
|
|
|
|
expect(result.version).toEqual('1.17.0-dev.5.0');
|
|
|
|
expect(result.rawVersion).toEqual('1.17.0-dev.5.0');
|
|
|
|
expect(result.downloadUrl).toContain('1.17.0-dev.5.0');
|
|
|
|
});
|
2020-11-23 14:11:57 +01:00
|
|
|
|
|
|
|
it('channel: "any", version: "1.17.x"', async () => {
|
|
|
|
const result = await release.determineVersion('1.17.x', 'any', platform);
|
|
|
|
|
|
|
|
expect(result.version).toEqual('1.17.5');
|
|
|
|
expect(result.rawVersion).toEqual('1.17.5');
|
|
|
|
expect(result.downloadUrl).toContain('1.17.5');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('channel: "any", version: "1.19.x"', async () => {
|
|
|
|
const result = await release.determineVersion('1.19.x', 'any', platform);
|
|
|
|
|
|
|
|
expect(result.version).toEqual('1.19.0-5.0.pre');
|
|
|
|
expect(result.rawVersion).toEqual('1.19.0-5.0.pre');
|
|
|
|
expect(result.downloadUrl).toContain('1.19.0-5.0.pre');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('channel: "any", version: "1.19.0-4.x"', async () => {
|
|
|
|
const result = await release.determineVersion(
|
|
|
|
'1.19.0-4.x',
|
|
|
|
'any',
|
|
|
|
platform
|
|
|
|
);
|
|
|
|
|
|
|
|
expect(result.version).toEqual('1.19.0-4.3.pre');
|
|
|
|
expect(result.rawVersion).toEqual('1.19.0-4.3.pre');
|
|
|
|
expect(result.downloadUrl).toContain('1.19.0-4.3.pre');
|
|
|
|
});
|
2020-10-08 03:22:02 +02:00
|
|
|
});
|
|
|
|
});
|