Unverified Commit 5816da80 authored by Kevin Moore's avatar Kevin Moore Committed by GitHub

[tool] consistently use environment (not globals) in targets/web.dart (#125937)

Also update the order of args to commands so that testing has less repeated "stuff"
parent 8449623e
......@@ -163,15 +163,15 @@ class Dart2JSTarget extends Dart2WebTarget {
}
final BuildMode buildMode = BuildMode.fromCliName(buildModeEnvironment);
final JsCompilerConfig compilerConfig = JsCompilerConfig.fromBuildSystemEnvironment(environment.defines);
final Artifacts artifacts = globals.artifacts!;
final Artifacts artifacts = environment.artifacts;
final String platformBinariesPath = getWebPlatformBinariesDirectory(artifacts, webRenderer).path;
final List<String> sharedCommandOptions = <String>[
artifacts.getArtifactPath(Artifact.engineDartBinary, platform: TargetPlatform.web_javascript),
'--disable-dart-dev',
artifacts.getArtifactPath(Artifact.dart2jsSnapshot, platform: TargetPlatform.web_javascript),
'--platform-binaries=$platformBinariesPath',
...decodeCommaSeparated(environment.defines, kExtraFrontEndOptions),
'--invoker=flutter_tool',
...decodeCommaSeparated(environment.defines, kExtraFrontEndOptions),
if (buildMode == BuildMode.profile)
'-Ddart.vm.profile=true'
else
......@@ -214,7 +214,7 @@ class Dart2JSTarget extends Dart2WebTarget {
final File dart2jsDeps = environment.buildDir
.childFile('app.dill.deps');
if (!dart2jsDeps.existsSync()) {
globals.printWarning('Warning: dart2js did not produced expected deps list at '
environment.logger.printWarning('Warning: dart2js did not produced expected deps list at '
'${dart2jsDeps.path}');
return;
}
......@@ -241,7 +241,7 @@ class Dart2WasmTarget extends Dart2WebTarget {
}
final WasmCompilerConfig compilerConfig = WasmCompilerConfig.fromBuildSystemEnvironment(environment.defines);
final BuildMode buildMode = BuildMode.fromCliName(buildModeEnvironment);
final Artifacts artifacts = globals.artifacts!;
final Artifacts artifacts = environment.artifacts;
final File outputWasmFile = environment.buildDir.childFile(
compilerConfig.runWasmOpt ? 'main.dart.unopt.wasm' : 'main.dart.wasm'
);
......@@ -253,14 +253,6 @@ class Dart2WasmTarget extends Dart2WebTarget {
artifacts.getArtifactPath(Artifact.engineDartAotRuntime, platform: TargetPlatform.web_javascript),
'--disable-dart-dev',
artifacts.getArtifactPath(Artifact.dart2wasmSnapshot, platform: TargetPlatform.web_javascript),
if (buildMode == BuildMode.profile)
'-Ddart.vm.profile=true'
else
'-Ddart.vm.product=true',
...decodeCommaSeparated(environment.defines, kExtraFrontEndOptions),
for (final String dartDefine in decodeDartDefines(environment.defines, kDartDefines))
'-D$dartDefine',
...compilerConfig.toCommandOptions(),
'--packages=.dart_tool/package_config.json',
'--dart-sdk=$dartSdkPath',
'--multi-root-scheme',
......@@ -271,6 +263,14 @@ class Dart2WasmTarget extends Dart2WebTarget {
dartSdkRoot,
'--libraries-spec',
artifacts.getHostArtifact(HostArtifact.flutterWebLibrariesJson).path,
if (buildMode == BuildMode.profile)
'-Ddart.vm.profile=true'
else
'-Ddart.vm.product=true',
...decodeCommaSeparated(environment.defines, kExtraFrontEndOptions),
for (final String dartDefine in decodeDartDefines(environment.defines, kDartDefines))
'-D$dartDefine',
...compilerConfig.toCommandOptions(),
if (webRenderer == WebRendererMode.skwasm)
...<String>[
'--import-shared-memory',
......@@ -383,10 +383,10 @@ class WebReleaseBundle extends Target {
@override
Future<void> build(Environment environment) async {
for (final File outputFile in environment.buildDir.listSync(recursive: true).whereType<File>()) {
final String basename = globals.fs.path.basename(outputFile.path);
final String basename = environment.fileSystem.path.basename(outputFile.path);
if (shouldCopy(basename)) {
outputFile.copySync(
environment.outputDir.childFile(globals.fs.path.basename(outputFile.path)).path
environment.outputDir.childFile(environment.fileSystem.path.basename(outputFile.path)).path
);
}
}
......@@ -422,9 +422,9 @@ class WebReleaseBundle extends Target {
// Copy other resource files out of web/ directory.
final List<File> outputResourcesFiles = <File>[];
for (final File inputFile in inputResourceFiles) {
final File outputFile = globals.fs.file(globals.fs.path.join(
final File outputFile = environment.fileSystem.file(environment.fileSystem.path.join(
environment.outputDir.path,
globals.fs.path.relative(inputFile.path, from: webResources.path)));
environment.fileSystem.path.relative(inputFile.path, from: webResources.path)));
if (!outputFile.parent.existsSync()) {
outputFile.parent.createSync(recursive: true);
}
......@@ -535,7 +535,7 @@ class WebBuiltInAssets extends Target {
// Write the flutter.js file
final File flutterJsFile = environment.outputDir.childFile('flutter.js');
final String fileGeneratorsPath =
globals.artifacts!.getArtifactPath(Artifact.flutterToolsFileGenerators);
environment.artifacts.getArtifactPath(Artifact.flutterToolsFileGenerators);
flutterJsFile.writeAsStringSync(
flutter_js.generateFlutterJsFile(fileGeneratorsPath));
}
......@@ -576,7 +576,7 @@ class WebServiceWorker extends Target {
.listSync(recursive: true)
.whereType<File>()
.where((File file) => !file.path.endsWith('flutter_service_worker.js')
&& !globals.fs.path.basename(file.path).startsWith('.'))
&& !environment.fileSystem.path.basename(file.path).startsWith('.'))
.toList();
final Map<String, String> urlToHash = <String, String>{};
......@@ -586,15 +586,15 @@ class WebServiceWorker extends Target {
file.path.endsWith('.part.js.map')) {
continue;
}
final String url = globals.fs.path.toUri(
globals.fs.path.relative(
final String url = environment.fileSystem.path.toUri(
environment.fileSystem.path.relative(
file.path,
from: environment.outputDir.path),
).toString();
final String hash = md5.convert(await file.readAsBytes()).toString();
urlToHash[url] = hash;
// Add an additional entry for the base URL.
if (globals.fs.path.basename(url) == 'index.html') {
if (environment.fileSystem.path.basename(url) == 'index.html') {
urlToHash['/'] = hash;
}
}
......@@ -605,7 +605,7 @@ class WebServiceWorker extends Target {
final ServiceWorkerStrategy serviceWorkerStrategy =
ServiceWorkerStrategy.fromCliName(environment.defines[kServiceWorkerStrategy]);
final String fileGeneratorsPath =
globals.artifacts!.getArtifactPath(Artifact.flutterToolsFileGenerators);
environment.artifacts.getArtifactPath(Artifact.flutterToolsFileGenerators);
final String serviceWorker = generateServiceWorker(
fileGeneratorsPath,
urlToHash,
......
......@@ -22,12 +22,34 @@ import '../../../src/common.dart';
import '../../../src/fake_process_manager.dart';
import '../../../src/testbed.dart';
const List<String> kDart2jsLinuxArgs = <String>[
'bin/cache/dart-sdk/bin/dart',
const List<String> _kDart2jsLinuxArgs = <String>[
'Artifact.engineDartBinary.TargetPlatform.web_javascript',
'--disable-dart-dev',
'bin/cache/dart-sdk/bin/snapshots/dart2js.dart.snapshot',
'Artifact.dart2jsSnapshot.TargetPlatform.web_javascript',
'--platform-binaries=HostArtifact.webPlatformKernelFolder',
'--invoker=flutter_tool',
];
const List<String> _kDart2WasmLinuxArgs = <String> [
'Artifact.engineDartAotRuntime.TargetPlatform.web_javascript',
'--disable-dart-dev',
'Artifact.dart2wasmSnapshot.TargetPlatform.web_javascript',
'--packages=.dart_tool/package_config.json',
'--dart-sdk=Artifact.engineDartSdkPath.TargetPlatform.web_javascript',
'--multi-root-scheme',
'org-dartlang-sdk',
'--multi-root',
'HostArtifact.flutterWebSdk',
'--multi-root',
_kDartSdkRoot,
'--libraries-spec',
'HostArtifact.flutterWebLibrariesJson',
];
/// The result of calling `.parent` on a Memory directory pointing to
/// `'Artifact.engineDartSdkPath.TargetPlatform.web_javascript'`.
const String _kDartSdkRoot = '.';
void main() {
late Testbed testbed;
late Environment environment;
......@@ -56,7 +78,7 @@ void main() {
kTargetFile: globals.fs.path.join('foo', 'lib', 'main.dart'),
},
artifacts: Artifacts.test(),
processManager: FakeProcessManager.any(),
processManager: processManager,
logger: globals.logger,
fileSystem: globals.fs,
);
......@@ -328,9 +350,7 @@ void main() {
environment.defines[JsCompilerConfig.kCspMode] = 'true';
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.profile=true',
'--no-source-maps',
'-o',
......@@ -342,13 +362,11 @@ void main() {
));
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.profile=true',
'--no-minify',
'--no-source-maps',
'-O4',
'--no-minify',
'--csp',
'-o',
environment.buildDir.childFile('main.dart.js').absolute.path,
......@@ -367,10 +385,8 @@ void main() {
environment.defines[kExtraFrontEndOptions] = '--enable-experiment=non-nullable';
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
..._kDart2jsLinuxArgs,
'--enable-experiment=non-nullable',
'--invoker=flutter_tool',
'-Ddart.vm.profile=true',
'--no-source-maps',
'-o',
......@@ -382,14 +398,12 @@ void main() {
));
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
..._kDart2jsLinuxArgs,
'--enable-experiment=non-nullable',
'--invoker=flutter_tool',
'-Ddart.vm.profile=true',
'--no-minify',
'--no-source-maps',
'-O4',
'--no-minify',
'-o',
environment.buildDir.childFile('main.dart.js').absolute.path,
environment.buildDir.childFile('app.dill').absolute.path,
......@@ -405,9 +419,7 @@ void main() {
environment.defines[kBuildMode] = 'profile';
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.profile=true',
'--no-source-maps',
'-o',
......@@ -419,13 +431,11 @@ void main() {
));
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.profile=true',
'--no-minify',
'--no-source-maps',
'-O4',
'--no-minify',
'-o',
environment.buildDir.childFile('main.dart.js').absolute.path,
environment.buildDir.childFile('app.dill').absolute.path,
......@@ -441,9 +451,7 @@ void main() {
environment.defines[kBuildMode] = 'release';
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.product=true',
'--no-source-maps',
'-o',
......@@ -455,9 +463,7 @@ void main() {
));
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.product=true',
'--no-source-maps',
'-O4',
......@@ -477,9 +483,7 @@ void main() {
environment.defines[JsCompilerConfig.kNativeNullAssertions] = 'true';
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.product=true',
'--native-null-assertions',
'--no-source-maps',
......@@ -492,9 +496,7 @@ void main() {
));
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.product=true',
'--native-null-assertions',
'--no-source-maps',
......@@ -515,9 +517,7 @@ void main() {
environment.defines[JsCompilerConfig.kDart2jsOptimization] = 'O3';
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.product=true',
'--no-source-maps',
'-o',
......@@ -529,9 +529,7 @@ void main() {
));
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.product=true',
'--no-source-maps',
'-O3',
......@@ -550,9 +548,7 @@ void main() {
environment.defines[kBuildMode] = 'release';
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.product=true',
'--no-source-maps',
'-o',
......@@ -565,6 +561,18 @@ void main() {
.writeAsStringSync('file:///a.dart');
},
));
processManager.addCommand(FakeCommand(
command: <String>[
..._kDart2jsLinuxArgs,
'-Ddart.vm.product=true',
'--no-source-maps',
'-O4',
'-o',
environment.buildDir.childFile('main.dart.js').absolute.path,
environment.buildDir.childFile('app.dill').absolute.path,
]
));
await Dart2JSTarget(WebRendererMode.auto).build(environment);
expect(environment.buildDir.childFile('dart2js.d'), exists);
......@@ -582,9 +590,7 @@ void main() {
environment.defines[kDartDefines] = encodeDartDefines(<String>['FOO=bar', 'BAZ=qux']);
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.product=true',
'-DFOO=bar',
'-DBAZ=qux',
......@@ -598,9 +604,7 @@ void main() {
));
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.product=true',
'-DFOO=bar',
'-DBAZ=qux',
......@@ -622,9 +626,7 @@ void main() {
environment.defines[JsCompilerConfig.kSourceMapsEnabled] = 'true';
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.product=true',
'-o',
environment.buildDir.childFile('app.dill').absolute.path,
......@@ -635,9 +637,7 @@ void main() {
));
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.product=true',
'-O4',
'-o',
......@@ -657,9 +657,7 @@ void main() {
environment.defines[kDartDefines] = encodeDartDefines(<String>['FOO=bar', 'BAZ=qux']);
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.profile=true',
'-DFOO=bar',
'-DBAZ=qux',
......@@ -673,15 +671,13 @@ void main() {
));
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.profile=true',
'-DFOO=bar',
'-DBAZ=qux',
'--no-minify',
'--no-source-maps',
'-O4',
'--no-minify',
'-o',
environment.buildDir.childFile('main.dart.js').absolute.path,
environment.buildDir.childFile('app.dill').absolute.path,
......@@ -698,9 +694,7 @@ void main() {
environment.defines[JsCompilerConfig.kDart2jsDumpInfo] = 'true';
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.profile=true',
'--no-source-maps',
'-o',
......@@ -712,13 +706,11 @@ void main() {
));
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.profile=true',
'--no-minify',
'--no-source-maps',
'-O4',
'--no-minify',
'--dump-info',
'-o',
environment.buildDir.childFile('main.dart.js').absolute.path,
......@@ -736,9 +728,7 @@ void main() {
environment.defines[JsCompilerConfig.kDart2jsNoFrequencyBasedMinification] = 'true';
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.profile=true',
'--no-source-maps',
'-o',
......@@ -750,13 +740,11 @@ void main() {
));
processManager.addCommand(FakeCommand(
command: <String>[
...kDart2jsLinuxArgs,
'--platform-binaries=bin/cache/flutter_web_sdk/kernel',
'--invoker=flutter_tool',
..._kDart2jsLinuxArgs,
'-Ddart.vm.profile=true',
'--no-minify',
'--no-source-maps',
'-O4',
'--no-minify',
'--no-frequency-based-minification',
'-o',
environment.buildDir.childFile('main.dart.js').absolute.path,
......@@ -777,24 +765,11 @@ void main() {
processManager.addCommand(FakeCommand(
command: <String>[
'bin/cache/dart-sdk/bin/dartaotruntime',
'--disable-dart-dev',
'bin/cache/dart-sdk/bin/snapshots/dart2wasm_product.snapshot',
..._kDart2WasmLinuxArgs,
'-Ddart.vm.profile=true',
'-DFOO=bar',
'-DBAZ=qux',
'--packages=.dart_tool/package_config.json',
'--dart-sdk=bin/cache/dart-sdk',
'--multi-root-scheme',
'org-dartlang-sdk',
'--multi-root',
'bin/cache/flutter_web_sdk',
'--multi-root',
'bin/cache',
'--libraries-spec',
'bin/cache/flutter_web_sdk/libraries.json',
'--depfile=${depFile.absolute.path}',
environment.buildDir.childFile('main.dart').absolute.path,
environment.buildDir.childFile('main.dart.wasm').absolute.path,
])
......@@ -813,23 +788,10 @@ void main() {
processManager.addCommand(FakeCommand(
command: <String>[
'bin/cache/dart-sdk/bin/dartaotruntime',
'--disable-dart-dev',
'bin/cache/dart-sdk/bin/snapshots/dart2wasm_product.snapshot',
..._kDart2WasmLinuxArgs,
'-Ddart.vm.product=true',
'--omit-type-checks',
'--packages=.dart_tool/package_config.json',
'--dart-sdk=bin/cache/dart-sdk',
'--multi-root-scheme',
'org-dartlang-sdk',
'--multi-root',
'bin/cache/flutter_web_sdk',
'--multi-root',
'bin/cache',
'--libraries-spec',
'bin/cache/flutter_web_sdk/libraries.json',
'--depfile=${depFile.absolute.path}',
environment.buildDir.childFile('main.dart').absolute.path,
environment.buildDir.childFile('main.dart.wasm').absolute.path,
])
......@@ -849,29 +811,16 @@ void main() {
final File outputJsFile = environment.buildDir.childFile('main.dart.unopt.mjs');
processManager.addCommand(FakeCommand(
command: <String>[
'bin/cache/dart-sdk/bin/dartaotruntime',
'--disable-dart-dev',
'bin/cache/dart-sdk/bin/snapshots/dart2wasm_product.snapshot',
..._kDart2WasmLinuxArgs,
'-Ddart.vm.product=true',
'--packages=.dart_tool/package_config.json',
'--dart-sdk=bin/cache/dart-sdk',
'--multi-root-scheme',
'org-dartlang-sdk',
'--multi-root',
'bin/cache/flutter_web_sdk',
'--multi-root',
'bin/cache',
'--libraries-spec',
'bin/cache/flutter_web_sdk/libraries.json',
'--depfile=${depFile.absolute.path}',
environment.buildDir.childFile('main.dart').absolute.path,
environment.buildDir.childFile('main.dart.unopt.wasm').absolute.path,
], onRun: () => outputJsFile..createSync()..writeAsStringSync('foo')));
processManager.addCommand(FakeCommand(
command: <String>[
'bin/cache/dart-sdk/bin/utils/wasm-opt',
'Artifact.wasmOptBinary.TargetPlatform.web_javascript',
'-all',
'--closed-world',
'-tnh',
......@@ -902,24 +851,11 @@ void main() {
processManager.addCommand(FakeCommand(
command: <String>[
'bin/cache/dart-sdk/bin/dartaotruntime',
'--disable-dart-dev',
'bin/cache/dart-sdk/bin/snapshots/dart2wasm_product.snapshot',
..._kDart2WasmLinuxArgs,
'-Ddart.vm.product=true',
'--packages=.dart_tool/package_config.json',
'--dart-sdk=bin/cache/dart-sdk',
'--multi-root-scheme',
'org-dartlang-sdk',
'--multi-root',
'bin/cache/flutter_web_sdk',
'--multi-root',
'bin/cache',
'--libraries-spec',
'bin/cache/flutter_web_sdk/libraries.json',
'--import-shared-memory',
'--shared-memory-max-pages=32768',
'--depfile=${depFile.absolute.path}',
environment.buildDir.childFile('main.dart').absolute.path,
environment.buildDir.childFile('main.dart.wasm').absolute.path,
])
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment