| 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.domain.analysis; | 5 library test.domain.analysis; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/src/analysis_server.dart'; | 9 import 'package:analysis_server/src/analysis_server.dart'; |
| 10 import 'package:analysis_server/src/computer/error.dart'; | 10 import 'package:analysis_server/src/computer/error.dart'; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 runReflectiveTests(AnalysisDomainTest); | 29 runReflectiveTests(AnalysisDomainTest); |
| 30 | 30 |
| 31 MockServerChannel serverChannel; | 31 MockServerChannel serverChannel; |
| 32 MemoryResourceProvider resourceProvider; | 32 MemoryResourceProvider resourceProvider; |
| 33 AnalysisServer server; | 33 AnalysisServer server; |
| 34 AnalysisDomainHandler handler; | 34 AnalysisDomainHandler handler; |
| 35 | 35 |
| 36 setUp(() { | 36 setUp(() { |
| 37 serverChannel = new MockServerChannel(); | 37 serverChannel = new MockServerChannel(); |
| 38 resourceProvider = new MemoryResourceProvider(); | 38 resourceProvider = new MemoryResourceProvider(); |
| 39 server = new AnalysisServer(serverChannel, resourceProvider, | 39 server = new AnalysisServer( |
| 40 new MockPackageMapProvider(), null, new MockSdk()); | 40 serverChannel, |
| 41 resourceProvider, |
| 42 new MockPackageMapProvider(), |
| 43 null, |
| 44 new MockSdk()); |
| 41 handler = new AnalysisDomainHandler(server); | 45 handler = new AnalysisDomainHandler(server); |
| 42 }); | 46 }); |
| 43 | 47 |
| 44 group('updateContent', testUpdateContent); | 48 group('updateContent', testUpdateContent); |
| 45 group('setSubscriptions', test_setSubscriptions); | 49 group('setSubscriptions', test_setSubscriptions); |
| 46 | 50 |
| 47 group('AnalysisDomainHandler', () { | 51 group('AnalysisDomainHandler', () { |
| 48 group('setAnalysisRoots', () { | 52 group('setAnalysisRoots', () { |
| 49 Request request; | 53 Request request; |
| 50 | 54 |
| 51 setUp(() { | 55 setUp(() { |
| 52 request = new Request('0', ANALYSIS_SET_ANALYSIS_ROOTS); | 56 request = new Request('0', ANALYSIS_SET_ANALYSIS_ROOTS); |
| 53 request.setParameter(INCLUDED, []); | 57 request.setParameter(INCLUDED, []); |
| 54 request.setParameter(EXCLUDED, []); | 58 request.setParameter(EXCLUDED, []); |
| 55 }); | 59 }); |
| 56 | 60 |
| 57 test('excluded', () { | 61 group('excluded', () { |
| 58 request.setParameter(EXCLUDED, ['foo']); | 62 test('excluded folder', () { |
| 59 // TODO(scheglov) implement | 63 String project = '/project'; |
| 60 var response = handler.handleRequest(request); | 64 String fileA = '/project/aaa/a.dart'; |
| 61 expect(response, isResponseFailure('0')); | 65 String fileB = '/project/bbb/b.dart'; |
| 66 resourceProvider.newFolder(project); |
| 67 resourceProvider.newFile(fileA, '// a'); |
| 68 resourceProvider.newFile(fileB, '// b'); |
| 69 request.setParameter(INCLUDED, [project]); |
| 70 request.setParameter(EXCLUDED, ['/project/bbb']); |
| 71 var response = handler.handleRequest(request); |
| 72 var serverRef = server; |
| 73 expect(response, isResponseSuccess('0')); |
| 74 // unit "a" is resolved eventually |
| 75 // unit "b" is not resolved |
| 76 return waitForServerOperationsPerformed(server).then((_) { |
| 77 expect(serverRef.test_getResolvedCompilationUnit(fileA), isNotNull); |
| 78 expect(serverRef.test_getResolvedCompilationUnit(fileB), isNull); |
| 79 }); |
| 80 }); |
| 62 }); | 81 }); |
| 63 | 82 |
| 64 group('included', () { | 83 group('included', () { |
| 65 test('new folder', () { | 84 test('new folder', () { |
| 66 resourceProvider.newFolder('/project'); | 85 resourceProvider.newFolder('/project'); |
| 67 resourceProvider.newFile('/project/pubspec.yaml', 'name: project'); | 86 resourceProvider.newFile('/project/pubspec.yaml', 'name: project'); |
| 68 resourceProvider.newFile('/project/bin/test.dart', 'main() {}'); | 87 resourceProvider.newFile('/project/bin/test.dart', 'main() {}'); |
| 69 request.setParameter(INCLUDED, ['/project']); | 88 request.setParameter(INCLUDED, ['/project']); |
| 70 var response = handler.handleRequest(request); | 89 var response = handler.handleRequest(request); |
| 71 var serverRef = server; | 90 var serverRef = server; |
| 72 expect(response, isResponseSuccess('0')); | 91 expect(response, isResponseSuccess('0')); |
| 73 // verify that unit is resolved eventually | 92 // verify that unit is resolved eventually |
| 74 return waitForServerOperationsPerformed(server).then((_) { | 93 return waitForServerOperationsPerformed(server).then((_) { |
| 75 var unit = serverRef.test_getResolvedCompilationUnit( | 94 var unit = |
| 76 '/project/bin/test.dart'); | 95 serverRef.test_getResolvedCompilationUnit('/project/bin/test.dar
t'); |
| 77 expect(unit, isNotNull); | 96 expect(unit, isNotNull); |
| 78 }); | 97 }); |
| 79 }); | 98 }); |
| 80 }); | 99 }); |
| 81 }); | 100 }); |
| 82 | 101 |
| 83 group('setPriorityFiles', () { | 102 group('setPriorityFiles', () { |
| 84 test('invalid', () { | 103 test('invalid', () { |
| 85 var request = new Request('0', ANALYSIS_SET_PRIORITY_FILES); | 104 var request = new Request('0', ANALYSIS_SET_PRIORITY_FILES); |
| 86 request.setParameter(FILES, ['/project/lib.dart']); | 105 request.setParameter(FILES, ['/project/lib.dart']); |
| (...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 379 }); | 398 }); |
| 380 } | 399 } |
| 381 | 400 |
| 382 test_setRoots_packages() { | 401 test_setRoots_packages() { |
| 383 // prepare package | 402 // prepare package |
| 384 String pkgFile = '/packages/pkgA/libA.dart'; | 403 String pkgFile = '/packages/pkgA/libA.dart'; |
| 385 resourceProvider.newFile(pkgFile, ''' | 404 resourceProvider.newFile(pkgFile, ''' |
| 386 library lib_a; | 405 library lib_a; |
| 387 class A {} | 406 class A {} |
| 388 '''); | 407 '''); |
| 389 packageMapProvider.packageMap['pkgA'] = [resourceProvider.getResource( | 408 packageMapProvider.packageMap['pkgA'] = [ |
| 390 '/packages/pkgA')]; | 409 resourceProvider.getResource('/packages/pkgA')]; |
| 391 addTestFile(''' | 410 addTestFile(''' |
| 392 import 'package:pkgA/libA.dart'; | 411 import 'package:pkgA/libA.dart'; |
| 393 main(A a) { | 412 main(A a) { |
| 394 } | 413 } |
| 395 '''); | 414 '''); |
| 396 // create project and wait for analysis | 415 // create project and wait for analysis |
| 397 createProject(); | 416 createProject(); |
| 398 return waitForTasksFinished().then((_) { | 417 return waitForTasksFinished().then((_) { |
| 399 // if 'package:pkgA/libA.dart' was resolved, then there are no errors | 418 // if 'package:pkgA/libA.dart' was resolved, then there are no errors |
| 400 expect(filesErrors[testFile], isEmpty); | 419 expect(filesErrors[testFile], isEmpty); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 419 Map<String, List<AnalysisError>> filesErrors = {}; | 438 Map<String, List<AnalysisError>> filesErrors = {}; |
| 420 Map<String, List<Map<String, Object>>> filesHighlights = {}; | 439 Map<String, List<Map<String, Object>>> filesHighlights = {}; |
| 421 Map<String, List<Map<String, Object>>> filesNavigation = {}; | 440 Map<String, List<Map<String, Object>>> filesNavigation = {}; |
| 422 | 441 |
| 423 String testFile = '/project/bin/test.dart'; | 442 String testFile = '/project/bin/test.dart'; |
| 424 String testCode; | 443 String testCode; |
| 425 | 444 |
| 426 AnalysisTestHelper() { | 445 AnalysisTestHelper() { |
| 427 serverChannel = new MockServerChannel(); | 446 serverChannel = new MockServerChannel(); |
| 428 resourceProvider = new MemoryResourceProvider(); | 447 resourceProvider = new MemoryResourceProvider(); |
| 429 server = new AnalysisServer(serverChannel, resourceProvider, | 448 server = new AnalysisServer( |
| 430 new MockPackageMapProvider(), null, new MockSdk()); | 449 serverChannel, |
| 450 resourceProvider, |
| 451 new MockPackageMapProvider(), |
| 452 null, |
| 453 new MockSdk()); |
| 431 handler = new AnalysisDomainHandler(server); | 454 handler = new AnalysisDomainHandler(server); |
| 432 // listen for notifications | 455 // listen for notifications |
| 433 Stream<Notification> notificationStream = | 456 Stream<Notification> notificationStream = |
| 434 serverChannel.notificationController.stream; | 457 serverChannel.notificationController.stream; |
| 435 notificationStream.listen((Notification notification) { | 458 notificationStream.listen((Notification notification) { |
| 436 if (notification.event == ANALYSIS_ERRORS) { | 459 if (notification.event == ANALYSIS_ERRORS) { |
| 437 String file = notification.getParameter(FILE); | 460 String file = notification.getParameter(FILE); |
| 438 List<Map<String, Object>> errorMaps = notification.getParameter(ERRORS); | 461 List<Map<String, Object>> errorMaps = notification.getParameter(ERRORS); |
| 439 filesErrors[file] = errorMaps.map(AnalysisError.fromJson).toList(); | 462 filesErrors[file] = errorMaps.map(AnalysisError.fromJson).toList(); |
| 440 } | 463 } |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 605 return waitForServerOperationsPerformed(server); | 628 return waitForServerOperationsPerformed(server); |
| 606 } | 629 } |
| 607 | 630 |
| 608 static String _getCodeString(code) { | 631 static String _getCodeString(code) { |
| 609 if (code is List<String>) { | 632 if (code is List<String>) { |
| 610 code = code.join('\n'); | 633 code = code.join('\n'); |
| 611 } | 634 } |
| 612 return code as String; | 635 return code as String; |
| 613 } | 636 } |
| 614 } | 637 } |
| OLD | NEW |