Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(125)

Side by Side Diff: packages/analyzer/test/source/error_processor_test.dart

Issue 2990843002: Removed fixed dependencies (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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 analyzer.test.source.error_processor;
6
7 import 'package:analyzer/error/error.dart';
8 import 'package:analyzer/source/analysis_options_provider.dart';
9 import 'package:analyzer/source/error_processor.dart';
10 import 'package:analyzer/src/context/context.dart';
11 import 'package:analyzer/src/error/codes.dart';
12 import 'package:analyzer/src/generated/engine.dart';
13 import 'package:analyzer/src/task/options.dart';
14 import 'package:plugin/manager.dart';
15 import 'package:plugin/plugin.dart';
16 import 'package:unittest/unittest.dart';
17 import 'package:yaml/src/yaml_node.dart';
18
19 import '../generated/test_support.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 AnalysisError non_bool_operand = new AnalysisError(
44 new TestSource(), 0, 1, StaticTypeWarningCode.NON_BOOL_OPERAND, [
45 ['x']
46 ]);
47
48 oneTimeSetup();
49
50 setUp(() {
51 context = new TestContext();
52 });
53
54 group('ErrorProcessor', () {
55 test('configureOptions', () {
56 configureOptions('''
57 analyzer:
58 errors:
59 invalid_assignment: error # severity ERROR
60 missing_return: false # ignore
61 unused_local_variable: true # skipped
62 use_of_void_result: unsupported_action # skipped
63 ''');
64 expect(getProcessor(invalid_assignment).severity, ErrorSeverity.ERROR);
65 expect(getProcessor(missing_return).severity, isNull);
66 expect(getProcessor(unused_local_variable), isNull);
67 expect(getProcessor(use_of_void_result), isNull);
68 });
69
70 test('upgrades static type warnings to errors in strong mode', () {
71 configureOptions('''
72 analyzer:
73 strong-mode: true
74 ''');
75 expect(getProcessor(non_bool_operand).severity, ErrorSeverity.ERROR);
76 });
77
78 test('does not upgrade other warnings to errors in strong mode', () {
79 configureOptions('''
80 analyzer:
81 strong-mode: true
82 ''');
83 expect(getProcessor(unused_local_variable), isNull);
84 });
85 });
86
87 group('ErrorConfig', () {
88 var config = '''
89 analyzer:
90 errors:
91 invalid_assignment: unsupported_action # should be skipped
92 missing_return: false
93 unused_local_variable: error
94 ''';
95
96 group('processing', () {
97 test('yaml map', () {
98 var options = optionsProvider.getOptionsFromString(config);
99 var errorConfig =
100 new ErrorConfig((options['analyzer'] as YamlMap)['errors']);
101 expect(errorConfig.processors, hasLength(2));
102
103 // ignore
104 var missingReturnProcessor = errorConfig.processors
105 .firstWhere((p) => p.appliesTo(missing_return));
106 expect(missingReturnProcessor.severity, isNull);
107
108 // error
109 var unusedLocalProcessor = errorConfig.processors
110 .firstWhere((p) => p.appliesTo(unused_local_variable));
111 expect(unusedLocalProcessor.severity, ErrorSeverity.ERROR);
112
113 // skip
114 var invalidAssignmentProcessor = errorConfig.processors.firstWhere(
115 (p) => p.appliesTo(invalid_assignment),
116 orElse: () => null);
117 expect(invalidAssignmentProcessor, isNull);
118 });
119 test('string map', () {
120 var options = {
121 'invalid_assignment': 'unsupported_action', // should be skipped
122 'missing_return': 'false',
123 'unused_local_variable': 'error'
124 };
125 var errorConfig = new ErrorConfig(options);
126 expect(errorConfig.processors, hasLength(2));
127
128 // ignore
129 var missingReturnProcessor = errorConfig.processors
130 .firstWhere((p) => p.appliesTo(missing_return));
131 expect(missingReturnProcessor.severity, isNull);
132
133 // error
134 var unusedLocalProcessor = errorConfig.processors
135 .firstWhere((p) => p.appliesTo(unused_local_variable));
136 expect(unusedLocalProcessor.severity, ErrorSeverity.ERROR);
137
138 // skip
139 var invalidAssignmentProcessor = errorConfig.processors.firstWhere(
140 (p) => p.appliesTo(invalid_assignment),
141 orElse: () => null);
142 expect(invalidAssignmentProcessor, isNull);
143 });
144 });
145 });
146 }
147
148 TestContext context;
149
150 AnalysisOptionsProvider optionsProvider = new AnalysisOptionsProvider();
151 ErrorProcessor processor;
152
153 void configureOptions(String options) {
154 Map<String, YamlNode> optionMap =
155 optionsProvider.getOptionsFromString(options);
156 configureContextOptions(context, optionMap);
157 }
158
159 ErrorProcessor getProcessor(AnalysisError error) =>
160 ErrorProcessor.getProcessor(context, error);
161
162 void oneTimeSetup() {
163 List<Plugin> plugins = <Plugin>[];
164 plugins.addAll(AnalysisEngine.instance.requiredPlugins);
165 plugins.add(AnalysisEngine.instance.commandLinePlugin);
166 plugins.add(AnalysisEngine.instance.optionsPlugin);
167 ExtensionManager manager = new ExtensionManager();
168 manager.processPlugins(plugins);
169 }
170
171 class TestContext extends AnalysisContextImpl {}
OLDNEW
« no previous file with comments | « packages/analyzer/test/source/embedder_test.dart ('k') | packages/analyzer/test/source/package_map_provider_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698