Index: pkg/analysis_server/test/services/linter/linter_test.dart |
diff --git a/pkg/analysis_server/test/services/linter/linter_test.dart b/pkg/analysis_server/test/services/linter/linter_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e020c711379e8f4a66778741e449f33363d481be |
--- /dev/null |
+++ b/pkg/analysis_server/test/services/linter/linter_test.dart |
@@ -0,0 +1,79 @@ |
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+library test.services.linter; |
+ |
+import 'package:analysis_server/src/services/linter/linter.dart'; |
+import 'package:analyzer/analyzer.dart'; |
+import 'package:analyzer/source/analysis_options_provider.dart'; |
+import 'package:analyzer/src/generated/engine.dart'; |
+import 'package:analyzer/src/generated/source.dart'; |
+import 'package:analyzer/src/task/options.dart'; |
+import 'package:test_reflective_loader/test_reflective_loader.dart'; |
+import 'package:unittest/unittest.dart'; |
+ |
+import '../../utils.dart'; |
+ |
+main() { |
+ initializeTestEnvironment(); |
+ defineReflectiveTests(LinterRuleOptionsValidatorTest); |
+} |
+ |
+@reflectiveTest |
+class LinterRuleOptionsValidatorTest { |
+ final CompositeValidator validator = |
+ new CompositeValidator([new LinterRuleOptionsValidator()]); |
Brian Wilkerson
2015/10/24 15:32:17
Is it necessary to wrap the LinterRuleOptionsValid
pquitslund
2015/10/26 15:48:59
Nope. And done.
|
+ final AnalysisOptionsProvider optionsProvider = new AnalysisOptionsProvider(); |
+ |
+ RecordingErrorListener recorder; |
+ ErrorReporter reporter; |
+ |
+ List<AnalysisError> get errors => recorder.errors; |
+ |
+ setUp() { |
+ recorder = new RecordingErrorListener(); |
+ reporter = new ErrorReporter(recorder, new _TestSource()); |
+ } |
+ |
+ test_linter_defined_rules() { |
+ validate( |
+ ''' |
+linter: |
+ rules: |
+ - camel_case_types |
+ ''', |
+ []); |
+ } |
+ |
+ test_linter_no_rules() { |
+ validate( |
+ ''' |
+linter: |
+ rules: |
+ ''', |
+ []); |
+ } |
+ |
+ test_linter_undefined_rule() { |
+ validate( |
+ ''' |
+linter: |
+ rules: |
+ - undefined |
+ ''', |
+ [UNDEFINED_LINT_WARNING]); |
+ } |
+ |
+ validate(String source, List<AnalysisOptionsErrorCode> expected) { |
+ var options = optionsProvider.getOptionsFromString(source); |
+ validator.validate(reporter, options); |
+ expect(errors.map((AnalysisError e) => e.errorCode), |
+ unorderedEquals(expected)); |
+ } |
+} |
+ |
+class _TestSource implements Source { |
+ @override |
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
+} |