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

Side by Side Diff: packages/analyzer/test/source/analysis_options_provider_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
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.source.analysis_options_provider; 5 library analyzer.test.source.analysis_options_provider_test;
6 6
7 import 'dart:core';
8
9 import 'package:analyzer/file_system/file_system.dart';
7 import 'package:analyzer/file_system/memory_file_system.dart'; 10 import 'package:analyzer/file_system/memory_file_system.dart';
8 import 'package:analyzer/source/analysis_options_provider.dart'; 11 import 'package:analyzer/source/analysis_options_provider.dart';
12 import 'package:analyzer/src/generated/engine.dart';
13 import 'package:test_reflective_loader/test_reflective_loader.dart';
9 import 'package:unittest/unittest.dart'; 14 import 'package:unittest/unittest.dart';
10 import 'package:yaml/yaml.dart'; 15 import 'package:yaml/yaml.dart';
11 16
17 import '../resource_utils.dart';
12 import '../utils.dart'; 18 import '../utils.dart';
13 19
14 main() { 20 main() {
15 initializeTestEnvironment(); 21 initializeTestEnvironment();
22 defineReflectiveTests(AnalysisOptionsProviderOldTest);
23 defineReflectiveTests(AnalysisOptionsProviderNewTest);
16 group('AnalysisOptionsProvider', () { 24 group('AnalysisOptionsProvider', () {
17 setUp(() { 25 void expectMergesTo(String defaults, String overrides, String expected) {
18 buildResourceProvider();
19 });
20 tearDown(() {
21 clearResourceProvider();
22 });
23 test('test_simple', () {
24 var optionsProvider = new AnalysisOptionsProvider(); 26 var optionsProvider = new AnalysisOptionsProvider();
25 Map<String, YamlNode> options = 27 var defaultOptions = optionsProvider.getOptionsFromString(defaults);
26 optionsProvider.getOptions(resourceProvider.getFolder('/')); 28 var overrideOptions = optionsProvider.getOptionsFromString(overrides);
27 expect(options.length, equals(1)); 29 var merged = optionsProvider.merge(defaultOptions, overrideOptions);
28 expect(options['analyzer'], isNotNull); 30 expect(merged, optionsProvider.getOptionsFromString(expected));
29 YamlMap analyzer = options['analyzer']; 31 }
30 expect(analyzer.length, equals(1)); 32
31 expect(analyzer['ignore'], isNotNull); 33 group('merging', () {
32 YamlList ignore = analyzer['ignore']; 34 test('integration', () {
33 expect(ignore.length, equals(2)); 35 expectMergesTo(
34 expect(ignore[0], equals('ignoreme.dart')); 36 '''
35 expect(ignore[1], equals('sdk_ext/**')); 37 analyzer:
36 }); 38 plugins:
37 test('test_doesnotexist', () { 39 - p1
38 var optionsProvider = new AnalysisOptionsProvider(); 40 - p2
39 Map<String, YamlNode> options = 41 errors:
40 optionsProvider.getOptions(resourceProvider.getFolder('/empty')); 42 unused_local_variable : error
41 expect(options.length, equals(0)); 43 linter:
44 rules:
45 - camel_case_types
46 - one_member_abstracts
47 ''',
48 '''
49 analyzer:
50 plugins:
51 - p3
52 errors:
53 unused_local_variable : ignore # overrides error
54 linter:
55 rules:
56 one_member_abstracts: false # promotes and disables
57 always_specify_return_types: true
58 ''',
59 '''
60 analyzer:
61 plugins:
62 - p1
63 - p2
64 - p3
65 errors:
66 unused_local_variable : ignore
67 linter:
68 rules:
69 camel_case_types: true
70 one_member_abstracts: false
71 always_specify_return_types: true
72 ''');
73 });
42 }); 74 });
43 }); 75 });
76
44 group('AnalysisOptionsProvider', () { 77 group('AnalysisOptionsProvider', () {
45 setUp(() { 78 test('test_bad_yaml (1)', () {
46 buildResourceProvider(true); 79 var src = '''
80 analyzer: # <= bang
81 strong-mode: true
82 ''';
83
84 var optionsProvider = new AnalysisOptionsProvider();
85 expect(() => optionsProvider.getOptionsFromString(src),
86 throwsA(new isInstanceOf<OptionsFormatException>()));
47 }); 87 });
48 tearDown(() { 88
49 clearResourceProvider(); 89 test('test_bad_yaml (2)', () {
50 }); 90 var src = '''
51 test('test_empty', () { 91 analyzer:
92 strong-mode:true # missing space (sdk/issues/24885)
93 ''';
94
52 var optionsProvider = new AnalysisOptionsProvider(); 95 var optionsProvider = new AnalysisOptionsProvider();
53 Map<String, YamlNode> options = 96 // Should not throw an exception.
54 optionsProvider.getOptions(resourceProvider.getFolder('/')); 97 var options = optionsProvider.getOptionsFromString(src);
98 // Should return a non-null options list.
55 expect(options, isNotNull); 99 expect(options, isNotNull);
56 }); 100 });
57 }); 101 });
58 group('AnalysisOptionsProvider', () { 102 }
59 setUp(() { 103
60 buildResourceProvider(false, true); 104 @reflectiveTest
61 }); 105 class AnalysisOptionsProviderNewTest extends AnalysisOptionsProviderTest {
62 tearDown(() { 106 String get optionsFileName => AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE;
63 clearResourceProvider(); 107 }
64 }); 108
65 test('test_invalid', () { 109 @reflectiveTest
66 var optionsProvider = new AnalysisOptionsProvider(); 110 class AnalysisOptionsProviderOldTest extends AnalysisOptionsProviderTest {
67 bool exceptionCaught = false; 111 String get optionsFileName => AnalysisEngine.ANALYSIS_OPTIONS_FILE;
68 try { 112 }
69 Map<String, YamlNode> options = 113
70 optionsProvider.getOptions(resourceProvider.getFolder('/')); 114 abstract class AnalysisOptionsProviderTest {
71 expect(options, isNotNull); 115 TestPathTranslator pathTranslator;
72 } catch (e) { 116 ResourceProvider resourceProvider;
73 exceptionCaught = true; 117
74 } 118 AnalysisOptionsProvider provider = new AnalysisOptionsProvider();
75 expect(exceptionCaught, isTrue); 119
76 }); 120 String get optionsFileName;
77 }); 121
78 } 122 void setUp() {
79 123 var rawProvider = new MemoryResourceProvider();
80 MemoryResourceProvider resourceProvider; 124 resourceProvider = new TestResourceProvider(rawProvider);
81 125 pathTranslator = new TestPathTranslator(rawProvider);
82 buildResourceProvider([bool emptyAnalysisOptions = false, 126 }
83 bool badAnalysisOptions = false]) { 127
84 resourceProvider = new MemoryResourceProvider(); 128 void test_getOptions_crawlUp_hasInFolder() {
85 resourceProvider.newFolder('/empty'); 129 pathTranslator.newFolder('/foo/bar');
86 resourceProvider.newFolder('/tmp'); 130 pathTranslator.newFile(
87 if (badAnalysisOptions) { 131 '/foo/$optionsFileName',
88 resourceProvider.newFile('/.analysis_options', r''':'''); 132 r'''
89 } else if (emptyAnalysisOptions) { 133 analyzer:
90 resourceProvider.newFile('/.analysis_options', r''''''); 134 ignore:
91 } else { 135 - foo
92 resourceProvider.newFile( 136 ''');
93 '/.analysis_options', 137 pathTranslator.newFile(
94 r''' 138 '/foo/bar/$optionsFileName',
139 r'''
140 analyzer:
141 ignore:
142 - bar
143 ''');
144 Map<String, YamlNode> options = _getOptions('/foo/bar', crawlUp: true);
145 expect(options, hasLength(1));
146 {
147 YamlMap analyzer = options['analyzer'];
148 expect(analyzer, isNotNull);
149 expect(analyzer['ignore'], unorderedEquals(['bar']));
150 }
151 }
152
153 void test_getOptions_crawlUp_hasInParent() {
154 pathTranslator.newFolder('/foo/bar/baz');
155 pathTranslator.newFile(
156 '/foo/$optionsFileName',
157 r'''
158 analyzer:
159 ignore:
160 - foo
161 ''');
162 pathTranslator.newFile(
163 '/foo/bar/$optionsFileName',
164 r'''
165 analyzer:
166 ignore:
167 - bar
168 ''');
169 Map<String, YamlNode> options = _getOptions('/foo/bar/baz', crawlUp: true);
170 expect(options, hasLength(1));
171 {
172 YamlMap analyzer = options['analyzer'];
173 expect(analyzer, isNotNull);
174 expect(analyzer['ignore'], unorderedEquals(['bar']));
175 }
176 }
177
178 void test_getOptions_doesNotExist() {
179 pathTranslator.newFolder('/notFile');
180 Map<String, YamlNode> options = _getOptions('/notFile');
181 expect(options, isEmpty);
182 }
183
184 void test_getOptions_empty() {
185 pathTranslator.newFile('/$optionsFileName', r'''#empty''');
186 Map<String, YamlNode> options = _getOptions('/');
187 expect(options, isNotNull);
188 expect(options, isEmpty);
189 }
190
191 void test_getOptions_invalid() {
192 pathTranslator.newFile('/$optionsFileName', r''':''');
193 expect(() {
194 _getOptions('/');
195 }, throws);
196 }
197
198 void test_getOptions_simple() {
199 pathTranslator.newFile(
200 '/$optionsFileName',
201 r'''
95 analyzer: 202 analyzer:
96 ignore: 203 ignore:
97 - ignoreme.dart 204 - ignoreme.dart
98 - 'sdk_ext/**' 205 - 'sdk_ext/**'
99 '''); 206 ''');
100 } 207 Map<String, YamlNode> options = _getOptions('/');
101 } 208 expect(options, hasLength(1));
102 209 {
103 clearResourceProvider() { 210 YamlMap analyzer = options['analyzer'];
104 resourceProvider = null; 211 expect(analyzer, hasLength(1));
105 } 212 {
106 213 YamlList ignore = analyzer['ignore'];
107 emptyResourceProvider() { 214 expect(ignore, hasLength(2));
108 resourceProvider = new MemoryResourceProvider(); 215 expect(ignore[0], 'ignoreme.dart');
109 } 216 expect(ignore[1], 'sdk_ext/**');
217 }
218 }
219 }
220
221 Map<String, YamlNode> _getOptions(String posixPath, {bool crawlUp: false}) {
222 Resource resource = pathTranslator.getResource(posixPath);
223 return provider.getOptions(resource, crawlUp: crawlUp);
224 }
225 }
OLDNEW
« 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