// Copyright 2019 The Chromium 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:flutter_tools/src/artifacts.dart'; import 'package:flutter_tools/src/globals.dart'; import 'package:flutter_tools/src/web/compile.dart'; import 'package:mockito/mockito.dart'; import 'package:process/process.dart'; import '../src/common.dart'; import '../src/mocks.dart'; import '../src/testbed.dart'; void main() { group(WebCompiler, () { MockProcessManager mockProcessManager; Testbed testBed; setUp(() { mockProcessManager = MockProcessManager(); testBed = Testbed(setup: () async { final String engineDartPath = artifacts.getArtifactPath(Artifact.engineDartBinary); when(mockProcessManager.start(any)).thenAnswer((Invocation invocation) async => FakeProcess()); when(mockProcessManager.canRun(engineDartPath)).thenReturn(true); }, overrides: { ProcessManager: () => mockProcessManager, }); }); test('invokes dart2js with correct arguments', () => testBed.run(() async { await webCompiler.compile(target: 'lib/main.dart'); verify(mockProcessManager.start([ 'bin/cache/dart-sdk/bin/dart', 'bin/cache/dart-sdk/bin/snapshots/dart2js.dart.snapshot', 'lib/main.dart', '-o', 'build/web/main.dart.js', '--libraries-spec=bin/cache/flutter_web_sdk/libraries.json', '-m', ])).called(1); })); }); } class MockProcessManager extends Mock implements ProcessManager {}