mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00

This modifies the flutter update-packages and flutter update-packages --force-upgrade commands so that the many invocations of "dart pub get" in each repo project run in parallel instead of in series.
126 lines
4.4 KiB
Dart
126 lines
4.4 KiB
Dart
// Copyright 2014 The Flutter Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// @dart = 2.8
|
|
|
|
import 'package:args/command_runner.dart';
|
|
import 'package:file/memory.dart';
|
|
import 'package:flutter_tools/src/base/file_system.dart';
|
|
import 'package:flutter_tools/src/cache.dart';
|
|
import 'package:flutter_tools/src/commands/packages.dart';
|
|
import 'package:flutter_tools/src/dart/pub.dart';
|
|
import 'package:flutter_tools/src/reporting/reporting.dart';
|
|
import 'package:meta/meta.dart';
|
|
import 'package:test/fake.dart';
|
|
|
|
import '../../src/context.dart';
|
|
import '../../src/test_flutter_command_runner.dart';
|
|
|
|
void main() {
|
|
FileSystem fileSystem;
|
|
FakePub pub;
|
|
|
|
setUp(() {
|
|
Cache.disableLocking();
|
|
fileSystem = MemoryFileSystem.test();
|
|
pub = FakePub(fileSystem);
|
|
});
|
|
|
|
tearDown(() {
|
|
Cache.enableLocking();
|
|
});
|
|
|
|
testUsingContext('pub get usage values are resilient to missing package config files before running "pub get"', () async {
|
|
fileSystem.currentDirectory.childFile('pubspec.yaml').createSync();
|
|
fileSystem.currentDirectory.childFile('.flutter-plugins').createSync();
|
|
fileSystem.currentDirectory.childFile('.flutter-plugins-dependencies').createSync();
|
|
|
|
final PackagesGetCommand command = PackagesGetCommand('get', false);
|
|
final CommandRunner<void> commandRunner = createTestCommandRunner(command);
|
|
|
|
await commandRunner.run(<String>['get']);
|
|
|
|
expect(await command.usageValues, const CustomDimensions(
|
|
commandPackagesNumberPlugins: 0,
|
|
commandPackagesProjectModule: false,
|
|
commandPackagesAndroidEmbeddingVersion: 'v1',
|
|
));
|
|
}, overrides: <Type, Generator>{
|
|
Pub: () => pub,
|
|
ProcessManager: () => FakeProcessManager.any(),
|
|
FileSystem: () => fileSystem,
|
|
});
|
|
|
|
testUsingContext('pub get usage values are resilient to poorly formatted package config before "pub get"', () async {
|
|
fileSystem.currentDirectory.childFile('pubspec.yaml').createSync();
|
|
fileSystem.currentDirectory.childFile('.flutter-plugins').createSync();
|
|
fileSystem.currentDirectory.childFile('.flutter-plugins-dependencies').createSync();
|
|
fileSystem.currentDirectory.childFile('.packages').writeAsBytesSync(<int>[0]);
|
|
fileSystem.currentDirectory.childFile('.dart_tool/package_config.json')
|
|
..createSync(recursive: true)
|
|
..writeAsBytesSync(<int>[0]);
|
|
|
|
final PackagesGetCommand command = PackagesGetCommand('get', false);
|
|
final CommandRunner<void> commandRunner = createTestCommandRunner(command);
|
|
|
|
await commandRunner.run(<String>['get']);
|
|
|
|
expect(await command.usageValues, const CustomDimensions(
|
|
commandPackagesNumberPlugins: 0,
|
|
commandPackagesProjectModule: false,
|
|
commandPackagesAndroidEmbeddingVersion: 'v1',
|
|
));
|
|
}, overrides: <Type, Generator>{
|
|
Pub: () => pub,
|
|
ProcessManager: () => FakeProcessManager.any(),
|
|
FileSystem: () => fileSystem,
|
|
});
|
|
|
|
testUsingContext("pub get skips example directory if it doesn't contain a pubspec.yaml", () async {
|
|
fileSystem.currentDirectory.childFile('pubspec.yaml').createSync();
|
|
fileSystem.currentDirectory.childDirectory('example').createSync(recursive: true);
|
|
|
|
final PackagesGetCommand command = PackagesGetCommand('get', false);
|
|
final CommandRunner<void> commandRunner = createTestCommandRunner(command);
|
|
|
|
await commandRunner.run(<String>['get']);
|
|
|
|
expect(await command.usageValues, const CustomDimensions(
|
|
commandPackagesNumberPlugins: 0,
|
|
commandPackagesProjectModule: false,
|
|
commandPackagesAndroidEmbeddingVersion: 'v1',
|
|
));
|
|
}, overrides: <Type, Generator>{
|
|
Pub: () => pub,
|
|
ProcessManager: () => FakeProcessManager.any(),
|
|
FileSystem: () => fileSystem,
|
|
});
|
|
}
|
|
|
|
class FakePub extends Fake implements Pub {
|
|
FakePub(this.fileSystem);
|
|
|
|
final FileSystem fileSystem;
|
|
|
|
@override
|
|
Future<void> get({
|
|
@required PubContext context,
|
|
String directory,
|
|
bool skipIfAbsent = false,
|
|
bool upgrade = false,
|
|
bool offline = false,
|
|
bool generateSyntheticPackage = false,
|
|
String flutterRootOverride,
|
|
bool checkUpToDate = false,
|
|
bool shouldSkipThirdPartyGenerator = true,
|
|
bool printProgress = true,
|
|
}) async {
|
|
fileSystem.currentDirectory
|
|
.childDirectory('.dart_tool')
|
|
.childFile('package_config.json')
|
|
..createSync(recursive: true)
|
|
..writeAsStringSync('{"configVersion":2,"packages":[]}');
|
|
}
|
|
}
|