| OLD | NEW |
| 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 test.analysis_server; | 5 library test.analysis_server; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/plugin/protocol/protocol.dart'; | 9 import 'package:analysis_server/plugin/protocol/protocol.dart'; |
| 10 import 'package:analysis_server/src/analysis_server.dart'; | 10 import 'package:analysis_server/src/analysis_server.dart'; |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 expect(fooContext.getKindOf(barSource), SourceKind.UNKNOWN); | 235 expect(fooContext.getKindOf(barSource), SourceKind.UNKNOWN); |
| 236 expect(barContext.getKindOf(fooSource), SourceKind.UNKNOWN); | 236 expect(barContext.getKindOf(fooSource), SourceKind.UNKNOWN); |
| 237 expect(barContext.getKindOf(barSource), SourceKind.LIBRARY); | 237 expect(barContext.getKindOf(barSource), SourceKind.LIBRARY); |
| 238 }); | 238 }); |
| 239 } | 239 } |
| 240 | 240 |
| 241 test_getContextSourcePair_nested() { | 241 test_getContextSourcePair_nested() { |
| 242 String dir1Path = '/dir1'; | 242 String dir1Path = '/dir1'; |
| 243 String dir2Path = dir1Path + '/dir2'; | 243 String dir2Path = dir1Path + '/dir2'; |
| 244 String filePath = dir2Path + '/file.dart'; | 244 String filePath = dir2Path + '/file.dart'; |
| 245 Folder dir1 = resourceProvider.newFolder(dir1Path); | 245 resourceProvider.newFile('$dir1Path/.packages', ''); |
| 246 Folder dir2 = resourceProvider.newFolder(dir2Path); | 246 resourceProvider.newFile('$dir2Path/.packages', ''); |
| 247 resourceProvider.newFile(filePath, 'library lib;'); | 247 resourceProvider.newFile(filePath, 'library lib;'); |
| 248 | 248 // create contexts |
| 249 AnalysisContext context1 = AnalysisEngine.instance.createAnalysisContext(); | 249 server.setAnalysisRoots('0', [dir1Path], [], {}); |
| 250 AnalysisContext context2 = AnalysisEngine.instance.createAnalysisContext(); | 250 // get pair |
| 251 _configureSourceFactory(context1); | |
| 252 _configureSourceFactory(context2); | |
| 253 server.folderMap[dir1] = context1; | |
| 254 server.folderMap[dir2] = context2; | |
| 255 | |
| 256 ContextSourcePair pair = server.getContextSourcePair(filePath); | 251 ContextSourcePair pair = server.getContextSourcePair(filePath); |
| 257 Source source = pair.source; | 252 Source source = pair.source; |
| 258 expect(pair.context, same(context2)); | 253 _assertContextOfFolder(pair.context, dir2Path); |
| 259 expect(source, isNotNull); | 254 expect(source, isNotNull); |
| 260 expect(source.uri.scheme, 'file'); | 255 expect(source.uri.scheme, 'file'); |
| 261 expect(source.fullName, filePath); | 256 expect(source.fullName, filePath); |
| 262 } | 257 } |
| 263 | 258 |
| 264 test_getContextSourcePair_nonFile() { | 259 test_getContextSourcePair_nonFile() { |
| 265 String dirPath = '/dir'; | 260 String dirPath = '/dir'; |
| 266 Folder dir = resourceProvider.newFolder(dirPath); | 261 Folder dir = resourceProvider.newFolder(dirPath); |
| 267 | 262 |
| 268 AnalysisContext context = AnalysisEngine.instance.createAnalysisContext(); | 263 AnalysisContext context = AnalysisEngine.instance.createAnalysisContext(); |
| 269 _configureSourceFactory(context); | 264 _configureSourceFactory(context); |
| 270 server.folderMap[dir] = context; | 265 server.folderMap[dir] = context; |
| 271 | 266 |
| 272 ContextSourcePair pair = server.getContextSourcePair(dirPath); | 267 ContextSourcePair pair = server.getContextSourcePair(dirPath); |
| 273 expect(pair, isNotNull); | 268 expect(pair, isNotNull); |
| 274 expect(pair.context, isNull); | 269 expect(pair.context, isNull); |
| 275 expect(pair.source, isNull); | 270 expect(pair.source, isNull); |
| 276 } | 271 } |
| 277 | 272 |
| 278 test_getContextSourcePair_package_inRoot() { | 273 test_getContextSourcePair_package_inRoot() { |
| 279 String rootPath = '/my_package'; | 274 String rootPath = '/my_package'; |
| 280 String filePath = rootPath + '/lib/file.dart'; | 275 String filePath = rootPath + '/lib/file.dart'; |
| 281 Folder rootFolder = resourceProvider.newFolder(rootPath); | 276 Folder rootFolder = resourceProvider.newFolder(rootPath); |
| 282 resourceProvider.newFile(filePath, 'library lib;'); | 277 resourceProvider.newFile(filePath, 'library lib;'); |
| 283 | 278 |
| 284 packageMapProvider.packageMap = <String, List<Folder>>{ | 279 packageMapProvider.packageMap = <String, List<Folder>>{ |
| 285 'my_package': <Folder>[rootFolder] | 280 'my_package': <Folder>[rootFolder] |
| 286 }; | 281 }; |
| 287 | 282 // create contexts |
| 288 AnalysisContext context = AnalysisEngine.instance.createAnalysisContext(); | 283 server.setAnalysisRoots('0', [rootPath], [], {}); |
| 289 _configureSourceFactory(context); | 284 // get pair |
| 290 server.folderMap[rootFolder] = context; | |
| 291 | |
| 292 ContextSourcePair pair = server.getContextSourcePair(filePath); | 285 ContextSourcePair pair = server.getContextSourcePair(filePath); |
| 293 Source source = pair.source; | 286 Source source = pair.source; |
| 294 expect(pair.context, same(context)); | 287 _assertContextOfFolder(pair.context, rootPath); |
| 295 expect(source, isNotNull); | 288 expect(source, isNotNull); |
| 296 expect(source.uri.scheme, 'package'); | 289 expect(source.uri.scheme, 'package'); |
| 297 expect(source.fullName, filePath); | 290 expect(source.fullName, filePath); |
| 298 } | 291 } |
| 299 | 292 |
| 300 test_getContextSourcePair_simple() { | 293 test_getContextSourcePair_simple() { |
| 301 String dirPath = '/dir'; | 294 String dirPath = '/dir'; |
| 302 String filePath = dirPath + '/file.dart'; | 295 String filePath = dirPath + '/file.dart'; |
| 303 Folder dir = resourceProvider.newFolder(dirPath); | |
| 304 resourceProvider.newFile(filePath, 'library lib;'); | 296 resourceProvider.newFile(filePath, 'library lib;'); |
| 305 | 297 // create contexts |
| 306 AnalysisContext context = AnalysisEngine.instance.createAnalysisContext(); | 298 server.setAnalysisRoots('0', [dirPath], [], {}); |
| 307 _configureSourceFactory(context); | 299 // get pair |
| 308 server.folderMap[dir] = context; | |
| 309 | |
| 310 ContextSourcePair pair = server.getContextSourcePair(filePath); | 300 ContextSourcePair pair = server.getContextSourcePair(filePath); |
| 311 Source source = pair.source; | 301 Source source = pair.source; |
| 312 expect(pair.context, same(context)); | 302 _assertContextOfFolder(pair.context, dirPath); |
| 313 expect(source, isNotNull); | 303 expect(source, isNotNull); |
| 314 expect(source.uri.scheme, 'file'); | 304 expect(source.uri.scheme, 'file'); |
| 315 expect(source.fullName, filePath); | 305 expect(source.fullName, filePath); |
| 316 } | 306 } |
| 317 | 307 |
| 318 /** | 308 /** |
| 319 * Test that having multiple analysis contexts analyze the same file doesn't | 309 * Test that having multiple analysis contexts analyze the same file doesn't |
| 320 * cause that file to receive duplicate notifications when it's modified. | 310 * cause that file to receive duplicate notifications when it's modified. |
| 321 */ | 311 */ |
| 322 Future test_no_duplicate_notifications() async { | 312 Future test_no_duplicate_notifications() async { |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 // update the file | 489 // update the file |
| 500 channel.notificationsReceived.clear(); | 490 channel.notificationsReceived.clear(); |
| 501 resourceProvider.modifyFile(filePath, '// 333'); | 491 resourceProvider.modifyFile(filePath, '// 333'); |
| 502 await pumpEventQueue(); | 492 await pumpEventQueue(); |
| 503 // the file has an overlay, so the file-system change was ignored | 493 // the file has an overlay, so the file-system change was ignored |
| 504 expect(channel.notificationsReceived.any((notification) { | 494 expect(channel.notificationsReceived.any((notification) { |
| 505 return notification.event == SERVER_STATUS; | 495 return notification.event == SERVER_STATUS; |
| 506 }), isFalse); | 496 }), isFalse); |
| 507 } | 497 } |
| 508 | 498 |
| 499 void _assertContextOfFolder( |
| 500 AnalysisContext context, String expectedFolderPath) { |
| 501 Folder expectedFolder = resourceProvider.newFolder(expectedFolderPath); |
| 502 ContextInfo expectedContextInfo = (server.contextManager |
| 503 as ContextManagerImpl).getContextInfoFor(expectedFolder); |
| 504 expect(expectedContextInfo, isNotNull); |
| 505 expect(context, same(expectedContextInfo.context)); |
| 506 } |
| 507 |
| 509 void _configureSourceFactory(AnalysisContext context) { | 508 void _configureSourceFactory(AnalysisContext context) { |
| 510 var resourceUriResolver = new ResourceUriResolver(resourceProvider); | 509 var resourceUriResolver = new ResourceUriResolver(resourceProvider); |
| 511 var packageUriResolver = new PackageMapUriResolver( | 510 var packageUriResolver = new PackageMapUriResolver( |
| 512 resourceProvider, packageMapProvider.packageMap); | 511 resourceProvider, packageMapProvider.packageMap); |
| 513 context.sourceFactory = | 512 context.sourceFactory = |
| 514 new SourceFactory([packageUriResolver, resourceUriResolver]); | 513 new SourceFactory([packageUriResolver, resourceUriResolver]); |
| 515 } | 514 } |
| 516 } | 515 } |
| 517 | 516 |
| 518 class EchoHandler implements RequestHandler { | 517 class EchoHandler implements RequestHandler { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 536 _MockServerOperation(this.context); | 535 _MockServerOperation(this.context); |
| 537 | 536 |
| 538 @override | 537 @override |
| 539 ServerOperationPriority get priority => ServerOperationPriority.ANALYSIS; | 538 ServerOperationPriority get priority => ServerOperationPriority.ANALYSIS; |
| 540 | 539 |
| 541 @override | 540 @override |
| 542 void perform(AnalysisServer server) { | 541 void perform(AnalysisServer server) { |
| 543 isComplete = true; | 542 isComplete = true; |
| 544 } | 543 } |
| 545 } | 544 } |
| OLD | NEW |