diff --git a/packages/flutter_tools/lib/src/test/web_test_compiler.dart b/packages/flutter_tools/lib/src/test/web_test_compiler.dart index a8fceb5a6f3..36681573c57 100644 --- a/packages/flutter_tools/lib/src/test/web_test_compiler.dart +++ b/packages/flutter_tools/lib/src/test/web_test_compiler.dart @@ -219,7 +219,7 @@ class WebTestCompiler { ), 'compile', 'wasm', - '--packages=../../.dart_tool/package_config.json', + '--packages=${buildInfo.packageConfigPath}', '--extra-compiler-option=--platform=$platformFilePath', '--extra-compiler-option=--multi-root-scheme=org-dartlang-app', '--extra-compiler-option=--multi-root=${projectDirectory.childDirectory('test').path}', diff --git a/packages/flutter_tools/test/general.shard/test/web_test_compiler_test.dart b/packages/flutter_tools/test/general.shard/test/web_test_compiler_test.dart index b47abf43c9e..76bd0a40edc 100644 --- a/packages/flutter_tools/test/general.shard/test/web_test_compiler_test.dart +++ b/packages/flutter_tools/test/general.shard/test/web_test_compiler_test.dart @@ -94,4 +94,73 @@ void main() { expect(processManager.hasRemainingExpectations, isFalse); }); + + testUsingContext('web test compiler issues valid compile command (wasm)', () async { + final BufferLogger logger = BufferLogger.test(); + final MemoryFileSystem fileSystem = MemoryFileSystem.test(); + fileSystem.file('project/test/fake_test.dart').createSync(recursive: true); + fileSystem.file('build/out').createSync(recursive: true); + fileSystem.file('build/build/out.sources').createSync(recursive: true); + fileSystem.file('build/build/out.json') + ..createSync() + ..writeAsStringSync('{}'); + fileSystem.file('build/build/out.map').createSync(); + fileSystem.file('build/build/out.metadata').createSync(); + final FakePlatform platform = FakePlatform(environment: {}); + final Config config = Config( + Config.kFlutterSettings, + fileSystem: fileSystem, + logger: logger, + platform: platform, + ); + final FakeProcessManager processManager = FakeProcessManager.list([ + const FakeCommand( + command: [ + 'Artifact.engineDartBinary.TargetPlatform.web_javascript', + 'compile', + 'wasm', + '--packages=.dart_tool/package_config.json', + '--extra-compiler-option=--platform=HostArtifact.webPlatformKernelFolder/dart2wasm_platform.dill', + '--extra-compiler-option=--multi-root-scheme=org-dartlang-app', + '--extra-compiler-option=--multi-root=project/test', + '--extra-compiler-option=--multi-root=build', + '--extra-compiler-option=--enable-asserts', + '--extra-compiler-option=--no-inlining', + '-DFLUTTER_WEB_USE_SKIA=true', + '-DFLUTTER_WEB_USE_SKWASM=false', + '-O0', + '-o', + 'build/main.dart.wasm', + 'build/main.dart', + ], + stdout: 'result abc\nline0\nline1\nabc\nabc build/out 0', + ), + ]); + final WebTestCompiler compiler = WebTestCompiler( + logger: logger, + fileSystem: fileSystem, + platform: FakePlatform(environment: {}), + artifacts: Artifacts.test(), + processManager: processManager, + config: config, + ); + + const BuildInfo buildInfo = BuildInfo( + BuildMode.debug, + '', + treeShakeIcons: false, + packageConfigPath: '.dart_tool/package_config.json', + ); + + await compiler.initialize( + projectDirectory: fileSystem.directory('project'), + testOutputDir: 'build', + testFiles: ['project/test/fake_test.dart'], + buildInfo: buildInfo, + webRenderer: WebRendererMode.canvaskit, + useWasm: true, + ); + + expect(processManager.hasRemainingExpectations, isFalse); + }); }