blob: 54f8be20c9310ff7db9881603b7927dbadfa9154 [file] [log] [blame]
// 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 'package:file/memory.dart';
import 'package:flutter_tools/src/artifacts.dart';
import 'package:flutter_tools/src/base/config.dart';
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/platform.dart';
import 'package:flutter_tools/src/build_info.dart';
import 'package:flutter_tools/src/test/web_test_compiler.dart';
import 'package:test/expect.dart';
import '../../src/context.dart';
void main() {
testUsingContext('web test compiler issues valid compile command', () 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: <String, String>{},
);
final Config config = Config(
Config.kFlutterSettings,
fileSystem: fileSystem,
logger: logger,
platform: platform,
);
final FakeProcessManager processManager = FakeProcessManager.list(<FakeCommand>[
FakeCommand(command: <Pattern>[
'Artifact.engineDartBinary.TargetPlatform.web_javascript',
'--disable-dart-dev',
'Artifact.frontendServerSnapshotForEngineDartSdk.TargetPlatform.web_javascript',
'--sdk-root',
'HostArtifact.flutterWebSdk/',
'--incremental',
'--target=dartdevc',
'--experimental-emit-debug-metadata',
'--output-dill',
'build/out',
'--packages',
'.dart_tool/package_config.json',
'-Ddart.vm.profile=false',
'-Ddart.vm.product=false',
'--enable-asserts',
'--filesystem-root',
'project/test',
'--filesystem-root',
'build',
'--filesystem-scheme',
'org-dartlang-app',
'--initialize-from-dill',
RegExp(r'^build\/(?:[a-z0-9]{32})\.cache\.dill$'),
'--platform',
'file:///HostArtifact.webPlatformKernelFolder/ddc_outline_sound.dill',
'--verbosity=error',
'--sound-null-safety'
], stdout: 'result abc\nline0\nline1\nabc\nabc build/out 0')
]);
final WebTestCompiler compiler = WebTestCompiler(
logger: logger,
fileSystem: fileSystem,
platform: FakePlatform(
environment: <String, String>{},
),
artifacts: Artifacts.test(),
processManager: processManager,
config: config,
);
const BuildInfo buildInfo = BuildInfo(
BuildMode.debug,
'',
treeShakeIcons: false,
);
await compiler.initialize(
projectDirectory: fileSystem.directory('project'),
testOutputDir: 'build',
testFiles: <String>['project/test/fake_test.dart'],
buildInfo: buildInfo,
);
expect(processManager.hasRemainingExpectations, isFalse);
});
}