Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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 | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 library test.source.error_processor; | |
|
Brian Wilkerson
2015/12/10 19:55:09
nit: "analyzer.test.source.error_processor_test"
pquitslund
2015/12/10 21:34:31
Done.
| |
| 6 | |
| 7 import 'package:analyzer/source/analysis_options_provider.dart'; | |
| 8 import 'package:analyzer/source/error_processor.dart'; | |
| 9 import 'package:analyzer/src/context/context.dart'; | |
| 10 import 'package:analyzer/src/generated/engine.dart'; | |
| 11 import 'package:analyzer/src/generated/error.dart'; | |
| 12 import 'package:analyzer/src/task/options.dart'; | |
| 13 import 'package:plugin/manager.dart'; | |
| 14 import 'package:plugin/plugin.dart'; | |
| 15 import 'package:unittest/unittest.dart'; | |
| 16 import 'package:yaml/src/yaml_node.dart'; | |
| 17 | |
| 18 import '../generated/test_support.dart'; | |
| 19 import '../utils.dart'; | |
| 20 | |
| 21 main() { | |
| 22 AnalysisError invalid_assignment = | |
| 23 new AnalysisError(new TestSource(), 0, 1, HintCode.INVALID_ASSIGNMENT, [ | |
| 24 ['x'], | |
| 25 ['y'] | |
| 26 ]); | |
| 27 | |
| 28 AnalysisError missing_return = | |
| 29 new AnalysisError(new TestSource(), 0, 1, HintCode.MISSING_RETURN, [ | |
| 30 ['x'] | |
| 31 ]); | |
| 32 | |
| 33 AnalysisError unused_local_variable = new AnalysisError( | |
| 34 new TestSource(), 0, 1, HintCode.UNUSED_LOCAL_VARIABLE, [ | |
| 35 ['x'] | |
| 36 ]); | |
| 37 | |
| 38 AnalysisError use_of_void_result = | |
| 39 new AnalysisError(new TestSource(), 0, 1, HintCode.USE_OF_VOID_RESULT, [ | |
| 40 ['x'] | |
| 41 ]); | |
| 42 | |
| 43 initializeTestEnvironment(); | |
| 44 oneTimeSetup(); | |
| 45 | |
| 46 setUp(() { | |
| 47 context = new TestContext(); | |
| 48 }); | |
| 49 | |
| 50 group('ErrorProcessorTest', () { | |
| 51 test('configureOptions', () { | |
| 52 configureOptions(''' | |
| 53 analyzer: | |
| 54 errors: | |
| 55 invalid_assignment: error # severity ERROR | |
| 56 missing_return: false # ignore | |
| 57 unused_local_variable: true # skipped | |
| 58 use_of_void_result: unsupported_action # skipped | |
| 59 '''); | |
| 60 expect(getProcessor(invalid_assignment).severity, ErrorSeverity.ERROR); | |
| 61 expect(getProcessor(missing_return).severity, isNull); | |
| 62 expect(getProcessor(unused_local_variable), isNull); | |
| 63 expect(getProcessor(use_of_void_result), isNull); | |
| 64 }); | |
| 65 }); | |
| 66 | |
| 67 group('ErrorConfigTest', () { | |
| 68 var config = ''' | |
| 69 analyzer: | |
| 70 errors: | |
| 71 invalid_assignment: unsupported_action # should be skipped | |
| 72 missing_return: false | |
| 73 unused_local_variable: error | |
| 74 '''; | |
| 75 | |
| 76 group('processing', () { | |
| 77 test('yaml map', () { | |
| 78 var options = optionsProvider.getOptionsFromString(config); | |
| 79 var errorConfig = new ErrorConfig(options['analyzer']['errors']); | |
| 80 expect(errorConfig.processors, hasLength(2)); | |
| 81 | |
| 82 // ignore | |
| 83 var missingReturnProcessor = errorConfig.processors | |
| 84 .firstWhere((p) => p.appliesTo(missing_return)); | |
| 85 expect(missingReturnProcessor.severity, isNull); | |
| 86 | |
| 87 // error | |
| 88 var unusedLocalProcessor = errorConfig.processors | |
| 89 .firstWhere((p) => p.appliesTo(unused_local_variable)); | |
| 90 expect(unusedLocalProcessor.severity, ErrorSeverity.ERROR); | |
| 91 | |
| 92 // skip | |
| 93 var invalidAssignmentProcessor = errorConfig.processors.firstWhere( | |
| 94 (p) => p.appliesTo(invalid_assignment), | |
| 95 orElse: () => null); | |
| 96 expect(invalidAssignmentProcessor, isNull); | |
| 97 }); | |
| 98 test('string map', () { | |
| 99 var options = { | |
| 100 'invalid_assignment': 'unsupported_action', // should be skipped | |
| 101 'missing_return': 'false', | |
| 102 'unused_local_variable': 'error' | |
| 103 }; | |
| 104 var errorConfig = new ErrorConfig(options); | |
| 105 expect(errorConfig.processors, hasLength(2)); | |
| 106 | |
| 107 // ignore | |
| 108 var missingReturnProcessor = errorConfig.processors | |
| 109 .firstWhere((p) => p.appliesTo(missing_return)); | |
| 110 expect(missingReturnProcessor.severity, isNull); | |
| 111 | |
| 112 // error | |
| 113 var unusedLocalProcessor = errorConfig.processors | |
| 114 .firstWhere((p) => p.appliesTo(unused_local_variable)); | |
| 115 expect(unusedLocalProcessor.severity, ErrorSeverity.ERROR); | |
| 116 | |
| 117 // skip | |
| 118 var invalidAssignmentProcessor = errorConfig.processors.firstWhere( | |
| 119 (p) => p.appliesTo(invalid_assignment), | |
| 120 orElse: () => null); | |
| 121 expect(invalidAssignmentProcessor, isNull); | |
| 122 }); | |
| 123 }); | |
| 124 }); | |
| 125 } | |
| 126 | |
| 127 TestContext context; | |
| 128 | |
| 129 AnalysisOptionsProvider optionsProvider = new AnalysisOptionsProvider(); | |
| 130 ErrorProcessor processor; | |
| 131 | |
| 132 void configureOptions(String options) { | |
| 133 Map<String, YamlNode> optionMap = | |
| 134 optionsProvider.getOptionsFromString(options); | |
| 135 configureContextOptions(context, optionMap); | |
| 136 } | |
| 137 | |
| 138 ErrorProcessor getProcessor(AnalysisError error) => | |
| 139 ErrorProcessor.getProcessor(context, error); | |
| 140 | |
| 141 void oneTimeSetup() { | |
| 142 List<Plugin> plugins = <Plugin>[]; | |
| 143 plugins.addAll(AnalysisEngine.instance.requiredPlugins); | |
| 144 plugins.add(AnalysisEngine.instance.commandLinePlugin); | |
| 145 plugins.add(AnalysisEngine.instance.optionsPlugin); | |
| 146 ExtensionManager manager = new ExtensionManager(); | |
| 147 manager.processPlugins(plugins); | |
| 148 } | |
| 149 | |
| 150 class TestContext extends AnalysisContextImpl {} | |
| OLD | NEW |