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

Side by Side Diff: pkg/analyzer/test/source/analysis_options_provider_test.dart

Issue 1437703003: Improves options validation type safety (#24885). (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month 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
« no previous file with comments | « pkg/analyzer/lib/src/task/options.dart ('k') | pkg/analyzer/test/src/task/options_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 test.source.analysis_options_provider;
6 6
7 import 'package:analyzer/file_system/memory_file_system.dart'; 7 import 'package:analyzer/file_system/memory_file_system.dart';
8 import 'package:analyzer/source/analysis_options_provider.dart'; 8 import 'package:analyzer/source/analysis_options_provider.dart';
9 import 'package:unittest/unittest.dart'; 9 import 'package:unittest/unittest.dart';
10 import 'package:yaml/yaml.dart'; 10 import 'package:yaml/yaml.dart';
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 setUp(() { 71 setUp(() {
72 buildResourceProvider(); 72 buildResourceProvider();
73 }); 73 });
74 tearDown(() { 74 tearDown(() {
75 clearResourceProvider(); 75 clearResourceProvider();
76 }); 76 });
77 test('test_simple', () { 77 test('test_simple', () {
78 var optionsProvider = new AnalysisOptionsProvider(); 78 var optionsProvider = new AnalysisOptionsProvider();
79 Map<String, YamlNode> options = 79 Map<String, YamlNode> options =
80 optionsProvider.getOptions(resourceProvider.getFolder('/')); 80 optionsProvider.getOptions(resourceProvider.getFolder('/'));
81 expect(options.length, equals(1)); 81 expect(options, hasLength(1));
82 expect(options['analyzer'], isNotNull); 82 expect(options['analyzer'], isNotNull);
83 YamlMap analyzer = options['analyzer']; 83 YamlMap analyzer = options['analyzer'];
84 expect(analyzer.length, equals(1)); 84 expect(analyzer, hasLength(1));
85 expect(analyzer['ignore'], isNotNull); 85 expect(analyzer['ignore'], isNotNull);
86 YamlList ignore = analyzer['ignore']; 86 YamlList ignore = analyzer['ignore'];
87 expect(ignore.length, equals(2)); 87 expect(ignore, hasLength(2));
88 expect(ignore[0], equals('ignoreme.dart')); 88 expect(ignore[0], 'ignoreme.dart');
89 expect(ignore[1], equals('sdk_ext/**')); 89 expect(ignore[1], 'sdk_ext/**');
90 }); 90 });
91 test('test_doesnotexist', () { 91 test('test_doesnotexist', () {
92 var optionsProvider = new AnalysisOptionsProvider(); 92 var optionsProvider = new AnalysisOptionsProvider();
93 Map<String, YamlNode> options = 93 Map<String, YamlNode> options =
94 optionsProvider.getOptions(resourceProvider.getFolder('/empty')); 94 optionsProvider.getOptions(resourceProvider.getFolder('/empty'));
95 expect(options.length, equals(0)); 95 expect(options, isEmpty);
96 }); 96 });
97 }); 97 });
98 group('AnalysisOptionsProvider', () { 98 group('AnalysisOptionsProvider', () {
99 setUp(() { 99 setUp(() {
100 buildResourceProvider(emptyAnalysisOptions: true); 100 buildResourceProvider(emptyAnalysisOptions: true);
101 }); 101 });
102 tearDown(() { 102 tearDown(() {
103 clearResourceProvider(); 103 clearResourceProvider();
104 }); 104 });
105 test('test_empty', () { 105 test('test_empty', () {
(...skipping 17 matching lines...) Expand all
123 Map<String, YamlNode> options = 123 Map<String, YamlNode> options =
124 optionsProvider.getOptions(resourceProvider.getFolder('/')); 124 optionsProvider.getOptions(resourceProvider.getFolder('/'));
125 expect(options, isNotNull); 125 expect(options, isNotNull);
126 } catch (e) { 126 } catch (e) {
127 exceptionCaught = true; 127 exceptionCaught = true;
128 } 128 }
129 expect(exceptionCaught, isTrue); 129 expect(exceptionCaught, isTrue);
130 }); 130 });
131 }); 131 });
132 group('AnalysisOptionsProvider', () { 132 group('AnalysisOptionsProvider', () {
133 test('test_bad_yaml', () { 133 test('test_bad_yaml (1)', () {
134 var src = ''' 134 var src = '''
135 analyzer: 135 analyzer: # <= bang
136 exclude: 136 strong-mode: true
137 - test/data/*
138 error:
139 invalid_assignment: ignore
140 unused_local_variable: # <=== bang
141 linter:
142 rules:
143 - camel_case_types
144 '''; 137 ''';
145 138
146 var optionsProvider = new AnalysisOptionsProvider(); 139 var optionsProvider = new AnalysisOptionsProvider();
147 expect(() => optionsProvider.getOptionsFromString(src), 140 expect(() => optionsProvider.getOptionsFromString(src),
148 throwsA(new isInstanceOf<OptionsFormatException>())); 141 throwsA(new isInstanceOf<OptionsFormatException>()));
149 }); 142 });
143
144 test('test_bad_yaml (2)', () {
145 var src = '''
146 analyzer:
147 strong-mode:true # missing space (sdk/issues/24885)
148 ''';
149
150 var optionsProvider = new AnalysisOptionsProvider();
151 // Should not throw an exception.
152 var options = optionsProvider.getOptionsFromString(src);
153 // Should return a non-null options list.
154 expect(options, isNotNull);
155 });
150 }); 156 });
151 } 157 }
152 158
153 MemoryResourceProvider resourceProvider; 159 MemoryResourceProvider resourceProvider;
154 160
155 buildResourceProvider( 161 buildResourceProvider(
156 {bool emptyAnalysisOptions: false, bool badAnalysisOptions: false}) { 162 {bool emptyAnalysisOptions: false, bool badAnalysisOptions: false}) {
157 resourceProvider = new MemoryResourceProvider(); 163 resourceProvider = new MemoryResourceProvider();
158 resourceProvider.newFolder('/empty'); 164 resourceProvider.newFolder('/empty');
159 resourceProvider.newFolder('/tmp'); 165 resourceProvider.newFolder('/tmp');
(...skipping 13 matching lines...) Expand all
173 } 179 }
174 } 180 }
175 181
176 clearResourceProvider() { 182 clearResourceProvider() {
177 resourceProvider = null; 183 resourceProvider = null;
178 } 184 }
179 185
180 emptyResourceProvider() { 186 emptyResourceProvider() {
181 resourceProvider = new MemoryResourceProvider(); 187 resourceProvider = new MemoryResourceProvider();
182 } 188 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/task/options.dart ('k') | pkg/analyzer/test/src/task/options_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698