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 test.analysis.notification.analysis_options; | 5 library test.analysis.notification.analysis_options; |
6 | 6 |
7 import 'package:analysis_server/plugin/protocol/protocol.dart'; | 7 import 'package:analysis_server/plugin/protocol/protocol.dart'; |
8 import 'package:analysis_server/src/constants.dart'; | 8 import 'package:analysis_server/src/constants.dart'; |
9 import 'package:analysis_server/src/domain_analysis.dart'; | 9 import 'package:analysis_server/src/domain_analysis.dart'; |
10 import 'package:analyzer/src/generated/engine.dart'; | 10 import 'package:analyzer/src/generated/engine.dart'; |
(...skipping 25 matching lines...) Expand all Loading... |
36 }'''; | 36 }'''; |
37 | 37 |
38 List<AnalysisError> get errors => filesErrors[testFile]; | 38 List<AnalysisError> get errors => filesErrors[testFile]; |
39 | 39 |
40 List<AnalysisError> get optionsFileErrors => filesErrors[optionsFilePath]; | 40 List<AnalysisError> get optionsFileErrors => filesErrors[optionsFilePath]; |
41 | 41 |
42 String get optionsFilePath => '$projectPath/.analysis_options'; | 42 String get optionsFilePath => '$projectPath/.analysis_options'; |
43 | 43 |
44 AnalysisContext get testContext => server.getContainingContext(testFile); | 44 AnalysisContext get testContext => server.getContainingContext(testFile); |
45 | 45 |
| 46 List<AnalysisError> get testFileErrors => filesErrors[testFile]; |
| 47 |
46 void addOptionsFile(String contents) { | 48 void addOptionsFile(String contents) { |
47 addFile(optionsFilePath, contents); | 49 addFile(optionsFilePath, contents); |
48 } | 50 } |
49 | 51 |
50 void deleteFile(String filePath) { | 52 void deleteFile(String filePath) { |
51 resourceProvider.deleteFile(filePath); | 53 resourceProvider.deleteFile(filePath); |
52 } | 54 } |
53 | 55 |
54 @override | 56 @override |
55 void processNotification(Notification notification) { | 57 void processNotification(Notification notification) { |
(...skipping 20 matching lines...) Expand all Loading... |
76 void setUp() { | 78 void setUp() { |
77 super.setUp(); | 79 super.setUp(); |
78 server.handlers = [new AnalysisDomainHandler(server)]; | 80 server.handlers = [new AnalysisDomainHandler(server)]; |
79 wasTaskModelEnabled = AnalysisEngine.instance.useTaskModel; | 81 wasTaskModelEnabled = AnalysisEngine.instance.useTaskModel; |
80 AnalysisEngine.instance.useTaskModel = true; | 82 AnalysisEngine.instance.useTaskModel = true; |
81 } | 83 } |
82 | 84 |
83 @override | 85 @override |
84 void tearDown() { | 86 void tearDown() { |
85 AnalysisEngine.instance.useTaskModel = wasTaskModelEnabled; | 87 AnalysisEngine.instance.useTaskModel = wasTaskModelEnabled; |
| 88 filesErrors[optionsFilePath] = []; |
| 89 filesErrors[testFile] = []; |
86 super.tearDown(); | 90 super.tearDown(); |
87 } | 91 } |
88 | 92 |
| 93 test_error_filter() async { |
| 94 addOptionsFile(''' |
| 95 analyzer: |
| 96 errors: |
| 97 unused_local_variable: ignore |
| 98 '''); |
| 99 |
| 100 addTestFile(''' |
| 101 main() { |
| 102 String unused = ""; |
| 103 } |
| 104 '''); |
| 105 |
| 106 setAnalysisRoot(); |
| 107 |
| 108 await waitForTasksFinished(); |
| 109 |
| 110 // Verify options file. |
| 111 expect(optionsFileErrors, hasLength(0)); |
| 112 |
| 113 // Verify test file. |
| 114 expect(testFileErrors, hasLength(0)); |
| 115 } |
| 116 |
| 117 test_error_filter_removed() async { |
| 118 addOptionsFile(''' |
| 119 analyzer: |
| 120 errors: |
| 121 unused_local_variable: ignore |
| 122 '''); |
| 123 |
| 124 addTestFile(''' |
| 125 main() { |
| 126 String unused = ""; |
| 127 } |
| 128 '''); |
| 129 |
| 130 setAnalysisRoot(); |
| 131 |
| 132 await waitForTasksFinished(); |
| 133 |
| 134 // Verify options file. |
| 135 expect(optionsFileErrors, hasLength(0)); |
| 136 |
| 137 // Verify test file. |
| 138 expect(testFileErrors, hasLength(0)); |
| 139 |
| 140 addOptionsFile(''' |
| 141 analyzer: |
| 142 errors: |
| 143 # unused_local_variable: ignore |
| 144 '''); |
| 145 |
| 146 await pumpEventQueue(); |
| 147 await waitForTasksFinished(); |
| 148 |
| 149 // Verify options file. |
| 150 expect(optionsFileErrors, hasLength(0)); |
| 151 |
| 152 // Verify test file. |
| 153 expect(testFileErrors, hasLength(1)); |
| 154 } |
| 155 |
89 test_lint_options_changes() async { | 156 test_lint_options_changes() async { |
90 addOptionsFile(''' | 157 addOptionsFile(''' |
91 linter: | 158 linter: |
92 rules: | 159 rules: |
93 - camel_case_types | 160 - camel_case_types |
94 - constant_identifier_names | 161 - constant_identifier_names |
95 '''); | 162 '''); |
96 | 163 |
97 addTestFile(testSource); | 164 addTestFile(testSource); |
98 setAnalysisRoot(); | 165 setAnalysisRoot(); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 filesErrors[testFile] = []; | 245 filesErrors[testFile] = []; |
179 | 246 |
180 deleteFile(optionsFilePath); | 247 deleteFile(optionsFilePath); |
181 | 248 |
182 await pumpEventQueue(); | 249 await pumpEventQueue(); |
183 await waitForTasksFinished(); | 250 await waitForTasksFinished(); |
184 | 251 |
185 verifyStrongMode(enabled: false); | 252 verifyStrongMode(enabled: false); |
186 } | 253 } |
187 | 254 |
188 test_strong_mode_changed() async { | 255 test_strong_mode_changed_off() async { |
189 setStrongMode(true); | 256 setStrongMode(true); |
190 | 257 |
191 addTestFile(testSource); | 258 addTestFile(testSource); |
192 setAnalysisRoot(); | 259 setAnalysisRoot(); |
193 | 260 |
194 await waitForTasksFinished(); | 261 await waitForTasksFinished(); |
195 | 262 |
196 verifyStrongMode(enabled: true); | 263 verifyStrongMode(enabled: true); |
197 | 264 |
198 // Clear errors. | 265 // Clear errors. |
199 filesErrors[testFile] = []; | 266 filesErrors[testFile] = []; |
200 | 267 |
201 setStrongMode(false); | 268 setStrongMode(false); |
202 | 269 |
203 await pumpEventQueue(); | 270 await pumpEventQueue(); |
204 await waitForTasksFinished(); | 271 await waitForTasksFinished(); |
205 | 272 |
206 verifyStrongMode(enabled: false); | 273 verifyStrongMode(enabled: false); |
207 } | 274 } |
208 | 275 |
| 276 test_strong_mode_changed_on() async { |
| 277 setStrongMode(false); |
| 278 |
| 279 addTestFile(testSource); |
| 280 setAnalysisRoot(); |
| 281 |
| 282 await waitForTasksFinished(); |
| 283 |
| 284 verifyStrongMode(enabled: false); |
| 285 |
| 286 setStrongMode(true); |
| 287 |
| 288 await pumpEventQueue(); |
| 289 await waitForTasksFinished(); |
| 290 |
| 291 verifyStrongMode(enabled: true); |
| 292 } |
| 293 |
209 void verifyLintsEnabled(List<String> lints) { | 294 void verifyLintsEnabled(List<String> lints) { |
210 expect(testContext.analysisOptions.lint, true); | 295 expect(testContext.analysisOptions.lint, true); |
211 var rules = getLints(testContext).map((rule) => rule.name); | 296 var rules = getLints(testContext).map((rule) => rule.name); |
212 expect(rules, unorderedEquals(lints)); | 297 expect(rules, unorderedEquals(lints)); |
213 } | 298 } |
214 | 299 |
215 verifyStrongMode({bool enabled}) { | 300 verifyStrongMode({bool enabled}) { |
216 // Verify strong-mode enabled. | 301 // Verify strong-mode enabled. |
217 expect(testContext.analysisOptions.strongMode, enabled); | 302 expect(testContext.analysisOptions.strongMode, enabled); |
218 | 303 |
219 if (enabled) { | 304 if (enabled) { |
220 // Should produce a warning and an error. | 305 // Should produce a warning and an error. |
221 expect( | 306 expect( |
222 errors.map((error) => error.type), | 307 errors.map((error) => error.type), |
223 unorderedEquals([ | 308 unorderedEquals([ |
224 AnalysisErrorType.STATIC_TYPE_WARNING, | 309 AnalysisErrorType.STATIC_TYPE_WARNING, |
225 AnalysisErrorType.COMPILE_TIME_ERROR | 310 AnalysisErrorType.COMPILE_TIME_ERROR |
226 ])); | 311 ])); |
227 } else { | 312 } else { |
228 // Should only produce a hint. | 313 // Should only produce a hint. |
229 expect(errors.map((error) => error.type), | 314 expect(errors.map((error) => error.type), |
230 unorderedEquals([AnalysisErrorType.HINT])); | 315 unorderedEquals([AnalysisErrorType.HINT])); |
231 } | 316 } |
232 } | 317 } |
233 } | 318 } |
OLD | NEW |