blob: f86f06a348a238c2a61bc85ae49b5d0706621960 [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:file/memory.dart';
import 'package:test/test.dart';
import '../bin/update.dart' as update;
import 'utils.dart';
void main() {
test('update succeeds, no updates', () async {
var read = mockRead({
'/dart-archive/channels/stable/release/latest/VERSION':
'{"version":"2.12.4"}',
'/dart-archive/channels/beta/release/latest/VERSION':
'{"version":"2.13.0-211.14.beta"}',
});
var fileSystem = TestFileSystem.build({'versions.json': versions});
await update.update(fileSystem.fileSystem, read, false);
expect(fileSystem.contexts, ['versions.json']);
expect(fileSystem.operations, [FileSystemOp.read]);
});
test('update succeeds, dockerfile updated', () async {
var read = mockRead({
'/dart-archive/channels/stable/release/latest/VERSION':
'{"version":"2.12.4"}',
'/dart-archive/channels/beta/release/latest/VERSION':
'{"version":"2.14.0-16.1.beta"}',
'/dart-archive/channels/beta/release/2.14.0-16.1.beta/sdk/dartsdk-linux-x64-release.zip.sha256sum':
'x64-sha *dartsdk-linux-x64-release.zip',
'/dart-archive/channels/beta/release/2.14.0-16.1.beta/sdk/dartsdk-linux-arm-release.zip.sha256sum':
'arm-sha *dartsdk-linux-arm-release.zip',
'/dart-archive/channels/beta/release/2.14.0-16.1.beta/sdk/dartsdk-linux-arm64-release.zip.sha256sum':
'arm64-sha *dartsdk-linux-arm64-release.zip',
'/dart-archive/channels/beta/release/2.14.0-16.1.beta/sdk/dartsdk-linux-riscv64-release.zip.sha256sum':
'riscv64-sha *dartsdk-linux-riscv64-release.zip',
});
var fileSystem = TestFileSystem.build({
'versions.json': versions,
'Dockerfile-debian.template': dockerfileTemplate,
'beta/trixie/Dockerfile': '',
});
await update.update(fileSystem.fileSystem, read, false);
expect(fileSystem.contexts, [
'versions.json',
'Dockerfile-debian.template',
'versions.json',
'beta/trixie',
'beta/trixie/Dockerfile',
]);
expect(fileSystem.operations, [
FileSystemOp.read,
FileSystemOp.read,
FileSystemOp.write,
FileSystemOp.create,
FileSystemOp.write,
]);
const expected = '''
ENV DART_CHANNEL beta
ENV DART_VERSION 2.14.0-16.1.beta
ENV DART_SHA256_X64 x64-sha
ENV DART_SHA256_ARM arm-sha
ENV DART_SHA256_ARM64 arm64-sha
ENV DART_SHA256_RISCV64 riscv64-sha
''';
expect(
fileSystem.fileSystem.file('beta/trixie/Dockerfile').readAsStringSync(),
expected,
);
});
test('update succeeds, dockerfile update forced', () async {
var read = mockRead({
'/dart-archive/channels/stable/release/latest/VERSION':
'{"version":"2.12.4"}',
'/dart-archive/channels/beta/release/latest/VERSION':
'{"version":"2.13.0-211.14.beta"}',
});
var fileSystem = TestFileSystem.build({
'versions.json': versions,
'Dockerfile-debian.template': dockerfileTemplate,
'stable/trixie/Dockerfile': '''
ENV DART_CHANNEL bugged
ENV DART_VERSION weird
ENV DART_SHA256 off
''',
'beta/trixie/Dockerfile': '''
ENV DART_CHANNEL outdated
ENV DART_VERSION wrong
ENV DART_SHA256 incorrect
''',
});
await update.update(fileSystem.fileSystem, read, true);
expect(fileSystem.contexts, [
'versions.json',
'Dockerfile-debian.template',
'versions.json',
'stable/trixie',
'stable/trixie/Dockerfile',
'beta/trixie',
'beta/trixie/Dockerfile',
]);
expect(fileSystem.operations, [
FileSystemOp.read,
FileSystemOp.read,
FileSystemOp.write,
FileSystemOp.create,
FileSystemOp.write,
FileSystemOp.create,
FileSystemOp.write,
]);
const expectedBeta = '''
ENV DART_CHANNEL beta
ENV DART_VERSION 2.13.0-211.14.beta
ENV DART_SHA256_X64 jmn
ENV DART_SHA256_ARM opq
ENV DART_SHA256_ARM64 rst
ENV DART_SHA256_RISCV64 uvw
''';
expect(
fileSystem.fileSystem.file('beta/trixie/Dockerfile').readAsStringSync(),
expectedBeta,
);
const expectedStable = '''
ENV DART_CHANNEL stable
ENV DART_VERSION 2.12.4
ENV DART_SHA256_X64 abc
ENV DART_SHA256_ARM def
ENV DART_SHA256_ARM64 ghi
ENV DART_SHA256_RISCV64 jkl
''';
expect(
fileSystem.fileSystem.file('stable/trixie/Dockerfile').readAsStringSync(),
expectedStable,
);
});
}