OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library analyzer_cli.test.driver; | 5 library analyzer_cli.test.driver; |
6 | 6 |
7 import 'dart:io'; | 7 import 'dart:io'; |
8 | 8 |
9 import 'package:analyzer/error/error.dart'; | 9 import 'package:analyzer/error/error.dart'; |
10 import 'package:analyzer/plugin/options.dart'; | |
11 import 'package:analyzer/source/analysis_options_provider.dart'; | 10 import 'package:analyzer/source/analysis_options_provider.dart'; |
12 import 'package:analyzer/source/error_processor.dart'; | 11 import 'package:analyzer/source/error_processor.dart'; |
13 import 'package:analyzer/src/error/codes.dart'; | 12 import 'package:analyzer/src/error/codes.dart'; |
14 import 'package:analyzer/src/generated/engine.dart'; | 13 import 'package:analyzer/src/generated/engine.dart'; |
15 import 'package:analyzer/src/generated/source.dart'; | 14 import 'package:analyzer/src/generated/source.dart'; |
16 import 'package:analyzer/src/services/lint.dart'; | 15 import 'package:analyzer/src/services/lint.dart'; |
17 import 'package:analyzer_cli/src/driver.dart'; | 16 import 'package:analyzer_cli/src/driver.dart'; |
18 import 'package:analyzer_cli/src/options.dart'; | 17 import 'package:analyzer_cli/src/options.dart'; |
19 import 'package:path/path.dart' as path; | 18 import 'package:path/path.dart' as path; |
20 import 'package:plugin/plugin.dart'; | |
21 import 'package:test/test.dart'; | 19 import 'package:test/test.dart'; |
22 import 'package:yaml/src/yaml_node.dart'; | 20 import 'package:yaml/src/yaml_node.dart'; |
23 | 21 |
24 import 'utils.dart'; | 22 import 'utils.dart'; |
25 | 23 |
26 main() { | 24 main() { |
27 StringSink savedOutSink, savedErrorSink; | 25 StringSink savedOutSink, savedErrorSink; |
28 int savedExitCode; | 26 int savedExitCode; |
29 ExitHandler savedExitHandler; | 27 ExitHandler savedExitHandler; |
30 | 28 |
(...skipping 15 matching lines...) Expand all Loading... |
46 exitCode = savedExitCode; | 44 exitCode = savedExitCode; |
47 exitHandler = savedExitHandler; | 45 exitHandler = savedExitHandler; |
48 } | 46 } |
49 | 47 |
50 setUp(() => _setUp()); | 48 setUp(() => _setUp()); |
51 | 49 |
52 tearDown(() => _tearDown()); | 50 tearDown(() => _tearDown()); |
53 | 51 |
54 group('Driver', () { | 52 group('Driver', () { |
55 group('options', () { | 53 group('options', () { |
56 test('custom processor', () { | |
57 Driver driver = new Driver(); | |
58 TestProcessor processor = new TestProcessor(); | |
59 driver.userDefinedPlugins = [new TestPlugin(processor)]; | |
60 driver.start([ | |
61 '--options', | |
62 path.join(testDirectory, 'data/test_options.yaml'), | |
63 path.join(testDirectory, 'data/test_file.dart') | |
64 ]); | |
65 expect(processor.options['test_plugin'], isNotNull); | |
66 expect(processor.exception, isNull); | |
67 }); | |
68 test('todos', () { | 54 test('todos', () { |
69 drive('data/file_with_todo.dart'); | 55 drive('data/file_with_todo.dart'); |
70 expect(outSink.toString().contains('[info]'), isFalse); | 56 expect(outSink.toString().contains('[info]'), isFalse); |
71 }); | 57 }); |
72 }); | 58 }); |
73 | 59 |
74 group('exit codes', () { | 60 group('exit codes', () { |
75 test('fatal hints', () { | 61 test('fatal hints', () { |
76 drive('data/file_with_hint.dart', args: ['--fatal-hints']); | 62 drive('data/file_with_hint.dart', args: ['--fatal-hints']); |
77 expect(exitCode, 3); | 63 expect(exitCode, 3); |
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
514 throw new Exception('Could not find an SDK directory containing summaries.' | 500 throw new Exception('Could not find an SDK directory containing summaries.' |
515 ' Tried: ${triedDirectories.toList()}'); | 501 ' Tried: ${triedDirectories.toList()}'); |
516 } | 502 } |
517 | 503 |
518 Map<String, YamlNode> parseOptions(String src) => | 504 Map<String, YamlNode> parseOptions(String src) => |
519 new AnalysisOptionsProvider().getOptionsFromString(src); | 505 new AnalysisOptionsProvider().getOptionsFromString(src); |
520 | 506 |
521 ErrorProcessor processorFor(AnalysisError error) => | 507 ErrorProcessor processorFor(AnalysisError error) => |
522 processors.firstWhere((p) => p.appliesTo(error)); | 508 processors.firstWhere((p) => p.appliesTo(error)); |
523 | 509 |
524 class TestPlugin extends Plugin { | |
525 TestProcessor processor; | |
526 TestPlugin(this.processor); | |
527 | |
528 @override | |
529 String get uniqueIdentifier => 'test_plugin.core'; | |
530 | |
531 @override | |
532 void registerExtensionPoints(RegisterExtensionPoint register) { | |
533 // None | |
534 } | |
535 | |
536 @override | |
537 void registerExtensions(RegisterExtension register) { | |
538 register(OPTIONS_PROCESSOR_EXTENSION_POINT_ID, processor); | |
539 } | |
540 } | |
541 | |
542 class TestProcessor extends OptionsProcessor { | |
543 Map<String, Object> options; | |
544 Exception exception; | |
545 | |
546 @override | |
547 void onError(Exception exception) { | |
548 this.exception = exception; | |
549 } | |
550 | |
551 @override | |
552 void optionsProcessed(AnalysisContext context, Map<String, Object> options) { | |
553 this.options = options; | |
554 } | |
555 } | |
556 | |
557 class TestSource implements Source { | 510 class TestSource implements Source { |
558 TestSource(); | 511 TestSource(); |
559 | 512 |
560 @override | 513 @override |
561 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 514 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
562 } | 515 } |
OLD | NEW |