| Index: tests/compiler/dart2js/command_line_test.dart
|
| diff --git a/tests/compiler/dart2js/command_line_test.dart b/tests/compiler/dart2js/command_line_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fe2842e997d4ad64b2f4016875c65116e56d043b
|
| --- /dev/null
|
| +++ b/tests/compiler/dart2js/command_line_test.dart
|
| @@ -0,0 +1,80 @@
|
| +// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +// Test the command line options of dart2js.
|
| +
|
| +import 'dart:async';
|
| +
|
| +import 'package:async_helper/async_helper.dart';
|
| +import 'package:expect/expect.dart';
|
| +
|
| +import 'package:compiler/compiler_new.dart' as api;
|
| +import 'package:compiler/src/commandline_options.dart';
|
| +import 'package:compiler/src/dart2js.dart' as entry;
|
| +import 'package:compiler/src/options.dart' show CompilerOptions;
|
| +
|
| +main() {
|
| + asyncTest(() async {
|
| + await test([], exitCode: 1);
|
| + await test(['foo.dart']);
|
| + await test([Flags.resolveOnly, 'foo.dart'],
|
| + resolveOnly: true,
|
| + resolutionOutput: Uri.base.resolve('out.data'));
|
| + await test(['--resolution-input=bar.dart', 'foo.dart'],
|
| + resolutionInputs: [Uri.base.resolve('bar.dart')]);
|
| + await test([Flags.resolveOnly, '--resolution-input=bar.dart', 'foo.dart'],
|
| + resolveOnly: true,
|
| + resolutionOutput: Uri.base.resolve('out.data'),
|
| + resolutionInputs: [Uri.base.resolve('bar.dart')]);
|
| + await test([Flags.resolveOnly, '--resolution-input=out.data', 'foo.dart'],
|
| + exitCode: 1);
|
| + });
|
| +}
|
| +
|
| +Future test(List<String> arguments,
|
| + {int exitCode,
|
| + bool resolveOnly: false,
|
| + Uri resolutionOutput,
|
| + List<Uri> resolutionInputs}) async {
|
| + print('--------------------------------------------------------------------');
|
| + print('dart2js ${arguments.join(' ')}');
|
| + print('--------------------------------------------------------------------');
|
| + entry.CompileFunc oldCompileFunc = entry.compileFunc;
|
| + entry.ExitFunc oldExitFunc = entry.exitFunc;
|
| +
|
| + CompilerOptions options;
|
| + int actualExitCode;
|
| + entry.compileFunc = (_options, input, diagnostics, output) {
|
| + options = _options;
|
| + return new Future<api.CompilationResult>.value(
|
| + new api.CompilationResult(null));
|
| + };
|
| + entry.exitFunc = (_exitCode) {
|
| + actualExitCode = _exitCode;
|
| + throw 'exited';
|
| + };
|
| + try {
|
| + await entry.compilerMain(arguments);
|
| + } catch (e, s) {
|
| + Expect.equals('exited', e, "Unexpected exception: $e\n$s");
|
| + }
|
| + Expect.equals(exitCode, actualExitCode, "Unexpected exit code");
|
| + if (actualExitCode == null) {
|
| + Expect.isNotNull(options, "Missing options object");
|
| + Expect.equals(resolveOnly, options.resolveOnly,
|
| + "Unexpected resolveOnly value");
|
| + Expect.equals(resolutionOutput, options.resolutionOutput,
|
| + "Unexpected resolutionOutput value");
|
| + if (resolutionInputs == null) {
|
| + Expect.isNull(options.resolutionInputs,
|
| + "Unexpected resolutionInputs value");
|
| + } else {
|
| + Expect.listEquals(resolutionInputs, options.resolutionInputs,
|
| + "Unexpected resolutionInputs value");
|
| + }
|
| + }
|
| +
|
| + entry.compileFunc = oldCompileFunc;
|
| + entry.exitFunc = oldExitFunc;
|
| +}
|
|
|