| Index: pkg/analyzer_cli/test/driver_test.dart
|
| diff --git a/pkg/analyzer_cli/test/driver_test.dart b/pkg/analyzer_cli/test/driver_test.dart
|
| index e6bd81224131387dcb63218e4be07d50ee78cc5f..45d15291be472db0ddaa80edd2a63e1162ea45c6 100644
|
| --- a/pkg/analyzer_cli/test/driver_test.dart
|
| +++ b/pkg/analyzer_cli/test/driver_test.dart
|
| @@ -21,37 +21,10 @@ import 'package:plugin/plugin.dart';
|
| import 'package:unittest/unittest.dart';
|
| import 'package:yaml/src/yaml_node.dart';
|
|
|
| -// TODO(pq): fix tests to run safely on the bots
|
| -// https://github.com/dart-lang/sdk/issues/25001
|
| -main() {}
|
| -const emptyOptionsFile = 'test/data/empty_options.yaml';
|
| -
|
| -/// Start a driver for the given [source], optionally providing additional
|
| -/// [args] and an [options] file path. The value of [options] defaults to
|
| -/// an empty options file to avoid unwanted configuration from an otherwise
|
| -/// discovered options file.
|
| -void drive(String source,
|
| - {String options: emptyOptionsFile,
|
| - List<String> args: const <String>[]}) =>
|
| - new Driver().start(['--options', options, source]..addAll(args));
|
| +import 'utils.dart';
|
|
|
| -not_main() {
|
| +main() {
|
| group('Driver', () {
|
| - StringSink savedOutSink, savedErrorSink;
|
| - int savedExitCode;
|
| - setUp(() {
|
| - savedOutSink = outSink;
|
| - savedErrorSink = errorSink;
|
| - savedExitCode = exitCode;
|
| - outSink = new StringBuffer();
|
| - errorSink = new StringBuffer();
|
| - });
|
| - tearDown(() {
|
| - outSink = savedOutSink;
|
| - errorSink = savedErrorSink;
|
| - exitCode = savedExitCode;
|
| - });
|
| -
|
| group('options', () {
|
| test('custom processor', () {
|
| Driver driver = new Driver();
|
| @@ -59,14 +32,15 @@ not_main() {
|
| driver.userDefinedPlugins = [new TestPlugin(processor)];
|
| driver.start([
|
| '--options',
|
| - 'test/data/test_options.yaml',
|
| - 'test/data/test_file.dart'
|
| + path.join(testDirectory, 'data/test_options.yaml'),
|
| + path.join(testDirectory, 'data/test_file.dart')
|
| ]);
|
| expect(processor.options['test_plugin'], isNotNull);
|
| expect(processor.exception, isNull);
|
| });
|
| });
|
|
|
| + //TODO(pq): refactor to NOT set actual error codes to play nice with bots
|
| group('exit codes', () {
|
| StringSink savedOutSink, savedErrorSink;
|
| int savedExitCode;
|
| @@ -88,50 +62,50 @@ not_main() {
|
| });
|
|
|
| test('fatal hints', () {
|
| - drive('test/data/file_with_hint.dart', args: ['--fatal-hints']);
|
| + drive('data/file_with_hint.dart', args: ['--fatal-hints']);
|
| expect(exitCode, 3);
|
| });
|
|
|
| test('not fatal hints', () {
|
| - drive('test/data/file_with_hint.dart');
|
| + drive('data/file_with_hint.dart');
|
| expect(exitCode, 0);
|
| });
|
|
|
| test('fatal errors', () {
|
| - drive('test/data/file_with_error.dart');
|
| + drive('data/file_with_error.dart');
|
| expect(exitCode, 3);
|
| });
|
|
|
| test('not fatal warnings', () {
|
| - drive('test/data/file_with_warning.dart');
|
| + drive('data/file_with_warning.dart');
|
| expect(exitCode, 0);
|
| });
|
|
|
| test('fatal warnings', () {
|
| - drive('test/data/file_with_warning.dart', args: ['--fatal-warnings']);
|
| + drive('data/file_with_warning.dart', args: ['--fatal-warnings']);
|
| expect(exitCode, 3);
|
| });
|
|
|
| test('missing options file', () {
|
| - drive('test/data/test_file.dart', options: 'test/data/NO_OPTIONS_HERE');
|
| + drive('data/test_file.dart', options: 'data/NO_OPTIONS_HERE');
|
| expect(exitCode, 3);
|
| });
|
|
|
| test('missing dart file', () {
|
| - drive('test/data/NO_DART_FILE_HERE.dart');
|
| + drive('data/NO_DART_FILE_HERE.dart');
|
| expect(exitCode, 3);
|
| });
|
|
|
| test('part file', () {
|
| - drive('test/data/library_and_parts/part2.dart');
|
| + drive('data/library_and_parts/part2.dart');
|
| expect(exitCode, 3);
|
| });
|
|
|
| test('non-dangling part file', () {
|
| Driver driver = new Driver();
|
| driver.start([
|
| - 'test/data/library_and_parts/lib.dart',
|
| - 'test/data/library_and_parts/part1.dart',
|
| + path.join(testDirectory, 'data/library_and_parts/lib.dart'),
|
| + path.join(testDirectory, 'data/library_and_parts/part1.dart')
|
| ]);
|
| expect(exitCode, 0);
|
| });
|
| @@ -139,9 +113,9 @@ not_main() {
|
| test('extra part file', () {
|
| Driver driver = new Driver();
|
| driver.start([
|
| - 'test/data/library_and_parts/lib.dart',
|
| - 'test/data/library_and_parts/part1.dart',
|
| - 'test/data/library_and_parts/part2.dart',
|
| + path.join(testDirectory, 'data/library_and_parts/lib.dart'),
|
| + path.join(testDirectory, 'data/library_and_parts/part1.dart'),
|
| + path.join(testDirectory, 'data/library_and_parts/part2.dart')
|
| ]);
|
| expect(exitCode, 3);
|
| });
|
| @@ -150,20 +124,16 @@ not_main() {
|
| group('linter', () {
|
| group('lints in options', () {
|
| StringSink savedOutSink;
|
| - Driver driver;
|
|
|
| setUp(() {
|
| savedOutSink = outSink;
|
| outSink = new StringBuffer();
|
|
|
| - driver = new Driver();
|
| - driver.start([
|
| - '--options',
|
| - 'test/data/linter_project/.analysis_options',
|
| - '--lints',
|
| - 'test/data/linter_project/test_file.dart'
|
| - ]);
|
| + drive('data/linter_project/test_file.dart',
|
| + options: 'data/linter_project/.analysis_options',
|
| + args: ['--lints']);
|
| });
|
| +
|
| tearDown(() {
|
| outSink = savedOutSink;
|
| });
|
| @@ -185,19 +155,14 @@ not_main() {
|
|
|
| group('default lints', () {
|
| StringSink savedOutSink;
|
| - Driver driver;
|
|
|
| setUp(() {
|
| savedOutSink = outSink;
|
| outSink = new StringBuffer();
|
|
|
| - driver = new Driver();
|
| - driver.start([
|
| - '--lints',
|
| - 'test/data/linter_project/test_file.dart',
|
| - '--options',
|
| - 'test/data/linter_project/.analysis_options'
|
| - ]);
|
| + drive('data/linter_project/test_file.dart',
|
| + options: 'data/linter_project/.analysis_options',
|
| + args: ['--lints']);
|
| });
|
| tearDown(() {
|
| outSink = savedOutSink;
|
| @@ -220,18 +185,13 @@ not_main() {
|
|
|
| group('no `--lints` flag (none in options)', () {
|
| StringSink savedOutSink;
|
| - Driver driver;
|
|
|
| setUp(() {
|
| savedOutSink = outSink;
|
| outSink = new StringBuffer();
|
|
|
| - driver = new Driver();
|
| - driver.start([
|
| - 'test/data/no_lints_project/test_file.dart',
|
| - '--options',
|
| - 'test/data/no_lints_project/.analysis_options'
|
| - ]);
|
| + drive('data/no_lints_project/test_file.dart',
|
| + options: 'data/no_lints_project/.analysis_options');
|
| });
|
| tearDown(() {
|
| outSink = savedOutSink;
|
| @@ -279,18 +239,13 @@ linter:
|
| group('options processing', () {
|
| group('error filters', () {
|
| StringSink savedOutSink;
|
| - Driver driver;
|
|
|
| setUp(() {
|
| savedOutSink = outSink;
|
| outSink = new StringBuffer();
|
|
|
| - driver = new Driver();
|
| - driver.start([
|
| - 'test/data/options_tests_project/test_file.dart',
|
| - '--options',
|
| - 'test/data/options_tests_project/.analysis_options'
|
| - ]);
|
| + drive('data/options_tests_project/test_file.dart',
|
| + options: 'data/options_tests_project/.analysis_options');
|
| });
|
| tearDown(() {
|
| outSink = savedOutSink;
|
| @@ -398,8 +353,8 @@ main() {}
|
| BootLoader loader = new BootLoader();
|
| loader.createImage([
|
| '--options',
|
| - 'test/data/bad_plugin_options.yaml',
|
| - 'test/data/test_file.dart'
|
| + path.join(testDirectory, 'data/bad_plugin_options.yaml'),
|
| + path.join(testDirectory, 'data/test_file.dart')
|
| ]);
|
| expect(
|
| errorSink.toString(),
|
| @@ -411,8 +366,8 @@ main() {}
|
| BootLoader loader = new BootLoader();
|
| Image image = loader.createImage([
|
| '--options',
|
| - 'test/data/plugin_options.yaml',
|
| - 'test/data/test_file.dart'
|
| + path.join(testDirectory, 'data/plugin_options.yaml'),
|
| + path.join(testDirectory, 'data/test_file.dart')
|
| ]);
|
| var plugins = image.config.plugins;
|
| expect(plugins, hasLength(1));
|
| @@ -444,6 +399,26 @@ main() {}
|
| });
|
| }
|
|
|
| +const emptyOptionsFile = 'data/empty_options.yaml';
|
| +
|
| +/// Shared driver.
|
| +Driver driver;
|
| +
|
| +/// Start a driver for the given [source], optionally providing additional
|
| +/// [args] and an [options] file path. The value of [options] defaults to
|
| +/// an empty options file to avoid unwanted configuration from an otherwise
|
| +/// discovered options file.
|
| +void drive(String source,
|
| + {String options: emptyOptionsFile, List<String> args: const <String>[]}) {
|
| + driver = new Driver();
|
| + var cmd = [
|
| + '--options',
|
| + path.join(testDirectory, options),
|
| + path.join(testDirectory, source)
|
| + ]..addAll(args);
|
| + driver.start(cmd);
|
| +}
|
| +
|
| Map<String, YamlNode> parseOptions(String src) =>
|
| new AnalysisOptionsProvider().getOptionsFromString(src);
|
|
|
|
|