From 01e60a1ca440f077a1562ce01776ce58326ed54c Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Tue, 9 Jun 2020 10:47:21 -0700 Subject: [PATCH] [flutter_tools] Reland: use correct sdk path for analysis (#59081) flutter analyze was unconditionally using the cached dart-sdk for analysis, and was not running with the built SDK during local engine. This broke when trying to update the analyzer for null safety, since it required us to wait for the dart change to roll into the framework first. --- packages/flutter_tools/lib/executable.dart | 1 + packages/flutter_tools/lib/src/artifacts.dart | 18 +-- .../lib/src/build_runner/build_runner.dart | 10 +- .../lib/src/commands/analyze.dart | 12 +- .../lib/src/commands/analyze_base.dart | 6 +- .../src/commands/analyze_continuously.dart | 9 +- .../lib/src/commands/analyze_once.dart | 9 +- .../flutter_tools/lib/src/commands/drive.dart | 6 +- packages/flutter_tools/lib/src/dart/sdk.dart | 22 ---- .../hermetic/analyze_continuously_test.dart | 115 ++++++++++++++++-- .../permeable/analyze_once_test.dart | 16 +++ .../commands.shard/permeable/create_test.dart | 24 ++-- .../commands.shard/permeable/test_test.dart | 5 +- 13 files changed, 184 insertions(+), 69 deletions(-) delete mode 100644 packages/flutter_tools/lib/src/dart/sdk.dart diff --git a/packages/flutter_tools/lib/executable.dart b/packages/flutter_tools/lib/executable.dart index cce1678af6..b9f052bbc2 100644 --- a/packages/flutter_tools/lib/executable.dart +++ b/packages/flutter_tools/lib/executable.dart @@ -75,6 +75,7 @@ Future main(List args) async { processManager: globals.processManager, logger: globals.logger, terminal: globals.terminal, + artifacts: globals.artifacts, ), AssembleCommand(), AttachCommand(verboseHelp: verboseHelp), diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart index 9621ddb86f..9196e4374a 100644 --- a/packages/flutter_tools/lib/src/artifacts.dart +++ b/packages/flutter_tools/lib/src/artifacts.dart @@ -10,7 +10,6 @@ import 'base/platform.dart'; import 'base/utils.dart'; import 'build_info.dart'; import 'cache.dart'; -import 'dart/sdk.dart'; import 'globals.dart' as globals; enum Artifact { @@ -339,9 +338,9 @@ class CachedArtifacts extends Artifacts { final String platformDirName = getNameForTargetPlatform(platform); return _fileSystem.path.join(engineArtifactsPath, platformDirName, _artifactToFileName(artifact, platform, mode)); case Artifact.engineDartSdkPath: - return dartSdkPath; + return _dartSdkPath(_fileSystem); case Artifact.engineDartBinary: - return _fileSystem.path.join(dartSdkPath, 'bin', _artifactToFileName(artifact, platform)); + return _fileSystem.path.join(_dartSdkPath(_fileSystem), 'bin', _artifactToFileName(artifact, platform)); case Artifact.platformKernelDill: return _fileSystem.path.join(_getFlutterPatchedSdkPath(mode), _artifactToFileName(artifact)); case Artifact.platformLibrariesJson: @@ -355,11 +354,11 @@ class CachedArtifacts extends Artifacts { case Artifact.webPlatformKernelDill: return _fileSystem.path.join(_getFlutterWebSdkPath(), 'kernel', _artifactToFileName(artifact)); case Artifact.dart2jsSnapshot: - return _fileSystem.path.join(dartSdkPath, 'bin', 'snapshots', _artifactToFileName(artifact)); + return _fileSystem.path.join(_dartSdkPath(_fileSystem), 'bin', 'snapshots', _artifactToFileName(artifact)); case Artifact.dartdevcSnapshot: - return _fileSystem.path.join(dartSdkPath, 'bin', 'snapshots', _artifactToFileName(artifact)); + return _fileSystem.path.join(_dartSdkPath(_fileSystem), 'bin', 'snapshots', _artifactToFileName(artifact)); case Artifact.kernelWorkerSnapshot: - return _fileSystem.path.join(dartSdkPath, 'bin', 'snapshots', _artifactToFileName(artifact)); + return _fileSystem.path.join(_dartSdkPath(_fileSystem), 'bin', 'snapshots', _artifactToFileName(artifact)); case Artifact.flutterMacOSFramework: case Artifact.linuxDesktopPath: case Artifact.windowsDesktopPath: @@ -528,7 +527,7 @@ class LocalEngineArtifacts extends Artifacts { case Artifact.dart2jsSnapshot: return _fileSystem.path.join(_hostEngineOutPath, 'dart-sdk', 'bin', 'snapshots', artifactFileName); case Artifact.dartdevcSnapshot: - return _fileSystem.path.join(dartSdkPath, 'bin', 'snapshots', artifactFileName); + return _fileSystem.path.join(_dartSdkPath(_fileSystem), 'bin', 'snapshots', artifactFileName); case Artifact.kernelWorkerSnapshot: return _fileSystem.path.join(_hostEngineOutPath, 'dart-sdk', 'bin', 'snapshots', artifactFileName); case Artifact.idevicescreenshot: @@ -661,3 +660,8 @@ class OverrideArtifacts implements Artifacts { @override bool get isLocalEngine => parent.isLocalEngine; } + +/// Locate the Dart SDK. +String _dartSdkPath(FileSystem fileSystem) { + return fileSystem.path.join(Cache.flutterRoot, 'bin', 'cache', 'dart-sdk'); +} diff --git a/packages/flutter_tools/lib/src/build_runner/build_runner.dart b/packages/flutter_tools/lib/src/build_runner/build_runner.dart index c00ef4f87a..4331ac773f 100644 --- a/packages/flutter_tools/lib/src/build_runner/build_runner.dart +++ b/packages/flutter_tools/lib/src/build_runner/build_runner.dart @@ -19,7 +19,6 @@ import '../base/io.dart'; import '../base/logger.dart'; import '../codegen.dart'; import '../dart/pub.dart'; -import '../dart/sdk.dart'; import '../globals.dart' as globals; import '../project.dart'; @@ -111,7 +110,14 @@ class BuildRunner extends CodeGenerator { } scriptIdFile.writeAsBytesSync(appliedBuilderDigest); final ProcessResult generateResult = await globals.processManager.run([ - sdkBinaryName('pub'), 'run', 'build_runner', 'generate-build-script', + globals.fs.path.join( + globals.artifacts.getArtifactPath(Artifact.engineDartSdkPath), + 'bin', + (globals.platform.isWindows) ? 'pub.bat' : 'pub' + ), + 'run', + 'build_runner', + 'generate-build-script', ], workingDirectory: syntheticPubspec.parent.path); if (generateResult.exitCode != 0) { throwToolExit('Error generating build_script snapshot: ${generateResult.stderr}'); diff --git a/packages/flutter_tools/lib/src/commands/analyze.dart b/packages/flutter_tools/lib/src/commands/analyze.dart index 36f314aea5..1080ccdc73 100644 --- a/packages/flutter_tools/lib/src/commands/analyze.dart +++ b/packages/flutter_tools/lib/src/commands/analyze.dart @@ -7,6 +7,7 @@ import 'dart:async'; import 'package:meta/meta.dart'; import 'package:process/process.dart'; +import '../artifacts.dart'; import '../base/file_system.dart'; import '../base/logger.dart'; import '../base/platform.dart'; @@ -21,10 +22,12 @@ class AnalyzeCommand extends FlutterCommand { this.workingDirectory, @required FileSystem fileSystem, @required Platform platform, - @required AnsiTerminal terminal, + @required Terminal terminal, @required Logger logger, @required ProcessManager processManager, - }) : _fileSystem = fileSystem, + @required Artifacts artifacts, + }) : _artifacts = artifacts, + _fileSystem = fileSystem, _processManager = processManager, _logger = logger, _terminal = terminal, @@ -77,9 +80,10 @@ class AnalyzeCommand extends FlutterCommand { /// The working directory for testing analysis using dartanalyzer. final Directory workingDirectory; + final Artifacts _artifacts; final FileSystem _fileSystem; final Logger _logger; - final AnsiTerminal _terminal; + final Terminal _terminal; final ProcessManager _processManager; final Platform _platform; @@ -117,6 +121,7 @@ class AnalyzeCommand extends FlutterCommand { processManager: _processManager, terminal: _terminal, experiments: stringsArg('enable-experiment'), + artifacts: _artifacts, ).analyze(); } else { await AnalyzeOnce( @@ -130,6 +135,7 @@ class AnalyzeCommand extends FlutterCommand { processManager: _processManager, terminal: _terminal, experiments: stringsArg('enable-experiment'), + artifacts: _artifacts, ).analyze(); } return FlutterCommandResult.success(); diff --git a/packages/flutter_tools/lib/src/commands/analyze_base.dart b/packages/flutter_tools/lib/src/commands/analyze_base.dart index 68bd5981f9..9dedb50e44 100644 --- a/packages/flutter_tools/lib/src/commands/analyze_base.dart +++ b/packages/flutter_tools/lib/src/commands/analyze_base.dart @@ -9,6 +9,7 @@ import 'package:meta/meta.dart'; import 'package:process/process.dart'; import 'package:yaml/yaml.dart' as yaml; +import '../artifacts.dart'; import '../base/common.dart'; import '../base/file_system.dart'; import '../base/logger.dart'; @@ -29,6 +30,7 @@ abstract class AnalyzeBase { @required this.processManager, @required this.terminal, @required this.experiments, + @required this.artifacts, }); /// The parsed argument results for execution. @@ -46,9 +48,11 @@ abstract class AnalyzeBase { @protected final Platform platform; @protected - final AnsiTerminal terminal; + final Terminal terminal; @protected final List experiments; + @protected + final Artifacts artifacts; /// Called by [AnalyzeCommand] to start the analysis process. Future analyze(); diff --git a/packages/flutter_tools/lib/src/commands/analyze_continuously.dart b/packages/flutter_tools/lib/src/commands/analyze_continuously.dart index 490ffacda0..ce26a971d0 100644 --- a/packages/flutter_tools/lib/src/commands/analyze_continuously.dart +++ b/packages/flutter_tools/lib/src/commands/analyze_continuously.dart @@ -8,6 +8,7 @@ import 'package:args/args.dart'; import 'package:meta/meta.dart'; import 'package:process/process.dart'; +import '../artifacts.dart'; import '../base/common.dart'; import '../base/file_system.dart'; import '../base/io.dart'; @@ -16,17 +17,17 @@ import '../base/platform.dart'; import '../base/terminal.dart'; import '../base/utils.dart'; import '../dart/analysis.dart'; -import '../dart/sdk.dart' as sdk; import 'analyze_base.dart'; class AnalyzeContinuously extends AnalyzeBase { AnalyzeContinuously(ArgResults argResults, List repoRoots, List repoPackages, { @required FileSystem fileSystem, @required Logger logger, - @required AnsiTerminal terminal, + @required Terminal terminal, @required Platform platform, @required ProcessManager processManager, @required List experiments, + @required Artifacts artifacts, }) : super( argResults, repoPackages: repoPackages, @@ -37,6 +38,7 @@ class AnalyzeContinuously extends AnalyzeBase { terminal: terminal, processManager: processManager, experiments: experiments, + artifacts: artifacts, ); String analysisTarget; @@ -67,7 +69,8 @@ class AnalyzeContinuously extends AnalyzeBase { analysisTarget = fileSystem.currentDirectory.path; } - final String sdkPath = argResults['dart-sdk'] as String ?? sdk.dartSdkPath; + final String sdkPath = argResults['dart-sdk'] as String ?? + artifacts.getArtifactPath(Artifact.engineDartSdkPath); final AnalysisServer server = AnalysisServer(sdkPath, directories, fileSystem: fileSystem, diff --git a/packages/flutter_tools/lib/src/commands/analyze_once.dart b/packages/flutter_tools/lib/src/commands/analyze_once.dart index a7936e352a..5aed702168 100644 --- a/packages/flutter_tools/lib/src/commands/analyze_once.dart +++ b/packages/flutter_tools/lib/src/commands/analyze_once.dart @@ -8,6 +8,7 @@ import 'package:args/args.dart'; import 'package:meta/meta.dart'; import 'package:process/process.dart'; +import '../artifacts.dart'; import '../base/common.dart'; import '../base/file_system.dart'; import '../base/logger.dart'; @@ -15,7 +16,6 @@ import '../base/platform.dart'; import '../base/terminal.dart'; import '../base/utils.dart'; import '../dart/analysis.dart'; -import '../dart/sdk.dart' as sdk; import 'analyze.dart'; import 'analyze_base.dart'; @@ -29,8 +29,9 @@ class AnalyzeOnce extends AnalyzeBase { @required Logger logger, @required Platform platform, @required ProcessManager processManager, - @required AnsiTerminal terminal, + @required Terminal terminal, @required List experiments, + @required Artifacts artifacts, this.workingDirectory, }) : super( argResults, @@ -42,6 +43,7 @@ class AnalyzeOnce extends AnalyzeBase { processManager: processManager, terminal: terminal, experiments: experiments, + artifacts: artifacts, ); /// The working directory for testing analysis using dartanalyzer. @@ -89,7 +91,8 @@ class AnalyzeOnce extends AnalyzeBase { final Completer analysisCompleter = Completer(); final List errors = []; - final String sdkPath = argResults['dart-sdk'] as String ?? sdk.dartSdkPath; + final String sdkPath = argResults['dart-sdk'] as String ?? + artifacts.getArtifactPath(Artifact.engineDartSdkPath); final AnalysisServer server = AnalysisServer( sdkPath, diff --git a/packages/flutter_tools/lib/src/commands/drive.dart b/packages/flutter_tools/lib/src/commands/drive.dart index 20c483ed96..abdf34d8ee 100644 --- a/packages/flutter_tools/lib/src/commands/drive.dart +++ b/packages/flutter_tools/lib/src/commands/drive.dart @@ -12,12 +12,12 @@ import 'package:webdriver/async_io.dart' as async_io; import '../android/android_device.dart'; import '../application_package.dart'; +import '../artifacts.dart'; import '../base/common.dart'; import '../base/file_system.dart'; import '../base/process.dart'; import '../build_info.dart'; import '../dart/package_map.dart'; -import '../dart/sdk.dart'; import '../device.dart'; import '../globals.dart' as globals; import '../project.dart'; @@ -505,11 +505,9 @@ Future _runTests(List testArgs, Map environment) a globals.printTrace('Running driver tests.'); globalPackagesPath = globals.fs.path.normalize(globals.fs.path.absolute(globalPackagesPath)); - final String dartVmPath = globals.fs.path.join(dartSdkPath, 'bin', 'dart'); final int result = await processUtils.stream( [ - dartVmPath, - ...dartVmFlags, + globals.artifacts.getArtifactPath(Artifact.engineDartBinary), ...testArgs, '--packages=$globalPackagesPath', '-rexpanded', diff --git a/packages/flutter_tools/lib/src/dart/sdk.dart b/packages/flutter_tools/lib/src/dart/sdk.dart deleted file mode 100644 index 446766fb53..0000000000 --- a/packages/flutter_tools/lib/src/dart/sdk.dart +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2014 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import '../cache.dart'; -import '../globals.dart' as globals; - -/// Locate the Dart SDK. -String get dartSdkPath { - return globals.fs.path.join(Cache.flutterRoot, 'bin', 'cache', 'dart-sdk'); -} - -/// The required Dart language flags -const List dartVmFlags = []; - -/// Return the platform specific name for the given Dart SDK binary. So, `pub` -/// ==> `pub.bat`. The default SDK location can be overridden with a specified -/// [sdkLocation]. -String sdkBinaryName(String name, { String sdkLocation }) { - return globals.fs.path.absolute( - globals.fs.path.join(sdkLocation ?? dartSdkPath, 'bin', globals.platform.isWindows ? '$name.bat' : name)); -} diff --git a/packages/flutter_tools/test/commands.shard/hermetic/analyze_continuously_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/analyze_continuously_test.dart index 0869722965..a8001ccffd 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/analyze_continuously_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/analyze_continuously_test.dart @@ -4,15 +4,18 @@ import 'dart:async'; +import 'package:flutter_tools/src/artifacts.dart'; +import 'package:flutter_tools/src/base/common.dart'; +import 'package:mockito/mockito.dart'; import 'package:file/memory.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/base/terminal.dart'; +import 'package:flutter_tools/src/commands/analyze.dart'; import 'package:flutter_tools/src/dart/analysis.dart'; import 'package:flutter_tools/src/dart/pub.dart'; -import 'package:flutter_tools/src/dart/sdk.dart'; import 'package:flutter_tools/src/globals.dart' as globals; import 'package:flutter_tools/src/runner/flutter_command_runner.dart'; import 'package:process/process.dart'; @@ -76,7 +79,9 @@ void main() { ); await pub.get(context: PubContext.flutterTests, directory: tempDir.path); - server = AnalysisServer(dartSdkPath, [tempDir.path], + server = AnalysisServer( + globals.artifacts.getArtifactPath(Artifact.engineDartSdkPath), + [tempDir.path], fileSystem: fileSystem, platform: platform, processManager: processManager, @@ -109,14 +114,16 @@ void main() { ); await pub.get(context: PubContext.flutterTests, directory: tempDir.path); - server = AnalysisServer(dartSdkPath, [tempDir.path], - fileSystem: fileSystem, - platform: platform, - processManager: processManager, - logger: logger, - terminal: terminal, - experiments: [], - ); + server = AnalysisServer( + globals.artifacts.getArtifactPath(Artifact.engineDartSdkPath), + [tempDir.path], + fileSystem: fileSystem, + platform: platform, + processManager: processManager, + logger: logger, + terminal: terminal, + experiments: [], + ); int errorCount = 0; final Future onDone = server.onAnalyzing.where((bool analyzing) => analyzing == false).first; @@ -133,7 +140,9 @@ void main() { testUsingContext('Returns no errors when source is error-free', () async { const String contents = "StringBuffer bar = StringBuffer('baz');"; tempDir.childFile('main.dart').writeAsStringSync(contents); - server = AnalysisServer(dartSdkPath, [tempDir.path], + server = AnalysisServer( + globals.artifacts.getArtifactPath(Artifact.engineDartSdkPath), + [tempDir.path], fileSystem: fileSystem, platform: platform, processManager: processManager, @@ -187,4 +196,88 @@ void main() { await server.start(); }); + + testUsingContext('Can run AnalysisService with customized cache location', () async { + final Completer completer = Completer(); + final StreamController> stdin = StreamController>(); + final FakeProcessManager processManager = FakeProcessManager.list( + [ + FakeCommand( + command: const [ + 'custom-dart-sdk/bin/dart', + '--disable-dart-dev', + 'custom-dart-sdk/bin/snapshots/analysis_server.dart.snapshot', + '--disable-server-feature-completion', + '--disable-server-feature-search', + '--sdk', + 'custom-dart-sdk', + ], + completer: completer, + stdin: IOSink(stdin.sink), + ), + ]); + + final Artifacts artifacts = MockArtifacts(); + when(artifacts.getArtifactPath(Artifact.engineDartSdkPath)) + .thenReturn('custom-dart-sdk'); + + final AnalyzeCommand command = AnalyzeCommand( + terminal: Terminal.test(), + artifacts: artifacts, + logger: BufferLogger.test(), + platform: FakePlatform(operatingSystem: 'linux'), + fileSystem: MemoryFileSystem.test(), + processManager: processManager, + ); + + final TestFlutterCommandRunner commandRunner = TestFlutterCommandRunner(); + commandRunner.addCommand(command); + unawaited(commandRunner.run(['analyze', '--watch'])); + await stdin.stream.first; + + expect(processManager.hasRemainingExpectations, false); + }); + + testUsingContext('Can run AnalysisService with customized cache location --watch', () async { + final Completer completer = Completer(); + final StreamController> stdin = StreamController>(); + final FakeProcessManager processManager = FakeProcessManager.list( + [ + FakeCommand( + command: const [ + 'custom-dart-sdk/bin/dart', + '--disable-dart-dev', + 'custom-dart-sdk/bin/snapshots/analysis_server.dart.snapshot', + '--disable-server-feature-completion', + '--disable-server-feature-search', + '--sdk', + 'custom-dart-sdk', + ], + completer: completer, + stdin: IOSink(stdin.sink), + ), + ]); + + final Artifacts artifacts = MockArtifacts(); + when(artifacts.getArtifactPath(Artifact.engineDartSdkPath)) + .thenReturn('custom-dart-sdk'); + + final AnalyzeCommand command = AnalyzeCommand( + terminal: Terminal.test(), + artifacts: artifacts, + logger: BufferLogger.test(), + platform: FakePlatform(operatingSystem: 'linux'), + fileSystem: MemoryFileSystem.test(), + processManager: processManager, + ); + + final TestFlutterCommandRunner commandRunner = TestFlutterCommandRunner(); + commandRunner.addCommand(command); + unawaited(commandRunner.run(['analyze', '--watch'])); + await stdin.stream.first; + + expect(processManager.hasRemainingExpectations, false); + }); } + +class MockArtifacts extends Mock implements Artifacts {} diff --git a/packages/flutter_tools/test/commands.shard/permeable/analyze_once_test.dart b/packages/flutter_tools/test/commands.shard/permeable/analyze_once_test.dart index 861c34a52f..b35bac64b6 100644 --- a/packages/flutter_tools/test/commands.shard/permeable/analyze_once_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/analyze_once_test.dart @@ -4,6 +4,8 @@ import 'dart:async'; +import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/artifacts.dart'; import 'package:flutter_tools/src/base/common.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/io.dart'; @@ -32,6 +34,7 @@ void main() { Directory tempDir; String projectPath; File libMain; + Artifacts artifacts; Future runCommand({ FlutterCommand command, @@ -92,6 +95,11 @@ flutter_project:lib/ terminal: terminal, ); analyzerSeparator = platform.isWindows ? '-' : '•'; + artifacts = CachedArtifacts( + cache: globals.cache, + fileSystem: fileSystem, + platform: platform, + ); }); setUp(() { @@ -122,6 +130,7 @@ flutter_project:lib/ platform: platform, processManager: processManager, terminal: terminal, + artifacts: artifacts, ), arguments: ['analyze', '--no-pub'], statusTextContains: ['No issues found!'], @@ -137,6 +146,7 @@ flutter_project:lib/ logger: logger, processManager: processManager, terminal: terminal, + artifacts: artifacts, ), arguments: ['analyze', '--no-pub', libMain.path], toolExit: true, @@ -175,6 +185,7 @@ flutter_project:lib/ logger: logger, processManager: processManager, terminal: terminal, + artifacts: artifacts, ), arguments: ['analyze', '--no-pub'], statusTextContains: [ @@ -220,6 +231,7 @@ flutter_project:lib/ logger: logger, processManager: processManager, terminal: terminal, + artifacts: artifacts, ), arguments: ['analyze', '--no-pub'], statusTextContains: [ @@ -266,6 +278,7 @@ void bar() { logger: logger, processManager: processManager, terminal: terminal, + artifacts: artifacts, ), arguments: ['analyze', '--no-pub'], statusTextContains: [ @@ -296,6 +309,7 @@ StringBuffer bar = StringBuffer('baz'); logger: logger, processManager: processManager, terminal: terminal, + artifacts: artifacts, ), arguments: ['analyze', '--no-pub'], statusTextContains: ['No issues found!'], @@ -322,6 +336,7 @@ int? bar; logger: logger, processManager: processManager, terminal: terminal, + artifacts: artifacts, ), arguments: ['analyze', '--no-pub', '--enable-experiment=non-nullable'], statusTextContains: ['No issues found!'], @@ -349,6 +364,7 @@ StringBuffer bar = StringBuffer('baz'); processManager: processManager, logger: logger, fileSystem: fileSystem, + artifacts: artifacts, ), arguments: ['analyze', '--no-pub'], statusTextContains: ['No issues found!'], diff --git a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart index db5f090521..779fa65989 100644 --- a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart @@ -7,6 +7,7 @@ import 'dart:convert'; import 'dart:typed_data'; import 'package:args/command_runner.dart'; +import 'package:flutter_tools/src/artifacts.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/base/net.dart'; @@ -15,7 +16,6 @@ import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/create.dart'; import 'package:flutter_tools/src/dart/pub.dart'; -import 'package:flutter_tools/src/dart/sdk.dart'; import 'package:flutter_tools/src/features.dart'; import 'package:flutter_tools/src/globals.dart' as globals; import 'package:flutter_tools/src/project.dart'; @@ -830,7 +830,11 @@ void main() { final String original = file.readAsStringSync(); final Process process = await Process.start( - sdkBinaryName('dartfmt'), + globals.fs.path.join( + globals.artifacts.getArtifactPath(Artifact.engineDartSdkPath), + 'bin', + globals.platform.isWindows ? 'dartfmt.bat' : 'dartfmt', + ), [file.path], workingDirectory: projectDir.path, ); @@ -928,7 +932,11 @@ void main() { final String original = file.readAsStringSync(); final Process process = await Process.start( - sdkBinaryName('dartfmt'), + globals.fs.path.join( + globals.artifacts.getArtifactPath(Artifact.engineDartSdkPath), + 'bin', + globals.platform.isWindows ? 'dartfmt.bat' : 'dartfmt', + ), [file.path], workingDirectory: projectDir.path, ); @@ -1532,7 +1540,6 @@ Future _ensureFlutterToolsSnapshot() async { } final List snapshotArgs = [ - ...dartVmFlags, '--snapshot=$flutterToolsSnapshotPath', '--packages=$dotPackages', flutterToolsPath, @@ -1576,13 +1583,12 @@ Future _analyzeProject(String workingDir) async { )); final List args = [ - ...dartVmFlags, flutterToolsSnapshotPath, 'analyze', ]; final ProcessResult exec = await Process.run( - '$dartSdkPath/bin/dart', + globals.artifacts.getArtifactPath(Artifact.engineDartBinary), args, workingDirectory: workingDir, ); @@ -1605,9 +1611,8 @@ Future _runFlutterTest(Directory workingDir, { String target }) async { // While flutter test does get packages, it doesn't write version // files anymore. await Process.run( - '$dartSdkPath/bin/dart', + globals.artifacts.getArtifactPath(Artifact.engineDartBinary), [ - ...dartVmFlags, flutterToolsSnapshotPath, 'packages', 'get', @@ -1616,7 +1621,6 @@ Future _runFlutterTest(Directory workingDir, { String target }) async { ); final List args = [ - ...dartVmFlags, flutterToolsSnapshotPath, 'test', '--no-color', @@ -1624,7 +1628,7 @@ Future _runFlutterTest(Directory workingDir, { String target }) async { ]; final ProcessResult exec = await Process.run( - '$dartSdkPath/bin/dart', + globals.artifacts.getArtifactPath(Artifact.engineDartBinary), args, workingDirectory: workingDir.path, ); diff --git a/packages/flutter_tools/test/commands.shard/permeable/test_test.dart b/packages/flutter_tools/test/commands.shard/permeable/test_test.dart index 1c9f74aeb9..2ff279a066 100644 --- a/packages/flutter_tools/test/commands.shard/permeable/test_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/test_test.dart @@ -5,10 +5,10 @@ import 'dart:async'; import 'dart:convert'; +import 'package:flutter_tools/src/artifacts.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/dart/sdk.dart'; import 'package:flutter_tools/src/globals.dart' as globals; import '../../src/common.dart'; @@ -302,7 +302,6 @@ Future _runFlutterTest( } final List args = [ - ...dartVmFlags, globals.fs.path.absolute(globals.fs.path.join('bin', 'flutter_tools.dart')), 'test', '--no-color', @@ -319,7 +318,7 @@ Future _runFlutterTest( _testExclusionLock = testExclusionCompleter.future; try { return await Process.run( - globals.fs.path.join(dartSdkPath, 'bin', 'dart'), + globals.artifacts.getArtifactPath(Artifact.engineDartBinary), args, workingDirectory: workingDirectory, stdoutEncoding: utf8,