This reverts commit 3802eb627ef5eb0a79ee56354e7b78bc43e6720e.
This commit is contained in:
parent
5848306e37
commit
0e195e9d46
@ -980,13 +980,6 @@ class _SnippetChecker {
|
|||||||
/// Invokes the analyzer on the given [directory] and returns the stdout (with some lines filtered).
|
/// Invokes the analyzer on the given [directory] and returns the stdout (with some lines filtered).
|
||||||
List<String> _runAnalyzer() {
|
List<String> _runAnalyzer() {
|
||||||
_createConfigurationFiles();
|
_createConfigurationFiles();
|
||||||
// Run pub get to avoid output from getting dependencies in the analyzer
|
|
||||||
// output.
|
|
||||||
Process.runSync(
|
|
||||||
_flutter,
|
|
||||||
<String>['pub', 'get'],
|
|
||||||
workingDirectory: _tempDirectory.absolute.path,
|
|
||||||
);
|
|
||||||
final ProcessResult result = Process.runSync(
|
final ProcessResult result = Process.runSync(
|
||||||
_flutter,
|
_flutter,
|
||||||
<String>['--no-wrap', 'analyze', '--no-preamble', '--no-congratulate', '.'],
|
<String>['--no-wrap', 'analyze', '--no-preamble', '--no-congratulate', '.'],
|
||||||
@ -1013,7 +1006,7 @@ class _SnippetChecker {
|
|||||||
if (stdout.isNotEmpty && stdout.first == 'Building flutter tool...') {
|
if (stdout.isNotEmpty && stdout.first == 'Building flutter tool...') {
|
||||||
stdout.removeAt(0);
|
stdout.removeAt(0);
|
||||||
}
|
}
|
||||||
if (stdout.isNotEmpty && stdout.first.isEmpty) {
|
if (stdout.isNotEmpty && stdout.first.startsWith('Running "flutter pub get" in ')) {
|
||||||
stdout.removeAt(0);
|
stdout.removeAt(0);
|
||||||
}
|
}
|
||||||
return stdout;
|
return stdout;
|
||||||
|
@ -192,6 +192,7 @@ class CreateCommand extends CreateBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
validateOutputDirectoryArg();
|
validateOutputDirectoryArg();
|
||||||
|
|
||||||
String? sampleCode;
|
String? sampleCode;
|
||||||
final String? sampleArgument = stringArg('sample');
|
final String? sampleArgument = stringArg('sample');
|
||||||
if (sampleArgument != null) {
|
if (sampleArgument != null) {
|
||||||
@ -254,29 +255,7 @@ class CreateCommand extends CreateBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final String dartSdk = globals.cache.dartSdkBuild;
|
final String dartSdk = globals.cache.dartSdkBuild;
|
||||||
final bool includeIos;
|
final bool includeIos = featureFlags.isIOSEnabled && platforms.contains('ios');
|
||||||
final bool includeAndroid;
|
|
||||||
final bool includeWeb;
|
|
||||||
final bool includeLinux;
|
|
||||||
final bool includeMacos;
|
|
||||||
final bool includeWindows;
|
|
||||||
if (template == FlutterProjectType.module) {
|
|
||||||
// The module template only supports iOS and Android.
|
|
||||||
includeIos = true;
|
|
||||||
includeAndroid = true;
|
|
||||||
includeWeb = false;
|
|
||||||
includeLinux = false;
|
|
||||||
includeMacos = false;
|
|
||||||
includeWindows = false;
|
|
||||||
} else {
|
|
||||||
includeIos = featureFlags.isIOSEnabled && platforms.contains('ios');
|
|
||||||
includeAndroid = featureFlags.isAndroidEnabled && platforms.contains('android');
|
|
||||||
includeWeb = featureFlags.isWebEnabled && platforms.contains('web');
|
|
||||||
includeLinux = featureFlags.isLinuxEnabled && platforms.contains('linux');
|
|
||||||
includeMacos = featureFlags.isMacOSEnabled && platforms.contains('macos');
|
|
||||||
includeWindows = featureFlags.isWindowsEnabled && platforms.contains('windows');
|
|
||||||
}
|
|
||||||
|
|
||||||
String? developmentTeam;
|
String? developmentTeam;
|
||||||
if (includeIos) {
|
if (includeIos) {
|
||||||
developmentTeam = await getCodeSigningIdentityDevelopmentTeam(
|
developmentTeam = await getCodeSigningIdentityDevelopmentTeam(
|
||||||
@ -303,11 +282,11 @@ class CreateCommand extends CreateBase {
|
|||||||
iosLanguage: stringArgDeprecated('ios-language'),
|
iosLanguage: stringArgDeprecated('ios-language'),
|
||||||
iosDevelopmentTeam: developmentTeam,
|
iosDevelopmentTeam: developmentTeam,
|
||||||
ios: includeIos,
|
ios: includeIos,
|
||||||
android: includeAndroid,
|
android: featureFlags.isAndroidEnabled && platforms.contains('android'),
|
||||||
web: includeWeb,
|
web: featureFlags.isWebEnabled && platforms.contains('web'),
|
||||||
linux: includeLinux,
|
linux: featureFlags.isLinuxEnabled && platforms.contains('linux'),
|
||||||
macos: includeMacos,
|
macos: featureFlags.isMacOSEnabled && platforms.contains('macos'),
|
||||||
windows: includeWindows,
|
windows: featureFlags.isWindowsEnabled && platforms.contains('windows'),
|
||||||
// Enable null safety everywhere.
|
// Enable null safety everywhere.
|
||||||
dartSdkVersionBounds: "'>=$dartSdk <3.0.0'",
|
dartSdkVersionBounds: "'>=$dartSdk <3.0.0'",
|
||||||
implementationTests: boolArgDeprecated('implementation-tests'),
|
implementationTests: boolArgDeprecated('implementation-tests'),
|
||||||
@ -330,7 +309,6 @@ class CreateCommand extends CreateBase {
|
|||||||
|
|
||||||
final Directory relativeDir = globals.fs.directory(projectDirPath);
|
final Directory relativeDir = globals.fs.directory(projectDirPath);
|
||||||
int generatedFileCount = 0;
|
int generatedFileCount = 0;
|
||||||
final PubContext pubContext;
|
|
||||||
switch (template) {
|
switch (template) {
|
||||||
case FlutterProjectType.app:
|
case FlutterProjectType.app:
|
||||||
generatedFileCount += await generateApp(
|
generatedFileCount += await generateApp(
|
||||||
@ -341,7 +319,6 @@ class CreateCommand extends CreateBase {
|
|||||||
printStatusWhenWriting: !creatingNewProject,
|
printStatusWhenWriting: !creatingNewProject,
|
||||||
projectType: template,
|
projectType: template,
|
||||||
);
|
);
|
||||||
pubContext = PubContext.create;
|
|
||||||
break;
|
break;
|
||||||
case FlutterProjectType.skeleton:
|
case FlutterProjectType.skeleton:
|
||||||
generatedFileCount += await generateApp(
|
generatedFileCount += await generateApp(
|
||||||
@ -352,7 +329,6 @@ class CreateCommand extends CreateBase {
|
|||||||
printStatusWhenWriting: !creatingNewProject,
|
printStatusWhenWriting: !creatingNewProject,
|
||||||
generateMetadata: false,
|
generateMetadata: false,
|
||||||
);
|
);
|
||||||
pubContext = PubContext.create;
|
|
||||||
break;
|
break;
|
||||||
case FlutterProjectType.module:
|
case FlutterProjectType.module:
|
||||||
generatedFileCount += await _generateModule(
|
generatedFileCount += await _generateModule(
|
||||||
@ -361,7 +337,6 @@ class CreateCommand extends CreateBase {
|
|||||||
overwrite: overwrite,
|
overwrite: overwrite,
|
||||||
printStatusWhenWriting: !creatingNewProject,
|
printStatusWhenWriting: !creatingNewProject,
|
||||||
);
|
);
|
||||||
pubContext = PubContext.create;
|
|
||||||
break;
|
break;
|
||||||
case FlutterProjectType.package:
|
case FlutterProjectType.package:
|
||||||
generatedFileCount += await _generatePackage(
|
generatedFileCount += await _generatePackage(
|
||||||
@ -370,7 +345,6 @@ class CreateCommand extends CreateBase {
|
|||||||
overwrite: overwrite,
|
overwrite: overwrite,
|
||||||
printStatusWhenWriting: !creatingNewProject,
|
printStatusWhenWriting: !creatingNewProject,
|
||||||
);
|
);
|
||||||
pubContext = PubContext.createPackage;
|
|
||||||
break;
|
break;
|
||||||
case FlutterProjectType.plugin:
|
case FlutterProjectType.plugin:
|
||||||
generatedFileCount += await _generateMethodChannelPlugin(
|
generatedFileCount += await _generateMethodChannelPlugin(
|
||||||
@ -380,7 +354,6 @@ class CreateCommand extends CreateBase {
|
|||||||
printStatusWhenWriting: !creatingNewProject,
|
printStatusWhenWriting: !creatingNewProject,
|
||||||
projectType: template,
|
projectType: template,
|
||||||
);
|
);
|
||||||
pubContext = PubContext.createPlugin;
|
|
||||||
break;
|
break;
|
||||||
case FlutterProjectType.ffiPlugin:
|
case FlutterProjectType.ffiPlugin:
|
||||||
generatedFileCount += await _generateFfiPlugin(
|
generatedFileCount += await _generateFfiPlugin(
|
||||||
@ -390,26 +363,8 @@ class CreateCommand extends CreateBase {
|
|||||||
printStatusWhenWriting: !creatingNewProject,
|
printStatusWhenWriting: !creatingNewProject,
|
||||||
projectType: template,
|
projectType: template,
|
||||||
);
|
);
|
||||||
pubContext = PubContext.createPlugin;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (boolArgDeprecated('pub')) {
|
|
||||||
final FlutterProject project = FlutterProject.fromDirectory(relativeDir);
|
|
||||||
await pub.get(
|
|
||||||
context: pubContext,
|
|
||||||
project: project,
|
|
||||||
offline: boolArgDeprecated('offline'),
|
|
||||||
);
|
|
||||||
await project.ensureReadyForPlatformSpecificTooling(
|
|
||||||
androidPlatform: includeAndroid,
|
|
||||||
iosPlatform: includeIos,
|
|
||||||
linuxPlatform: includeLinux,
|
|
||||||
macOSPlatform: includeMacos,
|
|
||||||
windowsPlatform: includeWindows,
|
|
||||||
webPlatform: includeWeb,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (sampleCode != null) {
|
if (sampleCode != null) {
|
||||||
generatedFileCount += _applySample(relativeDir, sampleCode);
|
generatedFileCount += _applySample(relativeDir, sampleCode);
|
||||||
}
|
}
|
||||||
@ -492,6 +447,18 @@ Your $application code is in $relativeAppMain.
|
|||||||
overwrite: overwrite,
|
overwrite: overwrite,
|
||||||
printStatusWhenWriting: printStatusWhenWriting,
|
printStatusWhenWriting: printStatusWhenWriting,
|
||||||
);
|
);
|
||||||
|
if (boolArgDeprecated('pub')) {
|
||||||
|
await pub.get(
|
||||||
|
context: PubContext.create,
|
||||||
|
directory: directory.path,
|
||||||
|
offline: boolArgDeprecated('offline'),
|
||||||
|
);
|
||||||
|
final FlutterProject project = FlutterProject.fromDirectory(directory);
|
||||||
|
await project.ensureReadyForPlatformSpecificTooling(
|
||||||
|
androidPlatform: true,
|
||||||
|
iosPlatform: true,
|
||||||
|
);
|
||||||
|
}
|
||||||
return generatedCount;
|
return generatedCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -513,6 +480,13 @@ Your $application code is in $relativeAppMain.
|
|||||||
overwrite: overwrite,
|
overwrite: overwrite,
|
||||||
printStatusWhenWriting: printStatusWhenWriting,
|
printStatusWhenWriting: printStatusWhenWriting,
|
||||||
);
|
);
|
||||||
|
if (boolArgDeprecated('pub')) {
|
||||||
|
await pub.get(
|
||||||
|
context: PubContext.createPackage,
|
||||||
|
directory: directory.path,
|
||||||
|
offline: boolArgDeprecated('offline'),
|
||||||
|
);
|
||||||
|
}
|
||||||
return generatedCount;
|
return generatedCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -552,6 +526,14 @@ Your $application code is in $relativeAppMain.
|
|||||||
printStatusWhenWriting: printStatusWhenWriting,
|
printStatusWhenWriting: printStatusWhenWriting,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (boolArgDeprecated('pub')) {
|
||||||
|
await pub.get(
|
||||||
|
context: PubContext.createPlugin,
|
||||||
|
directory: directory.path,
|
||||||
|
offline: boolArgDeprecated('offline'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
final FlutterProject project = FlutterProject.fromDirectory(directory);
|
final FlutterProject project = FlutterProject.fromDirectory(directory);
|
||||||
final bool generateAndroid = templateContext['android'] == true;
|
final bool generateAndroid = templateContext['android'] == true;
|
||||||
if (generateAndroid) {
|
if (generateAndroid) {
|
||||||
@ -622,6 +604,14 @@ Your $application code is in $relativeAppMain.
|
|||||||
printStatusWhenWriting: printStatusWhenWriting,
|
printStatusWhenWriting: printStatusWhenWriting,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (boolArgDeprecated('pub')) {
|
||||||
|
await pub.get(
|
||||||
|
context: PubContext.createPlugin,
|
||||||
|
directory: directory.path,
|
||||||
|
offline: boolArgDeprecated('offline'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
final FlutterProject project = FlutterProject.fromDirectory(directory);
|
final FlutterProject project = FlutterProject.fromDirectory(directory);
|
||||||
final bool generateAndroid = templateContext['android'] == true;
|
final bool generateAndroid = templateContext['android'] == true;
|
||||||
if (generateAndroid) {
|
if (generateAndroid) {
|
||||||
|
@ -17,6 +17,7 @@ import '../build_system/build_system.dart';
|
|||||||
import '../cache.dart';
|
import '../cache.dart';
|
||||||
import '../convert.dart';
|
import '../convert.dart';
|
||||||
import '../dart/generate_synthetic_packages.dart';
|
import '../dart/generate_synthetic_packages.dart';
|
||||||
|
import '../dart/pub.dart';
|
||||||
import '../flutter_project_metadata.dart';
|
import '../flutter_project_metadata.dart';
|
||||||
import '../globals.dart' as globals;
|
import '../globals.dart' as globals;
|
||||||
import '../project.dart';
|
import '../project.dart';
|
||||||
@ -548,6 +549,24 @@ abstract class CreateBase extends FlutterCommand {
|
|||||||
environment: environment,
|
environment: environment,
|
||||||
buildSystem: globals.buildSystem,
|
buildSystem: globals.buildSystem,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
await pub.get(
|
||||||
|
context: PubContext.create,
|
||||||
|
directory: directory.path,
|
||||||
|
offline: boolArgDeprecated('offline'),
|
||||||
|
// For templates that use the l10n localization tooling, make sure
|
||||||
|
// importing the generated package works right after `flutter create`.
|
||||||
|
generateSyntheticPackage: true,
|
||||||
|
);
|
||||||
|
|
||||||
|
await project.ensureReadyForPlatformSpecificTooling(
|
||||||
|
androidPlatform: androidPlatform,
|
||||||
|
iosPlatform: iosPlatform,
|
||||||
|
linuxPlatform: linuxPlatform,
|
||||||
|
macOSPlatform: macOSPlatform,
|
||||||
|
windowsPlatform: windowsPlatform,
|
||||||
|
webPlatform: webPlatform,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
final List<SupportedPlatform> platformsForMigrateConfig = <SupportedPlatform>[SupportedPlatform.root];
|
final List<SupportedPlatform> platformsForMigrateConfig = <SupportedPlatform>[SupportedPlatform.root];
|
||||||
if (androidPlatform) {
|
if (androidPlatform) {
|
||||||
|
@ -1541,7 +1541,7 @@ class AppRunLogger extends DelegatingLogger {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool get supportsColor => false;
|
bool get supportsColor => throw UnimplementedError();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool get hasTerminal => false;
|
bool get hasTerminal => false;
|
||||||
|
@ -139,10 +139,11 @@ class PackagesGetCommand extends FlutterCommand {
|
|||||||
try {
|
try {
|
||||||
await pub.get(
|
await pub.get(
|
||||||
context: PubContext.pubGet,
|
context: PubContext.pubGet,
|
||||||
project: flutterProject,
|
directory: directory,
|
||||||
upgrade: upgrade,
|
upgrade: upgrade,
|
||||||
shouldSkipThirdPartyGenerator: false,
|
shouldSkipThirdPartyGenerator: false,
|
||||||
offline: boolArgDeprecated('offline'),
|
offline: boolArgDeprecated('offline'),
|
||||||
|
generateSyntheticPackage: flutterProject.manifest.generateSyntheticPackage,
|
||||||
);
|
);
|
||||||
pubGetTimer.stop();
|
pubGetTimer.stop();
|
||||||
globals.flutterUsage.sendTiming('pub', 'get', pubGetTimer.elapsed, label: 'success');
|
globals.flutterUsage.sendTiming('pub', 'get', pubGetTimer.elapsed, label: 'success');
|
||||||
@ -171,14 +172,13 @@ class PackagesGetCommand extends FlutterCommand {
|
|||||||
}
|
}
|
||||||
final FlutterProject rootProject = FlutterProject.fromDirectory(globals.fs.directory(target));
|
final FlutterProject rootProject = FlutterProject.fromDirectory(globals.fs.directory(target));
|
||||||
|
|
||||||
// This will also resolve dependencies for the example folder,
|
|
||||||
await _runPubGet(target, rootProject);
|
await _runPubGet(target, rootProject);
|
||||||
|
|
||||||
// We need to regenerate the platform specific tooling for both the project
|
|
||||||
// itself and example (if present).
|
|
||||||
await rootProject.regeneratePlatformSpecificTooling();
|
await rootProject.regeneratePlatformSpecificTooling();
|
||||||
|
|
||||||
|
// Get/upgrade packages in example app as well
|
||||||
if (rootProject.hasExampleApp && rootProject.example.pubspecFile.existsSync()) {
|
if (rootProject.hasExampleApp && rootProject.example.pubspecFile.existsSync()) {
|
||||||
final FlutterProject exampleProject = rootProject.example;
|
final FlutterProject exampleProject = rootProject.example;
|
||||||
|
await _runPubGet(exampleProject.directory.path, exampleProject);
|
||||||
await exampleProject.regeneratePlatformSpecificTooling();
|
await exampleProject.regeneratePlatformSpecificTooling();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -211,7 +211,7 @@ class PackagesTestCommand extends FlutterCommand {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<FlutterCommandResult> runCommand() async {
|
Future<FlutterCommandResult> runCommand() async {
|
||||||
await pub.batch(<String>['run', 'test', ...argResults!.rest], context: PubContext.runTest);
|
await pub.batch(<String>['run', 'test', ...argResults!.rest], context: PubContext.runTest, retry: false);
|
||||||
return FlutterCommandResult.success();
|
return FlutterCommandResult.success();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,6 @@ import '../base/task_queue.dart';
|
|||||||
import '../cache.dart';
|
import '../cache.dart';
|
||||||
import '../dart/pub.dart';
|
import '../dart/pub.dart';
|
||||||
import '../globals.dart' as globals;
|
import '../globals.dart' as globals;
|
||||||
import '../project.dart';
|
|
||||||
import '../runner/flutter_command.dart';
|
import '../runner/flutter_command.dart';
|
||||||
|
|
||||||
/// Map from package name to package version, used to artificially pin a pub
|
/// Map from package name to package version, used to artificially pin a pub
|
||||||
@ -400,7 +399,7 @@ class UpdatePackagesCommand extends FlutterCommand {
|
|||||||
// needed packages to the pub cache, upgrading if requested.
|
// needed packages to the pub cache, upgrading if requested.
|
||||||
await pub.get(
|
await pub.get(
|
||||||
context: PubContext.updatePackages,
|
context: PubContext.updatePackages,
|
||||||
project: FlutterProject.fromDirectory(tempDir),
|
directory: tempDir.path,
|
||||||
upgrade: doUpgrade,
|
upgrade: doUpgrade,
|
||||||
offline: boolArgDeprecated('offline'),
|
offline: boolArgDeprecated('offline'),
|
||||||
flutterRootOverride: temporaryFlutterSdk?.path,
|
flutterRootOverride: temporaryFlutterSdk?.path,
|
||||||
@ -423,6 +422,7 @@ class UpdatePackagesCommand extends FlutterCommand {
|
|||||||
context: PubContext.updatePackages,
|
context: PubContext.updatePackages,
|
||||||
directory: tempDir.path,
|
directory: tempDir.path,
|
||||||
filter: tree.fill,
|
filter: tree.fill,
|
||||||
|
retry: false, // errors here are usually fatal since we're not hitting the network
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
@ -502,7 +502,7 @@ class UpdatePackagesCommand extends FlutterCommand {
|
|||||||
stopwatch.start();
|
stopwatch.start();
|
||||||
await pub.get(
|
await pub.get(
|
||||||
context: PubContext.updatePackages,
|
context: PubContext.updatePackages,
|
||||||
project: FlutterProject.fromDirectory(dir),
|
directory: dir.path,
|
||||||
// All dependencies should already have been downloaded by the fake
|
// All dependencies should already have been downloaded by the fake
|
||||||
// package, so the concurrent checks can all happen offline.
|
// package, so the concurrent checks can all happen offline.
|
||||||
offline: true,
|
offline: true,
|
||||||
|
@ -12,7 +12,6 @@ import '../cache.dart';
|
|||||||
import '../dart/pub.dart';
|
import '../dart/pub.dart';
|
||||||
import '../globals.dart' as globals;
|
import '../globals.dart' as globals;
|
||||||
import '../persistent_tool_state.dart';
|
import '../persistent_tool_state.dart';
|
||||||
import '../project.dart';
|
|
||||||
import '../runner/flutter_command.dart';
|
import '../runner/flutter_command.dart';
|
||||||
import '../version.dart';
|
import '../version.dart';
|
||||||
import 'channel.dart';
|
import 'channel.dart';
|
||||||
@ -331,7 +330,7 @@ class UpgradeCommandRunner {
|
|||||||
globals.printStatus('');
|
globals.printStatus('');
|
||||||
await pub.get(
|
await pub.get(
|
||||||
context: PubContext.pubUpgrade,
|
context: PubContext.pubUpgrade,
|
||||||
project: FlutterProject.fromDirectory(globals.fs.directory(projectRoot)),
|
directory: projectRoot,
|
||||||
upgrade: true,
|
upgrade: true,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -152,7 +152,6 @@ Future<T> runInContext<T>(
|
|||||||
logger: globals.logger,
|
logger: globals.logger,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
osUtils: globals.os,
|
osUtils: globals.os,
|
||||||
projectFactory: globals.projectFactory,
|
|
||||||
),
|
),
|
||||||
CocoaPods: () => CocoaPods(
|
CocoaPods: () => CocoaPods(
|
||||||
fileSystem: globals.fs,
|
fileSystem: globals.fs,
|
||||||
@ -313,7 +312,6 @@ Future<T> runInContext<T>(
|
|||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
stdio: globals.stdio,
|
|
||||||
),
|
),
|
||||||
ShutdownHooks: () => ShutdownHooks(logger: globals.logger),
|
ShutdownHooks: () => ShutdownHooks(logger: globals.logger),
|
||||||
Stdio: () => Stdio(),
|
Stdio: () => Stdio(),
|
||||||
|
@ -12,14 +12,12 @@ import '../base/common.dart';
|
|||||||
import '../base/context.dart';
|
import '../base/context.dart';
|
||||||
import '../base/file_system.dart';
|
import '../base/file_system.dart';
|
||||||
import '../base/io.dart' as io;
|
import '../base/io.dart' as io;
|
||||||
import '../base/io.dart';
|
|
||||||
import '../base/logger.dart';
|
import '../base/logger.dart';
|
||||||
import '../base/platform.dart';
|
import '../base/platform.dart';
|
||||||
import '../base/process.dart';
|
import '../base/process.dart';
|
||||||
import '../cache.dart';
|
import '../cache.dart';
|
||||||
import '../convert.dart';
|
import '../convert.dart';
|
||||||
import '../dart/package_map.dart';
|
import '../dart/package_map.dart';
|
||||||
import '../project.dart';
|
|
||||||
import '../reporting/reporting.dart';
|
import '../reporting/reporting.dart';
|
||||||
|
|
||||||
/// The [Pub] instance.
|
/// The [Pub] instance.
|
||||||
@ -150,10 +148,9 @@ abstract class Pub {
|
|||||||
required Platform platform,
|
required Platform platform,
|
||||||
required BotDetector botDetector,
|
required BotDetector botDetector,
|
||||||
required Usage usage,
|
required Usage usage,
|
||||||
required Stdio stdio,
|
|
||||||
}) = _DefaultPub;
|
}) = _DefaultPub;
|
||||||
|
|
||||||
/// Runs `pub get` or `pub upgrade` for [project].
|
/// Runs `pub get`.
|
||||||
///
|
///
|
||||||
/// [context] provides extra information to package server requests to
|
/// [context] provides extra information to package server requests to
|
||||||
/// understand usage.
|
/// understand usage.
|
||||||
@ -161,13 +158,13 @@ abstract class Pub {
|
|||||||
/// If [shouldSkipThirdPartyGenerator] is true, the overall pub get will be
|
/// If [shouldSkipThirdPartyGenerator] is true, the overall pub get will be
|
||||||
/// skipped if the package config file has a "generator" other than "pub".
|
/// skipped if the package config file has a "generator" other than "pub".
|
||||||
/// Defaults to true.
|
/// Defaults to true.
|
||||||
/// Will also resolve dependencies in the example folder if present.
|
|
||||||
Future<void> get({
|
Future<void> get({
|
||||||
required PubContext context,
|
required PubContext context,
|
||||||
required FlutterProject project,
|
String? directory,
|
||||||
bool skipIfAbsent = false,
|
bool skipIfAbsent = false,
|
||||||
bool upgrade = false,
|
bool upgrade = false,
|
||||||
bool offline = false,
|
bool offline = false,
|
||||||
|
bool generateSyntheticPackage = false,
|
||||||
String? flutterRootOverride,
|
String? flutterRootOverride,
|
||||||
bool checkUpToDate = false,
|
bool checkUpToDate = false,
|
||||||
bool shouldSkipThirdPartyGenerator = true,
|
bool shouldSkipThirdPartyGenerator = true,
|
||||||
@ -180,8 +177,9 @@ abstract class Pub {
|
|||||||
/// the corresponding stream of this process, optionally applying filtering.
|
/// the corresponding stream of this process, optionally applying filtering.
|
||||||
/// The pub process will not receive anything on its stdin stream.
|
/// The pub process will not receive anything on its stdin stream.
|
||||||
///
|
///
|
||||||
/// The `--trace` argument is passed to `pub` when `showTraceForErrors`
|
/// The `--trace` argument is passed to `pub` (by mutating the provided
|
||||||
/// `isRunningOnBot` is true.
|
/// `arguments` list) when `showTraceForErrors` is true, and when `showTraceForErrors`
|
||||||
|
/// is null/unset, and `isRunningOnBot` is true.
|
||||||
///
|
///
|
||||||
/// [context] provides extra information to package server requests to
|
/// [context] provides extra information to package server requests to
|
||||||
/// understand usage.
|
/// understand usage.
|
||||||
@ -191,6 +189,8 @@ abstract class Pub {
|
|||||||
String? directory,
|
String? directory,
|
||||||
MessageFilter? filter,
|
MessageFilter? filter,
|
||||||
String failureMessage = 'pub failed',
|
String failureMessage = 'pub failed',
|
||||||
|
required bool retry,
|
||||||
|
bool? showTraceForErrors,
|
||||||
});
|
});
|
||||||
|
|
||||||
/// Runs pub in 'interactive' mode.
|
/// Runs pub in 'interactive' mode.
|
||||||
@ -214,7 +214,6 @@ class _DefaultPub implements Pub {
|
|||||||
required Platform platform,
|
required Platform platform,
|
||||||
required BotDetector botDetector,
|
required BotDetector botDetector,
|
||||||
required Usage usage,
|
required Usage usage,
|
||||||
required Stdio stdio,
|
|
||||||
}) : _fileSystem = fileSystem,
|
}) : _fileSystem = fileSystem,
|
||||||
_logger = logger,
|
_logger = logger,
|
||||||
_platform = platform,
|
_platform = platform,
|
||||||
@ -224,8 +223,7 @@ class _DefaultPub implements Pub {
|
|||||||
logger: logger,
|
logger: logger,
|
||||||
processManager: processManager,
|
processManager: processManager,
|
||||||
),
|
),
|
||||||
_processManager = processManager,
|
_processManager = processManager;
|
||||||
_stdio = stdio;
|
|
||||||
|
|
||||||
final FileSystem _fileSystem;
|
final FileSystem _fileSystem;
|
||||||
final Logger _logger;
|
final Logger _logger;
|
||||||
@ -234,40 +232,40 @@ class _DefaultPub implements Pub {
|
|||||||
final BotDetector _botDetector;
|
final BotDetector _botDetector;
|
||||||
final Usage _usage;
|
final Usage _usage;
|
||||||
final ProcessManager _processManager;
|
final ProcessManager _processManager;
|
||||||
final Stdio _stdio;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> get({
|
Future<void> get({
|
||||||
required PubContext context,
|
required PubContext context,
|
||||||
required FlutterProject project,
|
String? directory,
|
||||||
bool skipIfAbsent = false,
|
bool skipIfAbsent = false,
|
||||||
bool upgrade = false,
|
bool upgrade = false,
|
||||||
bool offline = false,
|
bool offline = false,
|
||||||
bool generateSyntheticPackage = false,
|
bool generateSyntheticPackage = false,
|
||||||
bool generateSyntheticPackageForExample = false,
|
|
||||||
String? flutterRootOverride,
|
String? flutterRootOverride,
|
||||||
bool checkUpToDate = false,
|
bool checkUpToDate = false,
|
||||||
bool shouldSkipThirdPartyGenerator = true,
|
bool shouldSkipThirdPartyGenerator = true,
|
||||||
bool printProgress = true,
|
bool printProgress = true,
|
||||||
}) async {
|
}) async {
|
||||||
final String directory = project.directory.path;
|
directory ??= _fileSystem.currentDirectory.path;
|
||||||
final File packageConfigFile = project.packageConfigFile;
|
final File packageConfigFile = _fileSystem.file(
|
||||||
|
_fileSystem.path.join(directory, '.dart_tool', 'package_config.json'));
|
||||||
final Directory generatedDirectory = _fileSystem.directory(
|
final Directory generatedDirectory = _fileSystem.directory(
|
||||||
_fileSystem.path.join(directory, '.dart_tool', 'flutter_gen'));
|
_fileSystem.path.join(directory, '.dart_tool', 'flutter_gen'));
|
||||||
final File lastVersion = _fileSystem.file(
|
final File lastVersion = _fileSystem.file(
|
||||||
_fileSystem.path.join(directory, '.dart_tool', 'version'));
|
_fileSystem.path.join(directory, '.dart_tool', 'version'));
|
||||||
final File currentVersion = _fileSystem.file(
|
final File currentVersion = _fileSystem.file(
|
||||||
_fileSystem.path.join(Cache.flutterRoot!, 'version'));
|
_fileSystem.path.join(Cache.flutterRoot!, 'version'));
|
||||||
final File pubspecYaml = project.pubspecFile;
|
final File pubspecYaml = _fileSystem.file(
|
||||||
|
_fileSystem.path.join(directory, 'pubspec.yaml'));
|
||||||
final File pubLockFile = _fileSystem.file(
|
final File pubLockFile = _fileSystem.file(
|
||||||
_fileSystem.path.join(directory, 'pubspec.lock')
|
_fileSystem.path.join(directory, 'pubspec.lock')
|
||||||
);
|
);
|
||||||
|
|
||||||
if (shouldSkipThirdPartyGenerator && project.packageConfigFile.existsSync()) {
|
if (shouldSkipThirdPartyGenerator && packageConfigFile.existsSync()) {
|
||||||
Map<String, Object?> packageConfigMap;
|
Map<String, Object?> packageConfigMap;
|
||||||
try {
|
try {
|
||||||
packageConfigMap = jsonDecode(
|
packageConfigMap = jsonDecode(
|
||||||
project.packageConfigFile.readAsStringSync(),
|
packageConfigFile.readAsStringSync(),
|
||||||
) as Map<String, Object?>;
|
) as Map<String, Object?>;
|
||||||
} on FormatException {
|
} on FormatException {
|
||||||
packageConfigMap = <String, Object?>{};
|
packageConfigMap = <String, Object?>{};
|
||||||
@ -300,118 +298,31 @@ class _DefaultPub implements Pub {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final String command = upgrade ? 'upgrade' : 'get';
|
final String command = upgrade ? 'upgrade' : 'get';
|
||||||
|
final Status? status = printProgress ? _logger.startProgress(
|
||||||
|
'Running "flutter pub $command" in ${_fileSystem.path.basename(directory)}...',
|
||||||
|
) : null;
|
||||||
final bool verbose = _logger.isVerbose;
|
final bool verbose = _logger.isVerbose;
|
||||||
final List<String> args = <String>[
|
final List<String> args = <String>[
|
||||||
if (_logger.supportsColor)
|
|
||||||
'--color',
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
'--verbose',
|
'--verbose'
|
||||||
'--directory',
|
else
|
||||||
_fileSystem.path.relative(directory),
|
'--verbosity=warning',
|
||||||
...<String>[
|
...<String>[
|
||||||
command,
|
command,
|
||||||
|
'--no-precompile',
|
||||||
],
|
],
|
||||||
if (offline)
|
if (offline)
|
||||||
'--offline',
|
'--offline',
|
||||||
'--example',
|
|
||||||
];
|
];
|
||||||
await _runWithRetries(
|
try {
|
||||||
|
await batch(
|
||||||
args,
|
args,
|
||||||
command: command,
|
|
||||||
context: context,
|
context: context,
|
||||||
directory: directory,
|
directory: directory,
|
||||||
failureMessage: 'pub $command failed',
|
failureMessage: 'pub $command failed',
|
||||||
retry: !offline,
|
retry: !offline,
|
||||||
flutterRootOverride: flutterRootOverride,
|
flutterRootOverride: flutterRootOverride,
|
||||||
printProgress: printProgress
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!packageConfigFile.existsSync()) {
|
|
||||||
throwToolExit('$directory: pub did not create .dart_tools/package_config.json file.');
|
|
||||||
}
|
|
||||||
lastVersion.writeAsStringSync(currentVersion.readAsStringSync());
|
|
||||||
await _updatePackageConfig(
|
|
||||||
packageConfigFile,
|
|
||||||
generatedDirectory,
|
|
||||||
project.manifest.generateSyntheticPackage,
|
|
||||||
);
|
|
||||||
if (project.hasExampleApp && project.example.pubspecFile.existsSync()) {
|
|
||||||
final Directory exampleGeneratedDirectory = _fileSystem.directory(
|
|
||||||
_fileSystem.path.join(project.example.directory.path, '.dart_tool', 'flutter_gen'));
|
|
||||||
await _updatePackageConfig(
|
|
||||||
project.example.packageConfigFile,
|
|
||||||
exampleGeneratedDirectory,
|
|
||||||
project.example.manifest.generateSyntheticPackage,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Runs pub with [arguments].
|
|
||||||
///
|
|
||||||
/// Retries the command as long as the exit code is
|
|
||||||
/// `_kPubExitCodeUnavailable`.
|
|
||||||
///
|
|
||||||
/// Prints the stderr and stdout of the last run.
|
|
||||||
///
|
|
||||||
/// Sends an analytics event
|
|
||||||
Future<void> _runWithRetries(
|
|
||||||
List<String> arguments, {
|
|
||||||
required String command,
|
|
||||||
required bool printProgress,
|
|
||||||
required PubContext context,
|
|
||||||
required bool retry,
|
|
||||||
required String directory,
|
|
||||||
String failureMessage = 'pub failed',
|
|
||||||
String? flutterRootOverride,
|
|
||||||
}) async {
|
|
||||||
int exitCode;
|
|
||||||
int attempts = 0;
|
|
||||||
int duration = 1;
|
|
||||||
|
|
||||||
List<_OutputLine>? output;
|
|
||||||
StreamSubscription<String> recordLines(Stream<List<int>> stream, _OutputStream streamName) {
|
|
||||||
return stream
|
|
||||||
.transform<String>(utf8.decoder)
|
|
||||||
.transform<String>(const LineSplitter())
|
|
||||||
.listen((String line) => output!.add(_OutputLine(line, streamName)));
|
|
||||||
}
|
|
||||||
|
|
||||||
final Status? status = printProgress
|
|
||||||
? _logger.startProgress('Running "flutter pub $command" in ${_fileSystem.path.basename(directory)}...',)
|
|
||||||
: null;
|
|
||||||
final List<String> pubCommand = _pubCommand(arguments);
|
|
||||||
final Map<String, String> pubEnvironment = await _createPubEnvironment(context, flutterRootOverride);
|
|
||||||
try {
|
|
||||||
do {
|
|
||||||
output = <_OutputLine>[];
|
|
||||||
attempts += 1;
|
|
||||||
final io.Process process = await _processUtils.start(
|
|
||||||
pubCommand,
|
|
||||||
workingDirectory: _fileSystem.path.current,
|
|
||||||
environment: pubEnvironment,
|
|
||||||
);
|
|
||||||
final StreamSubscription<String> stdoutSubscription =
|
|
||||||
recordLines(process.stdout, _OutputStream.stdout);
|
|
||||||
final StreamSubscription<String> stderrSubscription =
|
|
||||||
recordLines(process.stderr, _OutputStream.stderr);
|
|
||||||
|
|
||||||
exitCode = await process.exitCode;
|
|
||||||
unawaited(stdoutSubscription.cancel());
|
|
||||||
unawaited(stderrSubscription.cancel());
|
|
||||||
|
|
||||||
if (retry && exitCode == _kPubExitCodeUnavailable) {
|
|
||||||
_logger.printStatus(
|
|
||||||
'$failureMessage (server unavailable) -- attempting retry $attempts in $duration '
|
|
||||||
'second${ duration == 1 ? "" : "s"}...',
|
|
||||||
);
|
|
||||||
await Future<void>.delayed(Duration(seconds: duration));
|
|
||||||
if (duration < 64) {
|
|
||||||
duration *= 2;
|
|
||||||
}
|
|
||||||
// This will cause a retry.
|
|
||||||
output = null;
|
|
||||||
}
|
|
||||||
} while (output == null);
|
|
||||||
status?.stop();
|
status?.stop();
|
||||||
// The exception is rethrown, so don't catch only Exceptions.
|
// The exception is rethrown, so don't catch only Exceptions.
|
||||||
} catch (exception) { // ignore: avoid_catches_without_on_clauses
|
} catch (exception) { // ignore: avoid_catches_without_on_clauses
|
||||||
@ -431,46 +342,16 @@ class _DefaultPub implements Pub {
|
|||||||
rethrow;
|
rethrow;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (printProgress) {
|
if (!packageConfigFile.existsSync()) {
|
||||||
// Show the output of the last run.
|
throwToolExit('$directory: pub did not create .dart_tools/package_config.json file.');
|
||||||
for (final _OutputLine line in output) {
|
|
||||||
switch (line.stream) {
|
|
||||||
case _OutputStream.stdout:
|
|
||||||
_stdio.stdoutWrite('${line.line}\n');
|
|
||||||
break;
|
|
||||||
case _OutputStream.stderr:
|
|
||||||
_stdio.stderrWrite('${line.line}\n');
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
lastVersion.writeAsStringSync(currentVersion.readAsStringSync());
|
||||||
}
|
await _updatePackageConfig(
|
||||||
|
packageConfigFile,
|
||||||
final int code = exitCode;
|
generatedDirectory,
|
||||||
String result = 'success';
|
generateSyntheticPackage,
|
||||||
if (output.any((_OutputLine line) => line.line.contains('version solving failed'))) {
|
|
||||||
result = 'version-solving-failed';
|
|
||||||
} else if (code != 0) {
|
|
||||||
result = 'failure';
|
|
||||||
}
|
|
||||||
PubResultEvent(
|
|
||||||
context: context.toAnalyticsString(),
|
|
||||||
result: result,
|
|
||||||
usage: _usage,
|
|
||||||
).send();
|
|
||||||
final String lastPubMessage = output.isEmpty ? 'no message' : output.last.line;
|
|
||||||
|
|
||||||
if (code != 0) {
|
|
||||||
final StringBuffer buffer = StringBuffer('$failureMessage\n');
|
|
||||||
buffer.writeln('command: "${pubCommand.join(' ')}"');
|
|
||||||
buffer.write(_stringifyPubEnv(pubEnvironment));
|
|
||||||
buffer.writeln('exit code: $code');
|
|
||||||
buffer.writeln('last line of pub output: "${lastPubMessage.trim()}"');
|
|
||||||
throwToolExit(
|
|
||||||
buffer.toString(),
|
|
||||||
exitCode: code,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// For surfacing pub env in crash reporting
|
// For surfacing pub env in crash reporting
|
||||||
String _stringifyPubEnv(Map<String, String> map, {String prefix = 'pub env'}) {
|
String _stringifyPubEnv(Map<String, String> map, {String prefix = 'pub env'}) {
|
||||||
@ -493,13 +374,19 @@ class _DefaultPub implements Pub {
|
|||||||
String? directory,
|
String? directory,
|
||||||
MessageFilter? filter,
|
MessageFilter? filter,
|
||||||
String failureMessage = 'pub failed',
|
String failureMessage = 'pub failed',
|
||||||
|
required bool retry,
|
||||||
|
bool? showTraceForErrors,
|
||||||
String? flutterRootOverride,
|
String? flutterRootOverride,
|
||||||
}) async {
|
}) async {
|
||||||
final bool showTraceForErrors = await _botDetector.isRunningOnBot;
|
showTraceForErrors ??= await _botDetector.isRunningOnBot;
|
||||||
|
|
||||||
String lastPubMessage = 'no message';
|
String lastPubMessage = 'no message';
|
||||||
|
bool versionSolvingFailed = false;
|
||||||
String? filterWrapper(String line) {
|
String? filterWrapper(String line) {
|
||||||
lastPubMessage = line;
|
lastPubMessage = line;
|
||||||
|
if (line.contains('version solving failed')) {
|
||||||
|
versionSolvingFailed = true;
|
||||||
|
}
|
||||||
if (filter == null) {
|
if (filter == null) {
|
||||||
return line;
|
return line;
|
||||||
}
|
}
|
||||||
@ -509,17 +396,44 @@ class _DefaultPub implements Pub {
|
|||||||
if (showTraceForErrors) {
|
if (showTraceForErrors) {
|
||||||
arguments.insert(0, '--trace');
|
arguments.insert(0, '--trace');
|
||||||
}
|
}
|
||||||
final Map<String, String> pubEnvironment = await _createPubEnvironment(context, flutterRootOverride);
|
int attempts = 0;
|
||||||
|
int duration = 1;
|
||||||
|
int code;
|
||||||
final List<String> pubCommand = _pubCommand(arguments);
|
final List<String> pubCommand = _pubCommand(arguments);
|
||||||
final int code = await _processUtils.stream(
|
final Map<String, String> pubEnvironment = await _createPubEnvironment(context, flutterRootOverride);
|
||||||
|
while (true) {
|
||||||
|
attempts += 1;
|
||||||
|
code = await _processUtils.stream(
|
||||||
pubCommand,
|
pubCommand,
|
||||||
workingDirectory: directory,
|
workingDirectory: directory,
|
||||||
mapFunction: filterWrapper, // may set versionSolvingFailed, lastPubMessage
|
mapFunction: filterWrapper, // may set versionSolvingFailed, lastPubMessage
|
||||||
environment: pubEnvironment,
|
environment: pubEnvironment,
|
||||||
);
|
);
|
||||||
|
String? message;
|
||||||
|
if (retry) {
|
||||||
|
if (code == _kPubExitCodeUnavailable) {
|
||||||
|
message = 'server unavailable';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (message == null) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
versionSolvingFailed = false;
|
||||||
|
_logger.printStatus(
|
||||||
|
'$failureMessage ($message) -- attempting retry $attempts in $duration '
|
||||||
|
'second${ duration == 1 ? "" : "s"}...',
|
||||||
|
);
|
||||||
|
await Future<void>.delayed(Duration(seconds: duration));
|
||||||
|
if (duration < 64) {
|
||||||
|
duration *= 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assert(code != null);
|
||||||
|
|
||||||
String result = 'success';
|
String result = 'success';
|
||||||
if (code != 0) {
|
if (versionSolvingFailed) {
|
||||||
|
result = 'version-solving-failed';
|
||||||
|
} else if (code != 0) {
|
||||||
result = 'failure';
|
result = 'failure';
|
||||||
}
|
}
|
||||||
PubResultEvent(
|
PubResultEvent(
|
||||||
@ -551,10 +465,7 @@ class _DefaultPub implements Pub {
|
|||||||
}) async {
|
}) async {
|
||||||
// Fully resolved pub or pub.bat is calculated based on current platform.
|
// Fully resolved pub or pub.bat is calculated based on current platform.
|
||||||
final io.Process process = await _processUtils.start(
|
final io.Process process = await _processUtils.start(
|
||||||
_pubCommand(<String>[
|
_pubCommand(arguments),
|
||||||
if (_logger.supportsColor) '--color',
|
|
||||||
...arguments,
|
|
||||||
]),
|
|
||||||
workingDirectory: directory,
|
workingDirectory: directory,
|
||||||
environment: await _createPubEnvironment(PubContext.interactive),
|
environment: await _createPubEnvironment(PubContext.interactive),
|
||||||
);
|
);
|
||||||
@ -810,14 +721,3 @@ class _DefaultPub implements Pub {
|
|||||||
return buffer.toString();
|
return buffer.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class _OutputLine {
|
|
||||||
_OutputLine(this.line, this.stream);
|
|
||||||
final String line;
|
|
||||||
final _OutputStream stream;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum _OutputStream {
|
|
||||||
stdout,
|
|
||||||
stderr,
|
|
||||||
}
|
|
||||||
|
@ -19,7 +19,6 @@ import 'cache.dart';
|
|||||||
import 'dart/package_map.dart';
|
import 'dart/package_map.dart';
|
||||||
import 'dart/pub.dart';
|
import 'dart/pub.dart';
|
||||||
import 'globals.dart' as globals;
|
import 'globals.dart' as globals;
|
||||||
import 'project.dart';
|
|
||||||
|
|
||||||
/// An implementation of the [Cache] which provides all of Flutter's default artifacts.
|
/// An implementation of the [Cache] which provides all of Flutter's default artifacts.
|
||||||
class FlutterCache extends Cache {
|
class FlutterCache extends Cache {
|
||||||
@ -30,7 +29,6 @@ class FlutterCache extends Cache {
|
|||||||
required super.fileSystem,
|
required super.fileSystem,
|
||||||
required Platform platform,
|
required Platform platform,
|
||||||
required super.osUtils,
|
required super.osUtils,
|
||||||
required FlutterProjectFactory projectFactory,
|
|
||||||
}) : super(logger: logger, platform: platform, artifacts: <ArtifactSet>[]) {
|
}) : super(logger: logger, platform: platform, artifacts: <ArtifactSet>[]) {
|
||||||
registerArtifact(MaterialFonts(this));
|
registerArtifact(MaterialFonts(this));
|
||||||
registerArtifact(GradleWrapper(this));
|
registerArtifact(GradleWrapper(this));
|
||||||
@ -56,7 +54,6 @@ class FlutterCache extends Cache {
|
|||||||
// before the version is determined.
|
// before the version is determined.
|
||||||
flutterRoot: () => Cache.flutterRoot!,
|
flutterRoot: () => Cache.flutterRoot!,
|
||||||
pub: () => pub,
|
pub: () => pub,
|
||||||
projectFactory: projectFactory,
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -73,17 +70,14 @@ class PubDependencies extends ArtifactSet {
|
|||||||
required String Function() flutterRoot,
|
required String Function() flutterRoot,
|
||||||
required Logger logger,
|
required Logger logger,
|
||||||
required Pub Function() pub,
|
required Pub Function() pub,
|
||||||
required FlutterProjectFactory projectFactory,
|
|
||||||
}) : _logger = logger,
|
}) : _logger = logger,
|
||||||
_flutterRoot = flutterRoot,
|
_flutterRoot = flutterRoot,
|
||||||
_pub = pub,
|
_pub = pub,
|
||||||
_projectFactory = projectFactory,
|
|
||||||
super(DevelopmentArtifact.universal);
|
super(DevelopmentArtifact.universal);
|
||||||
|
|
||||||
final String Function() _flutterRoot;
|
final String Function() _flutterRoot;
|
||||||
final Logger _logger;
|
final Logger _logger;
|
||||||
final Pub Function() _pub;
|
final Pub Function() _pub;
|
||||||
final FlutterProjectFactory _projectFactory;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<bool> isUpToDate(
|
Future<bool> isUpToDate(
|
||||||
@ -124,9 +118,7 @@ class PubDependencies extends ArtifactSet {
|
|||||||
) async {
|
) async {
|
||||||
await _pub().get(
|
await _pub().get(
|
||||||
context: PubContext.pubGet,
|
context: PubContext.pubGet,
|
||||||
project: _projectFactory.fromDirectory(
|
directory: fileSystem.path.join(_flutterRoot(), 'packages', 'flutter_tools'),
|
||||||
fileSystem.directory(fileSystem.path.join(_flutterRoot(), 'packages', 'flutter_tools'))
|
|
||||||
),
|
|
||||||
offline: offline
|
offline: offline
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1355,7 +1355,7 @@ abstract class FlutterCommand extends Command<void> {
|
|||||||
|
|
||||||
await pub.get(
|
await pub.get(
|
||||||
context: PubContext.getVerifyContext(name),
|
context: PubContext.getVerifyContext(name),
|
||||||
project: project,
|
generateSyntheticPackage: project.manifest.generateSyntheticPackage,
|
||||||
checkUpToDate: cachePubGet,
|
checkUpToDate: cachePubGet,
|
||||||
);
|
);
|
||||||
await project.regeneratePlatformSpecificTooling();
|
await project.regeneratePlatformSpecificTooling();
|
||||||
|
@ -19,14 +19,12 @@ import 'package:flutter_tools/src/commands/analyze.dart';
|
|||||||
import 'package:flutter_tools/src/dart/analysis.dart';
|
import 'package:flutter_tools/src/dart/analysis.dart';
|
||||||
import 'package:flutter_tools/src/dart/pub.dart';
|
import 'package:flutter_tools/src/dart/pub.dart';
|
||||||
import 'package:flutter_tools/src/globals.dart' as globals;
|
import 'package:flutter_tools/src/globals.dart' as globals;
|
||||||
import 'package:flutter_tools/src/project.dart';
|
|
||||||
import 'package:flutter_tools/src/project_validator.dart';
|
import 'package:flutter_tools/src/project_validator.dart';
|
||||||
import 'package:process/process.dart';
|
import 'package:process/process.dart';
|
||||||
|
|
||||||
import '../../src/common.dart';
|
import '../../src/common.dart';
|
||||||
import '../../src/context.dart';
|
import '../../src/context.dart';
|
||||||
import '../../src/fake_process_manager.dart';
|
import '../../src/fake_process_manager.dart';
|
||||||
import '../../src/fakes.dart';
|
|
||||||
import '../../src/test_flutter_command_runner.dart';
|
import '../../src/test_flutter_command_runner.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
@ -41,7 +39,6 @@ void main() {
|
|||||||
ProcessManager processManager;
|
ProcessManager processManager;
|
||||||
AnsiTerminal terminal;
|
AnsiTerminal terminal;
|
||||||
Logger logger;
|
Logger logger;
|
||||||
FakeStdio mockStdio;
|
|
||||||
|
|
||||||
setUp(() {
|
setUp(() {
|
||||||
fileSystem = globals.localFileSystem;
|
fileSystem = globals.localFileSystem;
|
||||||
@ -50,7 +47,6 @@ void main() {
|
|||||||
terminal = AnsiTerminal(platform: platform, stdio: Stdio());
|
terminal = AnsiTerminal(platform: platform, stdio: Stdio());
|
||||||
logger = BufferLogger(outputPreferences: OutputPreferences.test(), terminal: terminal);
|
logger = BufferLogger(outputPreferences: OutputPreferences.test(), terminal: terminal);
|
||||||
tempDir = fileSystem.systemTempDirectory.createTempSync('flutter_analysis_test.');
|
tempDir = fileSystem.systemTempDirectory.createTempSync('flutter_analysis_test.');
|
||||||
mockStdio = FakeStdio();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
tearDown(() {
|
tearDown(() {
|
||||||
@ -88,11 +84,11 @@ void main() {
|
|||||||
platform: const LocalPlatform(),
|
platform: const LocalPlatform(),
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
stdio: mockStdio,
|
|
||||||
);
|
);
|
||||||
await pub.get(
|
await pub.get(
|
||||||
context: PubContext.flutterTests,
|
context: PubContext.flutterTests,
|
||||||
project: FlutterProject.fromDirectoryTest(tempDir),
|
directory: tempDir.path,
|
||||||
|
generateSyntheticPackage: false,
|
||||||
);
|
);
|
||||||
|
|
||||||
server = AnalysisServer(
|
server = AnalysisServer(
|
||||||
@ -126,11 +122,11 @@ void main() {
|
|||||||
platform: const LocalPlatform(),
|
platform: const LocalPlatform(),
|
||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
stdio: mockStdio,
|
|
||||||
);
|
);
|
||||||
await pub.get(
|
await pub.get(
|
||||||
context: PubContext.flutterTests,
|
context: PubContext.flutterTests,
|
||||||
project: FlutterProject.fromDirectoryTest(tempDir),
|
directory: tempDir.path,
|
||||||
|
generateSyntheticPackage: false,
|
||||||
);
|
);
|
||||||
|
|
||||||
server = AnalysisServer(
|
server = AnalysisServer(
|
||||||
|
@ -13,7 +13,6 @@ import 'package:flutter_tools/src/dart/pub.dart';
|
|||||||
import 'package:flutter_tools/src/doctor.dart';
|
import 'package:flutter_tools/src/doctor.dart';
|
||||||
import 'package:flutter_tools/src/doctor_validator.dart';
|
import 'package:flutter_tools/src/doctor_validator.dart';
|
||||||
import 'package:flutter_tools/src/globals.dart' as globals;
|
import 'package:flutter_tools/src/globals.dart' as globals;
|
||||||
import 'package:flutter_tools/src/project.dart';
|
|
||||||
import 'package:test/fake.dart';
|
import 'package:test/fake.dart';
|
||||||
|
|
||||||
import '../../src/context.dart';
|
import '../../src/context.dart';
|
||||||
@ -30,18 +29,17 @@ class FakePub extends Fake implements Pub {
|
|||||||
@override
|
@override
|
||||||
Future<void> get({
|
Future<void> get({
|
||||||
PubContext context,
|
PubContext context,
|
||||||
FlutterProject project,
|
String directory,
|
||||||
bool skipIfAbsent = false,
|
bool skipIfAbsent = false,
|
||||||
bool upgrade = false,
|
bool upgrade = false,
|
||||||
bool offline = false,
|
bool offline = false,
|
||||||
bool generateSyntheticPackage = false,
|
bool generateSyntheticPackage = false,
|
||||||
bool generateSyntheticPackageForExample = false,
|
|
||||||
String flutterRootOverride,
|
String flutterRootOverride,
|
||||||
bool checkUpToDate = false,
|
bool checkUpToDate = false,
|
||||||
bool shouldSkipThirdPartyGenerator = true,
|
bool shouldSkipThirdPartyGenerator = true,
|
||||||
bool printProgress = true,
|
bool printProgress = true,
|
||||||
}) async {
|
}) async {
|
||||||
project.directory.childFile('.packages').createSync();
|
fs.directory(directory).childFile('.packages').createSync();
|
||||||
if (offline == true) {
|
if (offline == true) {
|
||||||
calledGetOffline += 1;
|
calledGetOffline += 1;
|
||||||
} else {
|
} else {
|
||||||
|
@ -308,12 +308,11 @@ class FakePub extends Fake implements Pub {
|
|||||||
@override
|
@override
|
||||||
Future<void> get({
|
Future<void> get({
|
||||||
PubContext context,
|
PubContext context,
|
||||||
FlutterProject project,
|
String directory,
|
||||||
bool skipIfAbsent = false,
|
bool skipIfAbsent = false,
|
||||||
bool upgrade = false,
|
bool upgrade = false,
|
||||||
bool offline = false,
|
bool offline = false,
|
||||||
bool generateSyntheticPackage = false,
|
bool generateSyntheticPackage = false,
|
||||||
bool generateSyntheticPackageForExample = false,
|
|
||||||
String flutterRootOverride,
|
String flutterRootOverride,
|
||||||
bool checkUpToDate = false,
|
bool checkUpToDate = false,
|
||||||
bool shouldSkipThirdPartyGenerator = true,
|
bool shouldSkipThirdPartyGenerator = true,
|
||||||
|
@ -169,18 +169,17 @@ class FakePub extends Fake implements Pub {
|
|||||||
@override
|
@override
|
||||||
Future<void> get({
|
Future<void> get({
|
||||||
required PubContext context,
|
required PubContext context,
|
||||||
required FlutterProject project,
|
String? directory,
|
||||||
bool skipIfAbsent = false,
|
bool skipIfAbsent = false,
|
||||||
bool upgrade = false,
|
bool upgrade = false,
|
||||||
bool offline = false,
|
bool offline = false,
|
||||||
bool generateSyntheticPackage = false,
|
bool generateSyntheticPackage = false,
|
||||||
bool generateSyntheticPackageForExample = false,
|
|
||||||
String? flutterRootOverride,
|
String? flutterRootOverride,
|
||||||
bool checkUpToDate = false,
|
bool checkUpToDate = false,
|
||||||
bool shouldSkipThirdPartyGenerator = true,
|
bool shouldSkipThirdPartyGenerator = true,
|
||||||
bool printProgress = true,
|
bool printProgress = true,
|
||||||
}) async {
|
}) async {
|
||||||
fileSystem.directory(project.directory)
|
fileSystem.directory(directory)
|
||||||
.childDirectory('.dart_tool')
|
.childDirectory('.dart_tool')
|
||||||
.childFile('package_config.json')
|
.childFile('package_config.json')
|
||||||
..createSync(recursive: true)
|
..createSync(recursive: true)
|
||||||
|
@ -8,7 +8,6 @@ import 'package:flutter_tools/src/base/file_system.dart';
|
|||||||
import 'package:flutter_tools/src/cache.dart';
|
import 'package:flutter_tools/src/cache.dart';
|
||||||
import 'package:flutter_tools/src/commands/update_packages.dart';
|
import 'package:flutter_tools/src/commands/update_packages.dart';
|
||||||
import 'package:flutter_tools/src/dart/pub.dart';
|
import 'package:flutter_tools/src/dart/pub.dart';
|
||||||
import 'package:flutter_tools/src/project.dart';
|
|
||||||
import 'package:test/fake.dart';
|
import 'package:test/fake.dart';
|
||||||
import 'package:yaml/yaml.dart';
|
import 'package:yaml/yaml.dart';
|
||||||
|
|
||||||
@ -224,19 +223,20 @@ class FakePub extends Fake implements Pub {
|
|||||||
@override
|
@override
|
||||||
Future<void> get({
|
Future<void> get({
|
||||||
required PubContext context,
|
required PubContext context,
|
||||||
required FlutterProject project,
|
String? directory,
|
||||||
bool skipIfAbsent = false,
|
bool skipIfAbsent = false,
|
||||||
bool upgrade = false,
|
bool upgrade = false,
|
||||||
bool offline = false,
|
bool offline = false,
|
||||||
bool generateSyntheticPackage = false,
|
bool generateSyntheticPackage = false,
|
||||||
bool generateSyntheticPackageForExample = false,
|
|
||||||
String? flutterRootOverride,
|
String? flutterRootOverride,
|
||||||
bool checkUpToDate = false,
|
bool checkUpToDate = false,
|
||||||
bool shouldSkipThirdPartyGenerator = true,
|
bool shouldSkipThirdPartyGenerator = true,
|
||||||
bool printProgress = true,
|
bool printProgress = true,
|
||||||
}) async {
|
}) async {
|
||||||
pubGetDirectories.add(project.directory.path);
|
if (directory != null) {
|
||||||
project.directory.childFile('pubspec.lock')
|
pubGetDirectories.add(directory);
|
||||||
|
}
|
||||||
|
fileSystem.directory(directory).childFile('pubspec.lock')
|
||||||
..createSync(recursive: true)
|
..createSync(recursive: true)
|
||||||
..writeAsStringSync('''
|
..writeAsStringSync('''
|
||||||
# Generated by pub
|
# Generated by pub
|
||||||
@ -266,6 +266,8 @@ sdks:
|
|||||||
String? directory,
|
String? directory,
|
||||||
MessageFilter? filter,
|
MessageFilter? filter,
|
||||||
String failureMessage = 'pub failed',
|
String failureMessage = 'pub failed',
|
||||||
|
required bool retry,
|
||||||
|
bool? showTraceForErrors,
|
||||||
}) async {
|
}) async {
|
||||||
if (directory != null) {
|
if (directory != null) {
|
||||||
pubBatchDirectories.add(directory);
|
pubBatchDirectories.add(directory);
|
||||||
|
@ -23,7 +23,7 @@ import '../../src/android_common.dart';
|
|||||||
import '../../src/common.dart';
|
import '../../src/common.dart';
|
||||||
import '../../src/context.dart';
|
import '../../src/context.dart';
|
||||||
import '../../src/fake_process_manager.dart';
|
import '../../src/fake_process_manager.dart';
|
||||||
import '../../src/fakes.dart' hide FakeFlutterProjectFactory;
|
import '../../src/fakes.dart';
|
||||||
import '../../src/test_flutter_command_runner.dart';
|
import '../../src/test_flutter_command_runner.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
|
@ -66,7 +66,6 @@ void main() {
|
|||||||
LoggingProcessManager loggingProcessManager;
|
LoggingProcessManager loggingProcessManager;
|
||||||
FakeProcessManager fakeProcessManager;
|
FakeProcessManager fakeProcessManager;
|
||||||
BufferLogger logger;
|
BufferLogger logger;
|
||||||
FakeStdio mockStdio;
|
|
||||||
|
|
||||||
setUpAll(() async {
|
setUpAll(() async {
|
||||||
Cache.disableLocking();
|
Cache.disableLocking();
|
||||||
@ -83,7 +82,6 @@ void main() {
|
|||||||
channel: frameworkChannel,
|
channel: frameworkChannel,
|
||||||
);
|
);
|
||||||
fakeProcessManager = FakeProcessManager.empty();
|
fakeProcessManager = FakeProcessManager.empty();
|
||||||
mockStdio = FakeStdio();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
tearDown(() {
|
tearDown(() {
|
||||||
@ -175,7 +173,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -223,7 +220,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -250,7 +246,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -280,7 +275,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -306,7 +300,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
...noColorTerminalOverride,
|
...noColorTerminalOverride,
|
||||||
});
|
});
|
||||||
@ -332,7 +325,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
...noColorTerminalOverride,
|
...noColorTerminalOverride,
|
||||||
});
|
});
|
||||||
@ -366,7 +358,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -399,7 +390,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -427,7 +417,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -466,7 +455,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -496,7 +484,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -535,7 +522,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -566,7 +552,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -597,7 +582,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
Logger: ()=>logger,
|
Logger: ()=>logger,
|
||||||
});
|
});
|
||||||
@ -625,7 +609,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -747,7 +730,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1446,7 +1428,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1475,7 +1456,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1733,7 +1713,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1758,7 +1737,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1909,7 +1887,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1941,7 +1918,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -2895,7 +2871,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -6,25 +6,21 @@
|
|||||||
|
|
||||||
import 'package:args/command_runner.dart';
|
import 'package:args/command_runner.dart';
|
||||||
import 'package:flutter_tools/src/base/file_system.dart';
|
import 'package:flutter_tools/src/base/file_system.dart';
|
||||||
import 'package:flutter_tools/src/base/io.dart';
|
|
||||||
import 'package:flutter_tools/src/cache.dart';
|
import 'package:flutter_tools/src/cache.dart';
|
||||||
import 'package:flutter_tools/src/commands/format.dart';
|
import 'package:flutter_tools/src/commands/format.dart';
|
||||||
import 'package:flutter_tools/src/globals.dart' as globals;
|
import 'package:flutter_tools/src/globals.dart' as globals;
|
||||||
|
|
||||||
import '../../src/common.dart';
|
import '../../src/common.dart';
|
||||||
import '../../src/context.dart';
|
import '../../src/context.dart';
|
||||||
import '../../src/fakes.dart';
|
|
||||||
import '../../src/test_flutter_command_runner.dart';
|
import '../../src/test_flutter_command_runner.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
group('format', () {
|
group('format', () {
|
||||||
Directory tempDir;
|
Directory tempDir;
|
||||||
FakeStdio mockStdio;
|
|
||||||
|
|
||||||
setUp(() {
|
setUp(() {
|
||||||
Cache.disableLocking();
|
Cache.disableLocking();
|
||||||
tempDir = globals.fs.systemTempDirectory.createTempSync('flutter_tools_format_test.');
|
tempDir = globals.fs.systemTempDirectory.createTempSync('flutter_tools_format_test.');
|
||||||
mockStdio = FakeStdio();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
tearDown(() {
|
tearDown(() {
|
||||||
@ -44,8 +40,6 @@ void main() {
|
|||||||
|
|
||||||
final String formatted = srcFile.readAsStringSync();
|
final String formatted = srcFile.readAsStringSync();
|
||||||
expect(formatted, original);
|
expect(formatted, original);
|
||||||
}, overrides: <Type, Generator>{
|
|
||||||
Stdio: () => mockStdio,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
testUsingContext('dry-run', () async {
|
testUsingContext('dry-run', () async {
|
||||||
|
@ -32,12 +32,6 @@ import '../../src/fakes.dart';
|
|||||||
import '../../src/test_flutter_command_runner.dart';
|
import '../../src/test_flutter_command_runner.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
FakeStdio mockStdio;
|
|
||||||
|
|
||||||
setUp(() {
|
|
||||||
mockStdio = FakeStdio()..stdout.terminalColumns = 80;
|
|
||||||
});
|
|
||||||
|
|
||||||
Cache.disableLocking();
|
Cache.disableLocking();
|
||||||
group('packages get/upgrade', () {
|
group('packages get/upgrade', () {
|
||||||
Directory tempDir;
|
Directory tempDir;
|
||||||
@ -203,25 +197,16 @@ void main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
testUsingContext('get fetches packages and has output from pub', () async {
|
testUsingContext('get fetches packages', () async {
|
||||||
final String projectPath = await createProject(tempDir,
|
final String projectPath = await createProject(tempDir,
|
||||||
arguments: <String>['--no-pub', '--template=module']);
|
arguments: <String>['--no-pub', '--template=module']);
|
||||||
removeGeneratedFiles(projectPath);
|
removeGeneratedFiles(projectPath);
|
||||||
|
|
||||||
await runCommandIn(projectPath, 'get');
|
await runCommandIn(projectPath, 'get');
|
||||||
|
|
||||||
expect(mockStdio.stdout.writes.map(utf8.decode),
|
|
||||||
allOf(
|
|
||||||
contains(matches(RegExp(r'Resolving dependencies in .+flutter_project\.\.\.'))),
|
|
||||||
contains('+ flutter 0.0.0 from sdk flutter\n'),
|
|
||||||
contains(matches(RegExp(r'Changed \d+ dependencies in .+flutter_project!'))),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
expectDependenciesResolved(projectPath);
|
expectDependenciesResolved(projectPath);
|
||||||
expectZeroPluginsInjected(projectPath);
|
expectZeroPluginsInjected(projectPath);
|
||||||
}, overrides: <Type, Generator>{
|
}, overrides: <Type, Generator>{
|
||||||
Stdio: () => mockStdio,
|
|
||||||
Pub: () => Pub(
|
Pub: () => Pub(
|
||||||
fileSystem: globals.fs,
|
fileSystem: globals.fs,
|
||||||
logger: globals.logger,
|
logger: globals.logger,
|
||||||
@ -229,7 +214,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -243,7 +227,6 @@ void main() {
|
|||||||
expectDependenciesResolved(projectPath);
|
expectDependenciesResolved(projectPath);
|
||||||
expectZeroPluginsInjected(projectPath);
|
expectZeroPluginsInjected(projectPath);
|
||||||
}, overrides: <Type, Generator>{
|
}, overrides: <Type, Generator>{
|
||||||
Stdio: () => mockStdio,
|
|
||||||
Pub: () => Pub(
|
Pub: () => Pub(
|
||||||
fileSystem: globals.fs,
|
fileSystem: globals.fs,
|
||||||
logger: globals.logger,
|
logger: globals.logger,
|
||||||
@ -251,7 +234,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -265,7 +247,6 @@ void main() {
|
|||||||
|
|
||||||
expect((await getCommand.usageValues).commandPackagesNumberPlugins, 0);
|
expect((await getCommand.usageValues).commandPackagesNumberPlugins, 0);
|
||||||
}, overrides: <Type, Generator>{
|
}, overrides: <Type, Generator>{
|
||||||
Stdio: () => mockStdio,
|
|
||||||
Pub: () => Pub(
|
Pub: () => Pub(
|
||||||
fileSystem: globals.fs,
|
fileSystem: globals.fs,
|
||||||
logger: globals.logger,
|
logger: globals.logger,
|
||||||
@ -273,7 +254,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -289,7 +269,6 @@ void main() {
|
|||||||
|
|
||||||
expect((await getCommand.usageValues).commandPackagesNumberPlugins, 1);
|
expect((await getCommand.usageValues).commandPackagesNumberPlugins, 1);
|
||||||
}, overrides: <Type, Generator>{
|
}, overrides: <Type, Generator>{
|
||||||
Stdio: () => mockStdio,
|
|
||||||
Pub: () => Pub(
|
Pub: () => Pub(
|
||||||
fileSystem: globals.fs,
|
fileSystem: globals.fs,
|
||||||
logger: globals.logger,
|
logger: globals.logger,
|
||||||
@ -297,7 +276,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -311,7 +289,6 @@ void main() {
|
|||||||
|
|
||||||
expect((await getCommand.usageValues).commandPackagesProjectModule, false);
|
expect((await getCommand.usageValues).commandPackagesProjectModule, false);
|
||||||
}, overrides: <Type, Generator>{
|
}, overrides: <Type, Generator>{
|
||||||
Stdio: () => mockStdio,
|
|
||||||
Pub: () => Pub(
|
Pub: () => Pub(
|
||||||
fileSystem: globals.fs,
|
fileSystem: globals.fs,
|
||||||
logger: globals.logger,
|
logger: globals.logger,
|
||||||
@ -319,7 +296,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -333,7 +309,6 @@ void main() {
|
|||||||
|
|
||||||
expect((await getCommand.usageValues).commandPackagesProjectModule, true);
|
expect((await getCommand.usageValues).commandPackagesProjectModule, true);
|
||||||
}, overrides: <Type, Generator>{
|
}, overrides: <Type, Generator>{
|
||||||
Stdio: () => mockStdio,
|
|
||||||
Pub: () => Pub(
|
Pub: () => Pub(
|
||||||
fileSystem: globals.fs,
|
fileSystem: globals.fs,
|
||||||
logger: globals.logger,
|
logger: globals.logger,
|
||||||
@ -341,7 +316,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -364,7 +338,6 @@ void main() {
|
|||||||
|
|
||||||
expect((await getCommand.usageValues).commandPackagesAndroidEmbeddingVersion, 'v1');
|
expect((await getCommand.usageValues).commandPackagesAndroidEmbeddingVersion, 'v1');
|
||||||
}, overrides: <Type, Generator>{
|
}, overrides: <Type, Generator>{
|
||||||
Stdio: () => mockStdio,
|
|
||||||
Pub: () => Pub(
|
Pub: () => Pub(
|
||||||
fileSystem: globals.fs,
|
fileSystem: globals.fs,
|
||||||
logger: globals.logger,
|
logger: globals.logger,
|
||||||
@ -372,7 +345,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -386,7 +358,6 @@ void main() {
|
|||||||
|
|
||||||
expect((await getCommand.usageValues).commandPackagesAndroidEmbeddingVersion, 'v2');
|
expect((await getCommand.usageValues).commandPackagesAndroidEmbeddingVersion, 'v2');
|
||||||
}, overrides: <Type, Generator>{
|
}, overrides: <Type, Generator>{
|
||||||
Stdio: () => mockStdio,
|
|
||||||
Pub: () => Pub(
|
Pub: () => Pub(
|
||||||
fileSystem: globals.fs,
|
fileSystem: globals.fs,
|
||||||
logger: globals.logger,
|
logger: globals.logger,
|
||||||
@ -394,7 +365,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -408,7 +378,7 @@ void main() {
|
|||||||
expectDependenciesResolved(projectPath);
|
expectDependenciesResolved(projectPath);
|
||||||
expectZeroPluginsInjected(projectPath);
|
expectZeroPluginsInjected(projectPath);
|
||||||
}, overrides: <Type, Generator>{
|
}, overrides: <Type, Generator>{
|
||||||
Stdio: () => mockStdio,
|
Stdio: () => FakeStdio()..stdout.terminalColumns = 80,
|
||||||
Pub: () => Pub(
|
Pub: () => Pub(
|
||||||
fileSystem: globals.fs,
|
fileSystem: globals.fs,
|
||||||
logger: globals.logger,
|
logger: globals.logger,
|
||||||
@ -416,7 +386,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -430,7 +399,6 @@ void main() {
|
|||||||
expectDependenciesResolved(projectPath);
|
expectDependenciesResolved(projectPath);
|
||||||
expectModulePluginInjected(projectPath);
|
expectModulePluginInjected(projectPath);
|
||||||
}, overrides: <Type, Generator>{
|
}, overrides: <Type, Generator>{
|
||||||
Stdio: () => mockStdio,
|
|
||||||
Pub: () => Pub(
|
Pub: () => Pub(
|
||||||
fileSystem: globals.fs,
|
fileSystem: globals.fs,
|
||||||
logger: globals.logger,
|
logger: globals.logger,
|
||||||
@ -438,7 +406,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -460,7 +427,6 @@ void main() {
|
|||||||
expectDependenciesResolved(exampleProjectPath);
|
expectDependenciesResolved(exampleProjectPath);
|
||||||
expectPluginInjected(exampleProjectPath);
|
expectPluginInjected(exampleProjectPath);
|
||||||
}, overrides: <Type, Generator>{
|
}, overrides: <Type, Generator>{
|
||||||
Stdio: () => mockStdio,
|
|
||||||
Pub: () => Pub(
|
Pub: () => Pub(
|
||||||
fileSystem: globals.fs,
|
fileSystem: globals.fs,
|
||||||
logger: globals.logger,
|
logger: globals.logger,
|
||||||
@ -468,17 +434,17 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
group('packages test/pub', () {
|
group('packages test/pub', () {
|
||||||
FakeProcessManager processManager;
|
FakeProcessManager processManager;
|
||||||
|
FakeStdio mockStdio;
|
||||||
|
|
||||||
setUp(() {
|
setUp(() {
|
||||||
processManager = FakeProcessManager.empty();
|
processManager = FakeProcessManager.empty();
|
||||||
|
mockStdio = FakeStdio()..stdout.terminalColumns = 80;
|
||||||
});
|
});
|
||||||
|
|
||||||
testUsingContext('test without bot', () async {
|
testUsingContext('test without bot', () async {
|
||||||
@ -504,7 +470,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -530,7 +495,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -561,7 +525,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -592,7 +555,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -621,7 +583,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: mockStdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -16,7 +16,6 @@ import 'package:flutter_tools/src/cache.dart';
|
|||||||
import 'package:flutter_tools/src/dart/pub.dart';
|
import 'package:flutter_tools/src/dart/pub.dart';
|
||||||
import 'package:flutter_tools/src/flutter_cache.dart';
|
import 'package:flutter_tools/src/flutter_cache.dart';
|
||||||
import 'package:flutter_tools/src/globals.dart' as globals;
|
import 'package:flutter_tools/src/globals.dart' as globals;
|
||||||
import 'package:flutter_tools/src/project.dart';
|
|
||||||
import 'package:test/fake.dart';
|
import 'package:test/fake.dart';
|
||||||
|
|
||||||
import '../src/common.dart';
|
import '../src/common.dart';
|
||||||
@ -909,7 +908,6 @@ void main() {
|
|||||||
flutterRoot: () => '',
|
flutterRoot: () => '',
|
||||||
logger: logger,
|
logger: logger,
|
||||||
pub: () => FakePub(),
|
pub: () => FakePub(),
|
||||||
projectFactory: FakeFlutterProjectFactory(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(await pubDependencies.isUpToDate(fileSystem), false); // no package config
|
expect(await pubDependencies.isUpToDate(fileSystem), false); // no package config
|
||||||
@ -952,7 +950,6 @@ void main() {
|
|||||||
flutterRoot: () => '',
|
flutterRoot: () => '',
|
||||||
logger: logger,
|
logger: logger,
|
||||||
pub: () => pub,
|
pub: () => pub,
|
||||||
projectFactory: FakeFlutterProjectFactory()
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await pubDependencies.update(FakeArtifactUpdater(), logger, fileSystem, FakeOperatingSystemUtils());
|
await pubDependencies.update(FakeArtifactUpdater(), logger, fileSystem, FakeOperatingSystemUtils());
|
||||||
@ -1158,7 +1155,7 @@ class FakePub extends Fake implements Pub {
|
|||||||
@override
|
@override
|
||||||
Future<void> get({
|
Future<void> get({
|
||||||
PubContext? context,
|
PubContext? context,
|
||||||
required FlutterProject project,
|
String? directory,
|
||||||
bool skipIfAbsent = false,
|
bool skipIfAbsent = false,
|
||||||
bool upgrade = false,
|
bool upgrade = false,
|
||||||
bool offline = false,
|
bool offline = false,
|
||||||
|
@ -12,14 +12,11 @@ import 'package:flutter_tools/src/base/io.dart' show ProcessException;
|
|||||||
import 'package:flutter_tools/src/base/logger.dart';
|
import 'package:flutter_tools/src/base/logger.dart';
|
||||||
import 'package:flutter_tools/src/base/platform.dart';
|
import 'package:flutter_tools/src/base/platform.dart';
|
||||||
import 'package:flutter_tools/src/cache.dart';
|
import 'package:flutter_tools/src/cache.dart';
|
||||||
import 'package:flutter_tools/src/convert.dart';
|
|
||||||
import 'package:flutter_tools/src/dart/pub.dart';
|
import 'package:flutter_tools/src/dart/pub.dart';
|
||||||
import 'package:flutter_tools/src/project.dart';
|
|
||||||
import 'package:flutter_tools/src/reporting/reporting.dart';
|
import 'package:flutter_tools/src/reporting/reporting.dart';
|
||||||
|
|
||||||
import '../../src/common.dart';
|
import '../../src/common.dart';
|
||||||
import '../../src/fake_process_manager.dart';
|
import '../../src/fake_process_manager.dart';
|
||||||
import '../../src/fakes.dart';
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
setUpAll(() {
|
setUpAll(() {
|
||||||
@ -41,11 +38,9 @@ void main() {
|
|||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await expectLater(() => pub.get(
|
await expectLater(() => pub.get(
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.pubGet,
|
context: PubContext.pubGet,
|
||||||
checkUpToDate: true,
|
checkUpToDate: true,
|
||||||
), throwsToolExit(message: 'Your Flutter SDK download may be corrupt or missing permissions to run'));
|
), throwsToolExit(message: 'Your Flutter SDK download may be corrupt or missing permissions to run'));
|
||||||
@ -57,10 +52,9 @@ void main() {
|
|||||||
const FakeCommand(command: <String>[
|
const FakeCommand(command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
final BufferLogger logger = BufferLogger.test();
|
final BufferLogger logger = BufferLogger.test();
|
||||||
@ -88,11 +82,9 @@ void main() {
|
|||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await pub.get(
|
await pub.get(
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.pubGet,
|
context: PubContext.pubGet,
|
||||||
checkUpToDate: true,
|
checkUpToDate: true,
|
||||||
shouldSkipThirdPartyGenerator: false,
|
shouldSkipThirdPartyGenerator: false,
|
||||||
@ -107,10 +99,9 @@ void main() {
|
|||||||
const FakeCommand(command: <String>[
|
const FakeCommand(command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
final BufferLogger logger = BufferLogger.test();
|
final BufferLogger logger = BufferLogger.test();
|
||||||
@ -139,11 +130,9 @@ void main() {
|
|||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await pub.get(
|
await pub.get(
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.pubGet,
|
context: PubContext.pubGet,
|
||||||
checkUpToDate: true,
|
checkUpToDate: true,
|
||||||
);
|
);
|
||||||
@ -157,10 +146,9 @@ void main() {
|
|||||||
const FakeCommand(command: <String>[
|
const FakeCommand(command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
final BufferLogger logger = BufferLogger.test();
|
final BufferLogger logger = BufferLogger.test();
|
||||||
@ -189,11 +177,9 @@ void main() {
|
|||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await pub.get(
|
await pub.get(
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.pubGet,
|
context: PubContext.pubGet,
|
||||||
checkUpToDate: true,
|
checkUpToDate: true,
|
||||||
);
|
);
|
||||||
@ -221,11 +207,9 @@ void main() {
|
|||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await pub.get(
|
await pub.get(
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.pubGet,
|
context: PubContext.pubGet,
|
||||||
checkUpToDate: true,
|
checkUpToDate: true,
|
||||||
);
|
);
|
||||||
@ -256,11 +240,9 @@ void main() {
|
|||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await pub.get(
|
await pub.get(
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.pubGet,
|
context: PubContext.pubGet,
|
||||||
checkUpToDate: true,
|
checkUpToDate: true,
|
||||||
);
|
);
|
||||||
@ -274,10 +256,9 @@ void main() {
|
|||||||
const FakeCommand(command: <String>[
|
const FakeCommand(command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
final BufferLogger logger = BufferLogger.test();
|
final BufferLogger logger = BufferLogger.test();
|
||||||
@ -296,11 +277,9 @@ void main() {
|
|||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await pub.get(
|
await pub.get(
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.pubGet,
|
context: PubContext.pubGet,
|
||||||
checkUpToDate: true,
|
checkUpToDate: true,
|
||||||
);
|
);
|
||||||
@ -315,10 +294,9 @@ void main() {
|
|||||||
const FakeCommand(command: <String>[
|
const FakeCommand(command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
final BufferLogger logger = BufferLogger.test();
|
final BufferLogger logger = BufferLogger.test();
|
||||||
@ -336,11 +314,9 @@ void main() {
|
|||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await pub.get(
|
await pub.get(
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.pubGet,
|
context: PubContext.pubGet,
|
||||||
checkUpToDate: true,
|
checkUpToDate: true,
|
||||||
);
|
);
|
||||||
@ -355,10 +331,9 @@ void main() {
|
|||||||
FakeCommand(command: const <String>[
|
FakeCommand(command: const <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
], onRun: () {
|
], onRun: () {
|
||||||
fileSystem.file('.dart_tool/package_config.json').createSync(recursive: true);
|
fileSystem.file('.dart_tool/package_config.json').createSync(recursive: true);
|
||||||
}),
|
}),
|
||||||
@ -376,11 +351,9 @@ void main() {
|
|||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await pub.get(
|
await pub.get(
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.pubGet,
|
context: PubContext.pubGet,
|
||||||
checkUpToDate: true,
|
checkUpToDate: true,
|
||||||
);
|
);
|
||||||
@ -395,10 +368,9 @@ void main() {
|
|||||||
const FakeCommand(command: <String>[
|
const FakeCommand(command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
final BufferLogger logger = BufferLogger.test();
|
final BufferLogger logger = BufferLogger.test();
|
||||||
@ -415,11 +387,9 @@ void main() {
|
|||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await pub.get(
|
await pub.get(
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.pubGet,
|
context: PubContext.pubGet,
|
||||||
checkUpToDate: true,
|
checkUpToDate: true,
|
||||||
);
|
);
|
||||||
@ -433,10 +403,9 @@ void main() {
|
|||||||
const FakeCommand(command: <String>[
|
const FakeCommand(command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
final BufferLogger logger = BufferLogger.test();
|
final BufferLogger logger = BufferLogger.test();
|
||||||
@ -456,11 +425,9 @@ void main() {
|
|||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await pub.get(
|
await pub.get(
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.pubGet,
|
context: PubContext.pubGet,
|
||||||
checkUpToDate: true,
|
checkUpToDate: true,
|
||||||
);
|
);
|
||||||
@ -474,10 +441,9 @@ void main() {
|
|||||||
const FakeCommand(command: <String>[
|
const FakeCommand(command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
final BufferLogger logger = BufferLogger.test();
|
final BufferLogger logger = BufferLogger.test();
|
||||||
@ -499,11 +465,9 @@ void main() {
|
|||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await pub.get(
|
await pub.get(
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.pubGet,
|
context: PubContext.pubGet,
|
||||||
checkUpToDate: true,
|
checkUpToDate: true,
|
||||||
);
|
);
|
||||||
@ -519,10 +483,9 @@ void main() {
|
|||||||
command: <String>[
|
command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
],
|
],
|
||||||
exitCode: 69,
|
exitCode: 69,
|
||||||
environment: <String, String>{'FLUTTER_ROOT': '', 'PUB_ENVIRONMENT': 'flutter_cli:flutter_tests'},
|
environment: <String, String>{'FLUTTER_ROOT': '', 'PUB_ENVIRONMENT': 'flutter_cli:flutter_tests'},
|
||||||
@ -548,15 +511,11 @@ void main() {
|
|||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
FakeAsync().run((FakeAsync time) {
|
FakeAsync().run((FakeAsync time) {
|
||||||
expect(logger.statusText, '');
|
expect(logger.statusText, '');
|
||||||
pub.get(
|
pub.get(context: PubContext.flutterTests).then((void value) {
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.flutterTests,
|
|
||||||
).then((void value) {
|
|
||||||
error = 'test completed unexpectedly';
|
error = 'test completed unexpectedly';
|
||||||
}, onError: (dynamic thrownError) {
|
}, onError: (dynamic thrownError) {
|
||||||
error = 'test failed unexpectedly: $thrownError';
|
error = 'test failed unexpectedly: $thrownError';
|
||||||
@ -617,11 +576,10 @@ void main() {
|
|||||||
command: <String>[
|
command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
|
'--no-precompile',
|
||||||
'--offline',
|
'--offline',
|
||||||
'--example',
|
|
||||||
],
|
],
|
||||||
exitCode: 69,
|
exitCode: 69,
|
||||||
environment: <String, String>{'FLUTTER_ROOT': '', 'PUB_ENVIRONMENT': 'flutter_cli:flutter_tests'},
|
environment: <String, String>{'FLUTTER_ROOT': '', 'PUB_ENVIRONMENT': 'flutter_cli:flutter_tests'},
|
||||||
@ -638,16 +596,11 @@ void main() {
|
|||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
FakeAsync().run((FakeAsync time) {
|
FakeAsync().run((FakeAsync time) {
|
||||||
expect(logger.statusText, '');
|
expect(logger.statusText, '');
|
||||||
pub.get(
|
pub.get(context: PubContext.flutterTests, offline: true).then((void value) {
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.flutterTests,
|
|
||||||
offline: true
|
|
||||||
).then((void value) {
|
|
||||||
error = 'test completed unexpectedly';
|
error = 'test completed unexpectedly';
|
||||||
}, onError: (dynamic thrownError) {
|
}, onError: (dynamic thrownError) {
|
||||||
error = 'test failed unexpectedly: $thrownError';
|
error = 'test failed unexpectedly: $thrownError';
|
||||||
@ -671,10 +624,9 @@ void main() {
|
|||||||
command: <String>[
|
command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
],
|
],
|
||||||
exitCode: 66,
|
exitCode: 66,
|
||||||
stderr: 'err1\nerr2\nerr3\n',
|
stderr: 'err1\nerr2\nerr3\n',
|
||||||
@ -682,19 +634,18 @@ void main() {
|
|||||||
environment: <String, String>{'FLUTTER_ROOT': '', 'PUB_ENVIRONMENT': 'flutter_cli:flutter_tests'},
|
environment: <String, String>{'FLUTTER_ROOT': '', 'PUB_ENVIRONMENT': 'flutter_cli:flutter_tests'},
|
||||||
),
|
),
|
||||||
]);
|
]);
|
||||||
final FakeStdio mockStdio = FakeStdio();
|
|
||||||
final Pub pub = Pub(
|
final Pub pub = Pub(
|
||||||
platform: FakePlatform(),
|
platform: FakePlatform(),
|
||||||
fileSystem: fileSystem,
|
fileSystem: fileSystem,
|
||||||
logger: logger,
|
logger: logger,
|
||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: mockStdio,
|
|
||||||
processManager: processManager,
|
processManager: processManager,
|
||||||
);
|
);
|
||||||
const String toolExitMessage = '''
|
const String toolExitMessage = '''
|
||||||
pub get failed
|
pub get failed
|
||||||
command: "bin/cache/dart-sdk/bin/dart __deprecated_pub --directory . get --example"
|
command: "bin/cache/dart-sdk/bin/dart __deprecated_pub --verbosity=warning get --no-precompile"
|
||||||
pub env: {
|
pub env: {
|
||||||
"FLUTTER_ROOT": "",
|
"FLUTTER_ROOT": "",
|
||||||
"PUB_ENVIRONMENT": "flutter_cli:flutter_tests",
|
"PUB_ENVIRONMENT": "flutter_cli:flutter_tests",
|
||||||
@ -703,28 +654,19 @@ exit code: 66
|
|||||||
last line of pub output: "err3"
|
last line of pub output: "err3"
|
||||||
''';
|
''';
|
||||||
await expectLater(
|
await expectLater(
|
||||||
() => pub.get(
|
() => pub.get(context: PubContext.flutterTests),
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.flutterTests,
|
|
||||||
),
|
|
||||||
throwsA(isA<ToolExit>().having((ToolExit error) => error.message, 'message', toolExitMessage)),
|
throwsA(isA<ToolExit>().having((ToolExit error) => error.message, 'message', toolExitMessage)),
|
||||||
);
|
);
|
||||||
expect(logger.statusText, 'Running "flutter pub get" in /...\n');
|
expect(logger.statusText,
|
||||||
expect(
|
'Running "flutter pub get" in /...\n'
|
||||||
mockStdio.stdout.writes.map(utf8.decode),
|
'out1\n'
|
||||||
<String>[
|
'out2\n'
|
||||||
'out1\n',
|
'out3\n'
|
||||||
'out2\n',
|
|
||||||
'out3\n',
|
|
||||||
]
|
|
||||||
);
|
);
|
||||||
expect(
|
expect(logger.errorText,
|
||||||
mockStdio.stderr.writes.map(utf8.decode),
|
'err1\n'
|
||||||
<String>[
|
'err2\n'
|
||||||
'err1\n',
|
'err3\n'
|
||||||
'err2\n',
|
|
||||||
'err3\n',
|
|
||||||
]
|
|
||||||
);
|
);
|
||||||
expect(processManager, hasNoRemainingExpectations);
|
expect(processManager, hasNoRemainingExpectations);
|
||||||
});
|
});
|
||||||
@ -738,20 +680,18 @@ last line of pub output: "err3"
|
|||||||
command: const <String>[
|
command: const <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
],
|
],
|
||||||
onRun: () {
|
onRun: () {
|
||||||
throw const ProcessException(
|
throw const ProcessException(
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
<String>[
|
<String>[
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
],
|
],
|
||||||
'message',
|
'message',
|
||||||
1,
|
1,
|
||||||
@ -770,14 +710,10 @@ last line of pub output: "err3"
|
|||||||
logger: logger,
|
logger: logger,
|
||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
processManager: processManager,
|
processManager: processManager,
|
||||||
);
|
);
|
||||||
await expectLater(
|
await expectLater(
|
||||||
() => pub.get(
|
() => pub.get(context: PubContext.flutterTests),
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.flutterTests,
|
|
||||||
),
|
|
||||||
throwsA(
|
throwsA(
|
||||||
isA<ProcessException>().having(
|
isA<ProcessException>().having(
|
||||||
(ProcessException error) => error.message,
|
(ProcessException error) => error.message,
|
||||||
@ -805,10 +741,9 @@ last line of pub output: "err3"
|
|||||||
command: <String>[
|
command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
],
|
],
|
||||||
exitCode: 69,
|
exitCode: 69,
|
||||||
environment: <String, String>{
|
environment: <String, String>{
|
||||||
@ -825,14 +760,10 @@ last line of pub output: "err3"
|
|||||||
logger: BufferLogger.test(),
|
logger: BufferLogger.test(),
|
||||||
processManager: processManager,
|
processManager: processManager,
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
FakeAsync().run((FakeAsync time) {
|
FakeAsync().run((FakeAsync time) {
|
||||||
pub.get(
|
pub.get(context: PubContext.flutterTests).then((void value) {
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.flutterTests
|
|
||||||
).then((void value) {
|
|
||||||
error = 'test completed unexpectedly';
|
error = 'test completed unexpectedly';
|
||||||
}, onError: (dynamic thrownError) {
|
}, onError: (dynamic thrownError) {
|
||||||
error = 'test failed unexpectedly: $thrownError';
|
error = 'test failed unexpectedly: $thrownError';
|
||||||
@ -871,10 +802,9 @@ last line of pub output: "err3"
|
|||||||
command: <String>[
|
command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
],
|
],
|
||||||
exitCode: 69,
|
exitCode: 69,
|
||||||
environment: <String, String>{
|
environment: <String, String>{
|
||||||
@ -895,14 +825,10 @@ last line of pub output: "err3"
|
|||||||
logger: BufferLogger.test(),
|
logger: BufferLogger.test(),
|
||||||
processManager: processManager,
|
processManager: processManager,
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
FakeAsync().run((FakeAsync time) {
|
FakeAsync().run((FakeAsync time) {
|
||||||
pub.get(
|
pub.get(context: PubContext.flutterTests).then((void value) {
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.flutterTests,
|
|
||||||
).then((void value) {
|
|
||||||
error = 'test completed unexpectedly';
|
error = 'test completed unexpectedly';
|
||||||
}, onError: (dynamic thrownError) {
|
}, onError: (dynamic thrownError) {
|
||||||
error = thrownError.toString();
|
error = thrownError.toString();
|
||||||
@ -927,10 +853,9 @@ last line of pub output: "err3"
|
|||||||
command: <String>[
|
command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
],
|
],
|
||||||
exitCode: 69,
|
exitCode: 69,
|
||||||
environment: <String, String>{
|
environment: <String, String>{
|
||||||
@ -946,7 +871,6 @@ last line of pub output: "err3"
|
|||||||
processManager: processManager,
|
processManager: processManager,
|
||||||
usage: TestUsage(),
|
usage: TestUsage(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
platform: FakePlatform(
|
platform: FakePlatform(
|
||||||
environment: const <String, String>{
|
environment: const <String, String>{
|
||||||
'PUB_CACHE': 'custom/pub-cache/path',
|
'PUB_CACHE': 'custom/pub-cache/path',
|
||||||
@ -956,9 +880,7 @@ last line of pub output: "err3"
|
|||||||
|
|
||||||
FakeAsync().run((FakeAsync time) {
|
FakeAsync().run((FakeAsync time) {
|
||||||
String? error;
|
String? error;
|
||||||
pub.get(
|
pub.get(context: PubContext.flutterTests).then((void value) {
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.flutterTests).then((void value) {
|
|
||||||
error = 'test completed unexpectedly';
|
error = 'test completed unexpectedly';
|
||||||
}, onError: (dynamic thrownError) {
|
}, onError: (dynamic thrownError) {
|
||||||
error = 'test failed unexpectedly: $thrownError';
|
error = 'test failed unexpectedly: $thrownError';
|
||||||
@ -977,7 +899,6 @@ last line of pub output: "err3"
|
|||||||
logger: BufferLogger.test(),
|
logger: BufferLogger.test(),
|
||||||
processManager: FakeProcessManager.any(),
|
processManager: FakeProcessManager.any(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
usage: usage,
|
usage: usage,
|
||||||
platform: FakePlatform(
|
platform: FakePlatform(
|
||||||
environment: const <String, String>{
|
environment: const <String, String>{
|
||||||
@ -992,8 +913,8 @@ last line of pub output: "err3"
|
|||||||
..writeAsStringSync('{"configVersion": 2,"packages": []}');
|
..writeAsStringSync('{"configVersion": 2,"packages": []}');
|
||||||
|
|
||||||
await pub.get(
|
await pub.get(
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.flutterTests,
|
context: PubContext.flutterTests,
|
||||||
|
generateSyntheticPackage: true,
|
||||||
);
|
);
|
||||||
expect(usage.events, contains(
|
expect(usage.events, contains(
|
||||||
const TestUsageEvent('pub-result', 'flutter-tests', label: 'success'),
|
const TestUsageEvent('pub-result', 'flutter-tests', label: 'success'),
|
||||||
@ -1008,7 +929,6 @@ last line of pub output: "err3"
|
|||||||
logger: BufferLogger.test(),
|
logger: BufferLogger.test(),
|
||||||
processManager: FakeProcessManager.any(),
|
processManager: FakeProcessManager.any(),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
usage: usage,
|
usage: usage,
|
||||||
platform: FakePlatform(
|
platform: FakePlatform(
|
||||||
environment: const <String, String>{
|
environment: const <String, String>{
|
||||||
@ -1032,8 +952,8 @@ last line of pub output: "err3"
|
|||||||
''');
|
''');
|
||||||
|
|
||||||
await pub.get(
|
await pub.get(
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.flutterTests,
|
context: PubContext.flutterTests,
|
||||||
|
generateSyntheticPackage: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
@ -1056,10 +976,9 @@ last line of pub output: "err3"
|
|||||||
command: <String>[
|
command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
],
|
],
|
||||||
exitCode: 1,
|
exitCode: 1,
|
||||||
),
|
),
|
||||||
@ -1071,7 +990,6 @@ last line of pub output: "err3"
|
|||||||
logger: BufferLogger.test(),
|
logger: BufferLogger.test(),
|
||||||
processManager: processManager,
|
processManager: processManager,
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
platform: FakePlatform(
|
platform: FakePlatform(
|
||||||
environment: const <String, String>{
|
environment: const <String, String>{
|
||||||
'PUB_CACHE': 'custom/pub-cache/path',
|
'PUB_CACHE': 'custom/pub-cache/path',
|
||||||
@ -1079,10 +997,7 @@ last line of pub output: "err3"
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
try {
|
try {
|
||||||
await pub.get(
|
await pub.get(context: PubContext.flutterTests);
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.flutterTests,
|
|
||||||
);
|
|
||||||
} on ToolExit {
|
} on ToolExit {
|
||||||
// Ignore.
|
// Ignore.
|
||||||
}
|
}
|
||||||
@ -1103,10 +1018,9 @@ last line of pub output: "err3"
|
|||||||
command: <String>[
|
command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
],
|
],
|
||||||
exitCode: 1,
|
exitCode: 1,
|
||||||
stderr: 'version solving failed',
|
stderr: 'version solving failed',
|
||||||
@ -1124,15 +1038,11 @@ last line of pub output: "err3"
|
|||||||
),
|
),
|
||||||
usage: usage,
|
usage: usage,
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo(),
|
||||||
stdio: FakeStdio(),
|
|
||||||
);
|
);
|
||||||
fileSystem.file('pubspec.yaml').writeAsStringSync('name: foo');
|
fileSystem.file('pubspec.yaml').writeAsStringSync('name: foo');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await pub.get(
|
await pub.get(context: PubContext.flutterTests);
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.flutterTests
|
|
||||||
);
|
|
||||||
} on ToolExit {
|
} on ToolExit {
|
||||||
// Ignore.
|
// Ignore.
|
||||||
}
|
}
|
||||||
@ -1151,10 +1061,9 @@ last line of pub output: "err3"
|
|||||||
command: const <String>[
|
command: const <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
],
|
],
|
||||||
onRun: () {
|
onRun: () {
|
||||||
fileSystem.file('.dart_tool/package_config.json')
|
fileSystem.file('.dart_tool/package_config.json')
|
||||||
@ -1165,20 +1074,18 @@ last line of pub output: "err3"
|
|||||||
command: <String>[
|
command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
FakeCommand(
|
FakeCommand(
|
||||||
command: const <String>[
|
command: const <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
],
|
],
|
||||||
onRun: () {
|
onRun: () {
|
||||||
fileSystem.file('pubspec.yaml')
|
fileSystem.file('pubspec.yaml')
|
||||||
@ -1189,10 +1096,9 @@ last line of pub output: "err3"
|
|||||||
command: <String>[
|
command: <String>[
|
||||||
'bin/cache/dart-sdk/bin/dart',
|
'bin/cache/dart-sdk/bin/dart',
|
||||||
'__deprecated_pub',
|
'__deprecated_pub',
|
||||||
'--directory',
|
'--verbosity=warning',
|
||||||
'.',
|
|
||||||
'get',
|
'get',
|
||||||
'--example',
|
'--no-precompile',
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
]);
|
]);
|
||||||
@ -1204,8 +1110,7 @@ last line of pub output: "err3"
|
|||||||
platform: FakePlatform(
|
platform: FakePlatform(
|
||||||
environment: <String, String>{},
|
environment: <String, String>{},
|
||||||
),
|
),
|
||||||
botDetector: const BotDetectorAlwaysNo(),
|
botDetector: const BotDetectorAlwaysNo()
|
||||||
stdio: FakeStdio()
|
|
||||||
);
|
);
|
||||||
|
|
||||||
fileSystem.file('version').createSync();
|
fileSystem.file('version').createSync();
|
||||||
@ -1216,10 +1121,7 @@ last line of pub output: "err3"
|
|||||||
fileSystem.file('pubspec.yaml')
|
fileSystem.file('pubspec.yaml')
|
||||||
..createSync()
|
..createSync()
|
||||||
..setLastModifiedSync(DateTime(2001));
|
..setLastModifiedSync(DateTime(2001));
|
||||||
await pub.get(
|
await pub.get(context: PubContext.flutterTests); // pub sets date of .packages to 2002
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.flutterTests,
|
|
||||||
); // pub sets date of .packages to 2002
|
|
||||||
|
|
||||||
expect(logger.statusText, 'Running "flutter pub get" in /...\n');
|
expect(logger.statusText, 'Running "flutter pub get" in /...\n');
|
||||||
expect(logger.errorText, isEmpty);
|
expect(logger.errorText, isEmpty);
|
||||||
@ -1231,10 +1133,7 @@ last line of pub output: "err3"
|
|||||||
.setLastModifiedSync(DateTime(2000));
|
.setLastModifiedSync(DateTime(2000));
|
||||||
fileSystem.file('pubspec.yaml')
|
fileSystem.file('pubspec.yaml')
|
||||||
.setLastModifiedSync(DateTime(2001));
|
.setLastModifiedSync(DateTime(2001));
|
||||||
await pub.get(
|
await pub.get(context: PubContext.flutterTests); // pub does nothing
|
||||||
project: FlutterProject.fromDirectoryTest(fileSystem.currentDirectory),
|
|
||||||
context: PubContext.flutterTests,
|
|
||||||
); // pub does nothing
|
|
||||||
|
|
||||||
expect(logger.statusText, 'Running "flutter pub get" in /...\n');
|
expect(logger.statusText, 'Running "flutter pub get" in /...\n');
|
||||||
expect(logger.errorText, isEmpty);
|
expect(logger.errorText, isEmpty);
|
||||||
|
@ -20,7 +20,6 @@ import 'package:flutter_tools/src/cache.dart';
|
|||||||
import 'package:flutter_tools/src/dart/pub.dart';
|
import 'package:flutter_tools/src/dart/pub.dart';
|
||||||
import 'package:flutter_tools/src/globals.dart' as globals;
|
import 'package:flutter_tools/src/globals.dart' as globals;
|
||||||
import 'package:flutter_tools/src/pre_run_validator.dart';
|
import 'package:flutter_tools/src/pre_run_validator.dart';
|
||||||
import 'package:flutter_tools/src/project.dart';
|
|
||||||
import 'package:flutter_tools/src/reporting/reporting.dart';
|
import 'package:flutter_tools/src/reporting/reporting.dart';
|
||||||
import 'package:flutter_tools/src/runner/flutter_command.dart';
|
import 'package:flutter_tools/src/runner/flutter_command.dart';
|
||||||
import 'package:test/fake.dart';
|
import 'package:test/fake.dart';
|
||||||
@ -815,12 +814,11 @@ class FakePub extends Fake implements Pub {
|
|||||||
@override
|
@override
|
||||||
Future<void> get({
|
Future<void> get({
|
||||||
PubContext context,
|
PubContext context,
|
||||||
FlutterProject project,
|
String directory,
|
||||||
bool skipIfAbsent = false,
|
bool skipIfAbsent = false,
|
||||||
bool upgrade = false,
|
bool upgrade = false,
|
||||||
bool offline = false,
|
bool offline = false,
|
||||||
bool generateSyntheticPackage = false,
|
bool generateSyntheticPackage = false,
|
||||||
bool generateSyntheticPackageForExample = false,
|
|
||||||
String flutterRootOverride,
|
String flutterRootOverride,
|
||||||
bool checkUpToDate = false,
|
bool checkUpToDate = false,
|
||||||
bool shouldSkipThirdPartyGenerator = true,
|
bool shouldSkipThirdPartyGenerator = true,
|
||||||
|
@ -75,7 +75,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: globals.stdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -123,7 +122,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: globals.stdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -155,7 +153,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: globals.stdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -186,7 +183,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: globals.stdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -236,7 +232,6 @@ void main() {
|
|||||||
usage: globals.flutterUsage,
|
usage: globals.flutterUsage,
|
||||||
botDetector: globals.botDetector,
|
botDetector: globals.botDetector,
|
||||||
platform: globals.platform,
|
platform: globals.platform,
|
||||||
stdio: globals.stdio,
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,6 @@ import 'package:flutter_tools/src/cache.dart';
|
|||||||
import 'package:flutter_tools/src/convert.dart';
|
import 'package:flutter_tools/src/convert.dart';
|
||||||
import 'package:flutter_tools/src/features.dart';
|
import 'package:flutter_tools/src/features.dart';
|
||||||
import 'package:flutter_tools/src/ios/plist_parser.dart';
|
import 'package:flutter_tools/src/ios/plist_parser.dart';
|
||||||
import 'package:flutter_tools/src/project.dart';
|
|
||||||
import 'package:flutter_tools/src/version.dart';
|
import 'package:flutter_tools/src/version.dart';
|
||||||
import 'package:test/fake.dart';
|
import 'package:test/fake.dart';
|
||||||
|
|
||||||
@ -562,13 +561,3 @@ class FakeStopwatchFactory implements StopwatchFactory {
|
|||||||
return stopwatches[name] ?? FakeStopwatch();
|
return stopwatches[name] ?? FakeStopwatch();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class FakeFlutterProjectFactory implements FlutterProjectFactory {
|
|
||||||
@override
|
|
||||||
FlutterProject fromDirectory(Directory directory) {
|
|
||||||
return FlutterProject.fromDirectoryTest(directory);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Map<String, FlutterProject> get projects => throw UnimplementedError();
|
|
||||||
}
|
|
||||||
|
@ -35,7 +35,7 @@ Future<String> createProject(Directory temp, { List<String>? arguments }) async
|
|||||||
final CreateCommand command = CreateCommand();
|
final CreateCommand command = CreateCommand();
|
||||||
final CommandRunner<void> runner = createTestCommandRunner(command);
|
final CommandRunner<void> runner = createTestCommandRunner(command);
|
||||||
await runner.run(<String>['create', ...arguments, projectPath]);
|
await runner.run(<String>['create', ...arguments, projectPath]);
|
||||||
// Create `.packages` since it's not created when the flag `--no-pub` is passed.
|
// Created `.packages` since it's not created when the flag `--no-pub` is passed.
|
||||||
globals.fs.file(globals.fs.path.join(projectPath, '.packages')).createSync();
|
globals.fs.file(globals.fs.path.join(projectPath, '.packages')).createSync();
|
||||||
return projectPath;
|
return projectPath;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
import 'package:flutter_tools/src/base/io.dart';
|
import 'package:flutter_tools/src/base/io.dart';
|
||||||
import 'package:flutter_tools/src/dart/pub.dart';
|
import 'package:flutter_tools/src/dart/pub.dart';
|
||||||
import 'package:flutter_tools/src/project.dart';
|
|
||||||
|
|
||||||
class ThrowingPub implements Pub {
|
class ThrowingPub implements Pub {
|
||||||
@override
|
@override
|
||||||
@ -13,6 +12,8 @@ class ThrowingPub implements Pub {
|
|||||||
String? directory,
|
String? directory,
|
||||||
MessageFilter? filter,
|
MessageFilter? filter,
|
||||||
String? failureMessage = 'pub failed',
|
String? failureMessage = 'pub failed',
|
||||||
|
bool? retry,
|
||||||
|
bool? showTraceForErrors,
|
||||||
}) {
|
}) {
|
||||||
throw UnsupportedError('Attempted to invoke pub during test.');
|
throw UnsupportedError('Attempted to invoke pub during test.');
|
||||||
}
|
}
|
||||||
@ -20,14 +21,13 @@ class ThrowingPub implements Pub {
|
|||||||
@override
|
@override
|
||||||
Future<void> get({
|
Future<void> get({
|
||||||
PubContext? context,
|
PubContext? context,
|
||||||
required FlutterProject project,
|
String? directory,
|
||||||
bool skipIfAbsent = false,
|
bool skipIfAbsent = false,
|
||||||
bool upgrade = false,
|
bool upgrade = false,
|
||||||
bool offline = false,
|
bool offline = false,
|
||||||
bool checkLastModified = true,
|
bool checkLastModified = true,
|
||||||
bool skipPubspecYamlCheck = false,
|
bool skipPubspecYamlCheck = false,
|
||||||
bool generateSyntheticPackage = false,
|
bool generateSyntheticPackage = false,
|
||||||
bool generateSyntheticPackageForExample = false,
|
|
||||||
String? flutterRootOverride,
|
String? flutterRootOverride,
|
||||||
bool checkUpToDate = false,
|
bool checkUpToDate = false,
|
||||||
bool shouldSkipThirdPartyGenerator = true,
|
bool shouldSkipThirdPartyGenerator = true,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user