blob: 6d42330c28cb50f0e26a0382b856178980a9f637 [file] [log] [blame] [edit]
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:pub_semver/pub_semver.dart';
import 'package:scripts/src/versions.dart';
import 'package:test/test.dart';
import 'utils.dart';
final stable = DartSdkVersion('stable', Version.parse('2.12.4'), {
'x64': 'abc',
'arm': 'def',
'arm64': 'ghi',
'riscv64': 'jkl',
}, fakeRead);
final beta = DartSdkVersion('beta', Version.parse('2.13.0-211.6.beta'), {
'x64': 'jmn',
'arm': 'opq',
'arm64': 'rst',
'riscv64': 'uvw',
}, fakeRead);
void main() {
test('fromJson', () {
var versions = versionsFromJson(<String, dynamic>{
'stable': {
'version': '2.12.4',
'sha256': {
'x64': 'abc',
'arm': 'def',
'arm64': 'ghi',
'riscv64': 'jkl',
},
},
'beta': {
'version': '2.13.0-211.6.beta',
'sha256': {
'x64': 'jmn',
'arm': 'opq',
'arm64': 'rst',
'riscv64': 'uvw',
},
},
}, fakeRead);
expect(versions['stable'], stable);
expect(versions['beta'], beta);
expect(versions['stable']?.tags, [
'2.12.4-sdk',
'2.12-sdk',
'2-sdk',
'stable-sdk',
'sdk',
'2.12.4',
'2.12',
'2',
'stable',
'latest',
]);
expect(versions['beta']?.tags, [
'2.13.0-211.6.beta-sdk',
'beta-sdk',
'2.13.0-211.6.beta',
'beta',
]);
expect(versions['stable']?.sha256, {
'x64': 'abc',
'arm': 'def',
'arm64': 'ghi',
'riscv64': 'jkl',
});
expect(versions['beta']?.sha256, {
'x64': 'jmn',
'arm': 'opq',
'arm64': 'rst',
'riscv64': 'uvw',
});
});
test('update, no update', () async {
var read = mockRead({
'/dart-archive/channels/stable/release/latest/VERSION':
'{"version":"2.12.4"}',
});
var version = DartSdkVersion('stable', Version.parse('2.12.4'), {}, read);
expect(await version.update(), false);
});
test('update, new version', () async {
var read = mockRead({
'/dart-archive/channels/stable/release/latest/VERSION':
'{"version":"3.13.2"}',
'/dart-archive/channels/stable/release/3.13.2/sdk/dartsdk-linux-x64-release.zip.sha256sum':
'abc *dartsdk-linux-x64-release.zip',
'/dart-archive/channels/stable/release/3.13.2/sdk/dartsdk-linux-arm-release.zip.sha256sum':
'def *dartsdk-linux-arm-release.zip',
'/dart-archive/channels/stable/release/3.13.2/sdk/dartsdk-linux-arm64-release.zip.sha256sum':
'ghi *dartsdk-linux-arm64-release.zip',
'/dart-archive/channels/stable/release/3.13.2/sdk/dartsdk-linux-riscv64-release.zip.sha256sum':
'jkl *dartsdk-linux-riscv64-release.zip',
});
var version = DartSdkVersion('stable', Version.parse('2.12.4'), {}, read);
expect(await version.update(), true);
expect(
version,
DartSdkVersion('stable', Version.parse('3.13.2'), {
'x64': 'abc',
'arm': 'def',
'arm64': 'ghi',
'riscv64': 'jkl',
}, fakeRead),
);
});
test('verify version succeeds', () async {
var read = mockRead({
'/dart-archive/channels/stable/release/2.12.4/sdk/dartsdk-linux-x64-release.zip.sha256sum':
'x64-sha *dartsdk-linux-x64-release.zip',
'/dart-archive/channels/stable/release/2.12.4/sdk/dartsdk-linux-arm-release.zip.sha256sum':
'arm-sha *dartsdk-linux-arm-release.zip',
'/dart-archive/channels/stable/release/2.12.4/sdk/dartsdk-linux-arm64-release.zip.sha256sum':
'arm64-sha *dartsdk-linux-arm64-release.zip',
'/dart-archive/channels/stable/release/2.12.4/sdk/dartsdk-linux-riscv64-release.zip.sha256sum':
'riscv64-sha *dartsdk-linux-riscv64-release.zip',
});
var sha256 = {
'x64': 'x64-sha',
'arm': 'arm-sha',
'arm64': 'arm64-sha',
'riscv64': 'riscv64-sha',
};
var version = DartSdkVersion(
'stable',
Version.parse('2.12.4'),
sha256,
read,
);
await version.verify();
});
test('verify version fails', () async {
var read = mockRead({
'/dart-archive/channels/stable/release/2.12.4/sdk/dartsdk-linux-x64-release.zip.sha256sum':
'x64-sha *dartsdk-linux-x64-release.zip',
'/dart-archive/channels/stable/release/2.12.4/sdk/dartsdk-linux-arm-release.zip.sha256sum':
'arm-sha *dartsdk-linux-arm-release.zip',
'/dart-archive/channels/stable/release/2.12.4/sdk/dartsdk-linux-arm64-release.zip.sha256sum':
'arm64-sha *dartsdk-linux-arm64-release.zip',
'/dart-archive/channels/stable/release/2.12.4/sdk/dartsdk-linux-riscv64-release.zip.sha256sum':
'riscv64-sha *dartsdk-linux-riscv64-release.zip',
});
var sha256 = {'x64': 'wrong-sha', 'arm': 'wrong-sha', 'arm64': 'wrong-sha'};
var version = DartSdkVersion(
'stable',
Version.parse('2.12.4'),
sha256,
read,
);
expect(() async => await version.verify(), throwsStateError);
});
}