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

Unified Diff: packages/analyzer/test/source/analysis_options_provider_test.dart

Issue 2990843002: Removed fixed dependencies (Closed)
Patch Set: Created 3 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « packages/analyzer/test/resource_utils.dart ('k') | packages/analyzer/test/source/config_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: packages/analyzer/test/source/analysis_options_provider_test.dart
diff --git a/packages/analyzer/test/source/analysis_options_provider_test.dart b/packages/analyzer/test/source/analysis_options_provider_test.dart
index a251770d8568357de6f234e392e527a7916b18d3..6e1b339a15feadd5117db506758292585481c3b0 100644
--- a/packages/analyzer/test/source/analysis_options_provider_test.dart
+++ b/packages/analyzer/test/source/analysis_options_provider_test.dart
@@ -2,108 +2,224 @@
// 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.source.analysis_options_provider;
+library analyzer.test.source.analysis_options_provider_test;
+import 'dart:core';
+
+import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/memory_file_system.dart';
import 'package:analyzer/source/analysis_options_provider.dart';
+import 'package:analyzer/src/generated/engine.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'package:unittest/unittest.dart';
import 'package:yaml/yaml.dart';
+import '../resource_utils.dart';
import '../utils.dart';
main() {
initializeTestEnvironment();
+ defineReflectiveTests(AnalysisOptionsProviderOldTest);
+ defineReflectiveTests(AnalysisOptionsProviderNewTest);
group('AnalysisOptionsProvider', () {
- setUp(() {
- buildResourceProvider();
- });
- tearDown(() {
- clearResourceProvider();
- });
- test('test_simple', () {
- var optionsProvider = new AnalysisOptionsProvider();
- Map<String, YamlNode> options =
- optionsProvider.getOptions(resourceProvider.getFolder('/'));
- expect(options.length, equals(1));
- expect(options['analyzer'], isNotNull);
- YamlMap analyzer = options['analyzer'];
- expect(analyzer.length, equals(1));
- expect(analyzer['ignore'], isNotNull);
- YamlList ignore = analyzer['ignore'];
- expect(ignore.length, equals(2));
- expect(ignore[0], equals('ignoreme.dart'));
- expect(ignore[1], equals('sdk_ext/**'));
- });
- test('test_doesnotexist', () {
+ void expectMergesTo(String defaults, String overrides, String expected) {
var optionsProvider = new AnalysisOptionsProvider();
- Map<String, YamlNode> options =
- optionsProvider.getOptions(resourceProvider.getFolder('/empty'));
- expect(options.length, equals(0));
+ var defaultOptions = optionsProvider.getOptionsFromString(defaults);
+ var overrideOptions = optionsProvider.getOptionsFromString(overrides);
+ var merged = optionsProvider.merge(defaultOptions, overrideOptions);
+ expect(merged, optionsProvider.getOptionsFromString(expected));
+ }
+
+ group('merging', () {
+ test('integration', () {
+ expectMergesTo(
+ '''
+analyzer:
+ plugins:
+ - p1
+ - p2
+ errors:
+ unused_local_variable : error
+linter:
+ rules:
+ - camel_case_types
+ - one_member_abstracts
+''',
+ '''
+analyzer:
+ plugins:
+ - p3
+ errors:
+ unused_local_variable : ignore # overrides error
+linter:
+ rules:
+ one_member_abstracts: false # promotes and disables
+ always_specify_return_types: true
+''',
+ '''
+analyzer:
+ plugins:
+ - p1
+ - p2
+ - p3
+ errors:
+ unused_local_variable : ignore
+linter:
+ rules:
+ camel_case_types: true
+ one_member_abstracts: false
+ always_specify_return_types: true
+''');
+ });
});
});
+
group('AnalysisOptionsProvider', () {
- setUp(() {
- buildResourceProvider(true);
- });
- tearDown(() {
- clearResourceProvider();
- });
- test('test_empty', () {
+ test('test_bad_yaml (1)', () {
+ var src = '''
+ analyzer: # <= bang
+strong-mode: true
+''';
+
var optionsProvider = new AnalysisOptionsProvider();
- Map<String, YamlNode> options =
- optionsProvider.getOptions(resourceProvider.getFolder('/'));
- expect(options, isNotNull);
+ expect(() => optionsProvider.getOptionsFromString(src),
+ throwsA(new isInstanceOf<OptionsFormatException>()));
});
- });
- group('AnalysisOptionsProvider', () {
- setUp(() {
- buildResourceProvider(false, true);
- });
- tearDown(() {
- clearResourceProvider();
- });
- test('test_invalid', () {
+
+ test('test_bad_yaml (2)', () {
+ var src = '''
+analyzer:
+ strong-mode:true # missing space (sdk/issues/24885)
+''';
+
var optionsProvider = new AnalysisOptionsProvider();
- bool exceptionCaught = false;
- try {
- Map<String, YamlNode> options =
- optionsProvider.getOptions(resourceProvider.getFolder('/'));
- expect(options, isNotNull);
- } catch (e) {
- exceptionCaught = true;
- }
- expect(exceptionCaught, isTrue);
+ // Should not throw an exception.
+ var options = optionsProvider.getOptionsFromString(src);
+ // Should return a non-null options list.
+ expect(options, isNotNull);
});
});
}
-MemoryResourceProvider resourceProvider;
-
-buildResourceProvider([bool emptyAnalysisOptions = false,
- bool badAnalysisOptions = false]) {
- resourceProvider = new MemoryResourceProvider();
- resourceProvider.newFolder('/empty');
- resourceProvider.newFolder('/tmp');
- if (badAnalysisOptions) {
- resourceProvider.newFile('/.analysis_options', r''':''');
- } else if (emptyAnalysisOptions) {
- resourceProvider.newFile('/.analysis_options', r'''''');
- } else {
- resourceProvider.newFile(
- '/.analysis_options',
- r'''
+@reflectiveTest
+class AnalysisOptionsProviderNewTest extends AnalysisOptionsProviderTest {
+ String get optionsFileName => AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE;
+}
+
+@reflectiveTest
+class AnalysisOptionsProviderOldTest extends AnalysisOptionsProviderTest {
+ String get optionsFileName => AnalysisEngine.ANALYSIS_OPTIONS_FILE;
+}
+
+abstract class AnalysisOptionsProviderTest {
+ TestPathTranslator pathTranslator;
+ ResourceProvider resourceProvider;
+
+ AnalysisOptionsProvider provider = new AnalysisOptionsProvider();
+
+ String get optionsFileName;
+
+ void setUp() {
+ var rawProvider = new MemoryResourceProvider();
+ resourceProvider = new TestResourceProvider(rawProvider);
+ pathTranslator = new TestPathTranslator(rawProvider);
+ }
+
+ void test_getOptions_crawlUp_hasInFolder() {
+ pathTranslator.newFolder('/foo/bar');
+ pathTranslator.newFile(
+ '/foo/$optionsFileName',
+ r'''
+analyzer:
+ ignore:
+ - foo
+''');
+ pathTranslator.newFile(
+ '/foo/bar/$optionsFileName',
+ r'''
+analyzer:
+ ignore:
+ - bar
+''');
+ Map<String, YamlNode> options = _getOptions('/foo/bar', crawlUp: true);
+ expect(options, hasLength(1));
+ {
+ YamlMap analyzer = options['analyzer'];
+ expect(analyzer, isNotNull);
+ expect(analyzer['ignore'], unorderedEquals(['bar']));
+ }
+ }
+
+ void test_getOptions_crawlUp_hasInParent() {
+ pathTranslator.newFolder('/foo/bar/baz');
+ pathTranslator.newFile(
+ '/foo/$optionsFileName',
+ r'''
+analyzer:
+ ignore:
+ - foo
+''');
+ pathTranslator.newFile(
+ '/foo/bar/$optionsFileName',
+ r'''
+analyzer:
+ ignore:
+ - bar
+''');
+ Map<String, YamlNode> options = _getOptions('/foo/bar/baz', crawlUp: true);
+ expect(options, hasLength(1));
+ {
+ YamlMap analyzer = options['analyzer'];
+ expect(analyzer, isNotNull);
+ expect(analyzer['ignore'], unorderedEquals(['bar']));
+ }
+ }
+
+ void test_getOptions_doesNotExist() {
+ pathTranslator.newFolder('/notFile');
+ Map<String, YamlNode> options = _getOptions('/notFile');
+ expect(options, isEmpty);
+ }
+
+ void test_getOptions_empty() {
+ pathTranslator.newFile('/$optionsFileName', r'''#empty''');
+ Map<String, YamlNode> options = _getOptions('/');
+ expect(options, isNotNull);
+ expect(options, isEmpty);
+ }
+
+ void test_getOptions_invalid() {
+ pathTranslator.newFile('/$optionsFileName', r''':''');
+ expect(() {
+ _getOptions('/');
+ }, throws);
+ }
+
+ void test_getOptions_simple() {
+ pathTranslator.newFile(
+ '/$optionsFileName',
+ r'''
analyzer:
ignore:
- ignoreme.dart
- 'sdk_ext/**'
''');
+ Map<String, YamlNode> options = _getOptions('/');
+ expect(options, hasLength(1));
+ {
+ YamlMap analyzer = options['analyzer'];
+ expect(analyzer, hasLength(1));
+ {
+ YamlList ignore = analyzer['ignore'];
+ expect(ignore, hasLength(2));
+ expect(ignore[0], 'ignoreme.dart');
+ expect(ignore[1], 'sdk_ext/**');
+ }
+ }
}
-}
-
-clearResourceProvider() {
- resourceProvider = null;
-}
-emptyResourceProvider() {
- resourceProvider = new MemoryResourceProvider();
+ Map<String, YamlNode> _getOptions(String posixPath, {bool crawlUp: false}) {
+ Resource resource = pathTranslator.getResource(posixPath);
+ return provider.getOptions(resource, crawlUp: crawlUp);
+ }
}
« no previous file with comments | « packages/analyzer/test/resource_utils.dart ('k') | packages/analyzer/test/source/config_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698