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

Side by Side Diff: pkg/code_transformers/test/resolver_test.dart

Issue 217163005: Code transformers fixes for latest analyzer update (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: bumping version Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « pkg/code_transformers/pubspec.yaml ('k') | no next file » | 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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 code_transformers.test.resolver_test; 5 library code_transformers.test.resolver_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:barback/barback.dart'; 9 import 'package:barback/barback.dart';
10 import 'package:code_transformers/resolver.dart'; 10 import 'package:code_transformers/resolver.dart';
11 import 'package:code_transformers/tests.dart'; 11 import 'package:code_transformers/tests.dart';
12 import 'package:unittest/compact_vm_config.dart'; 12 import 'package:unittest/compact_vm_config.dart';
13 import 'package:unittest/unittest.dart'; 13 import 'package:unittest/unittest.dart';
14 14
15 main() { 15 main() {
16 useCompactVMConfiguration(); 16 useCompactVMConfiguration();
17 var entryPoint = new AssetId('a', 'web/main.dart'); 17 var entryPoint = new AssetId('a', 'web/main.dart');
18 var resolvers = new Resolvers(testingDartSdkDirectory); 18 var resolvers = new Resolvers(testingDartSdkDirectory);
19 19
20 Future validateResolver({Map<String, String> inputs, void validator(Resolver), 20 Future validateResolver({Map<String, String> inputs, validator(Resolver),
21 List<String> messages: const[]}) { 21 List<String> messages: const[]}) {
22 return applyTransformers( 22 return applyTransformers(
23 [[new TestTransformer(resolvers, entryPoint, validator)]], 23 [[new TestTransformer(resolvers, entryPoint, validator)]],
24 inputs: inputs, 24 inputs: inputs,
25 messages: messages); 25 messages: messages);
26 } 26 }
27 27
28 group('Resolver', () { 28 group('Resolver', () {
29 29
30 test('should handle empty files', () { 30 test('should handle empty files', () {
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 ''', 111 ''',
112 }, 112 },
113 validator: (resolver) { 113 validator: (resolver) {
114 var lib = resolver.getLibrary(entryPoint); 114 var lib = resolver.getLibrary(entryPoint);
115 expect(lib.importedLibraries.length, 2); 115 expect(lib.importedLibraries.length, 2);
116 var libB = lib.importedLibraries.where((l) => l.name == 'b').single; 116 var libB = lib.importedLibraries.where((l) => l.name == 'b').single;
117 expect(libB.getType('Foo'), isNull); 117 expect(libB.getType('Foo'), isNull);
118 }); 118 });
119 }); 119 });
120 120
121 test('handles missing files', () {
122 return validateResolver(
123 inputs: {
124 'a|web/main.dart': '''
125 import 'package:b/missing.dart';
126
127 main() {
128 } ''',
129 },
130 validator: (resolver) {
131 var lib = resolver.getLibrary(entryPoint);
132 expect(lib.importedLibraries.length, 1);
133 });
134 });
135
121 test('should update on changed package imports', () { 136 test('should update on changed package imports', () {
122 return validateResolver( 137 return validateResolver(
123 inputs: { 138 inputs: {
124 'a|web/main.dart': ''' 139 'a|web/main.dart': '''
125 import 'package:b/b.dart'; 140 import 'package:b/missing.dart';
126 141
127 main() { 142 main() {
128 } ''', 143 } ''',
129 'b|lib/b.dart': ''' 144 'b|lib/missing.dart': '''
130 library b; 145 library b;
131 class Bar {} 146 class Bar {}
132 ''', 147 ''',
133 }, 148 },
134 validator: (resolver) { 149 validator: (resolver) {
135 var lib = resolver.getLibrary(entryPoint); 150 var lib = resolver.getLibrary(entryPoint);
136 expect(lib.importedLibraries.length, 2); 151 expect(lib.importedLibraries.length, 2);
137 var libB = lib.importedLibraries.where((l) => l.name == 'b').single; 152 var libB = lib.importedLibraries.where((l) => l.name == 'b').single;
138 expect(libB.getType('Bar'), isNotNull); 153 expect(libB.getType('Bar'), isNotNull);
139 }); 154 });
140 }); 155 });
141 156
142 test('should handle deleted files', () { 157 test('should handle deleted files', () {
143 return validateResolver( 158 return validateResolver(
144 inputs: { 159 inputs: {
145 'a|web/main.dart': ''' 160 'a|web/main.dart': '''
146 import 'package:b/b.dart'; 161 import 'package:b/missing.dart';
147 162
148 main() { 163 main() {
149 } ''', 164 } ''',
150 }, 165 },
151 messages: [
152 'error: Unable to find asset for "package:b/b.dart"',
153 ],
154 validator: (resolver) { 166 validator: (resolver) {
155 var lib = resolver.getLibrary(entryPoint); 167 var lib = resolver.getLibrary(entryPoint);
156 expect(lib.importedLibraries.length, 1); 168 expect(lib.importedLibraries.length, 1);
157 }); 169 });
158 }); 170 });
159 171
160 test('should fail on absolute URIs', () { 172 test('should fail on absolute URIs', () {
161 return validateResolver( 173 return validateResolver(
162 inputs: { 174 inputs: {
163 'a|web/main.dart': ''' 175 'a|web/main.dart': '''
164 import '/b.dart'; 176 import '/b.dart';
165 177
166 main() { 178 main() {
167 } ''', 179 } ''',
168 }, 180 },
169 messages: [ 181 messages: [
170 // First from the AST walker 182 // First from the AST walker
171 'error: absolute paths not allowed: "/b.dart" (web/main.dart 0 14)', 183 'error: absolute paths not allowed: "/b.dart" (web/main.dart 0 14)',
172 // Then two from the resolver.
173 'error: absolute paths not allowed: "/b.dart"', 184 'error: absolute paths not allowed: "/b.dart"',
185 // TODO: remove this when analyzer is updated.
174 'error: absolute paths not allowed: "/b.dart"', 186 'error: absolute paths not allowed: "/b.dart"',
175 ], 187 ],
176 validator: (resolver) { 188 validator: (resolver) {
177 var lib = resolver.getLibrary(entryPoint); 189 var lib = resolver.getLibrary(entryPoint);
178 expect(lib.importedLibraries.length, 1); 190 expect(lib.importedLibraries.length, 1);
179 }); 191 });
180 }); 192 });
181 193
182 test('should list all libraries', () { 194 test('should list all libraries', () {
183 return validateResolver( 195 return validateResolver(
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 final AssetId primary; 351 final AssetId primary;
340 final Function validator; 352 final Function validator;
341 353
342 TestTransformer(Resolvers resolvers, this.primary, this.validator) { 354 TestTransformer(Resolvers resolvers, this.primary, this.validator) {
343 this.resolvers = resolvers; 355 this.resolvers = resolvers;
344 } 356 }
345 357
346 Future<bool> isPrimary(Asset input) => 358 Future<bool> isPrimary(Asset input) =>
347 new Future.value(input.id == primary); 359 new Future.value(input.id == primary);
348 360
349 applyResolver(Transform transform, Resolver resolver) { 361 applyResolver(Transform transform, Resolver resolver) => validator(resolver);
350 return validator(resolver);
351 }
352 } 362 }
OLDNEW
« no previous file with comments | « pkg/code_transformers/pubspec.yaml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698