Chromium Code Reviews| 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); |
| +} |