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/src/analysis_server.dart'; | 9 import 'package:analysis_server/src/analysis_server.dart'; |
10 import 'package:analysis_server/src/constants.dart'; | 10 import 'package:analysis_server/src/constants.dart'; |
11 import 'package:analysis_server/src/context_manager.dart'; | 11 import 'package:analysis_server/src/context_manager.dart'; |
12 import 'package:analysis_server/src/domain_server.dart'; | 12 import 'package:analysis_server/src/domain_server.dart'; |
13 import 'package:analysis_server/src/operation/operation.dart'; | 13 import 'package:analysis_server/src/operation/operation.dart'; |
14 import 'package:analysis_server/src/plugin/server_plugin.dart'; | 14 import 'package:analysis_server/src/plugin/server_plugin.dart'; |
15 import 'package:analysis_server/src/protocol.dart'; | 15 import 'package:analysis_server/src/protocol.dart'; |
16 import 'package:analyzer/file_system/file_system.dart'; | 16 import 'package:analyzer/file_system/file_system.dart'; |
17 import 'package:analyzer/file_system/memory_file_system.dart'; | 17 import 'package:analyzer/file_system/memory_file_system.dart'; |
18 import 'package:analyzer/instrumentation/instrumentation.dart'; | 18 import 'package:analyzer/instrumentation/instrumentation.dart'; |
19 import 'package:analyzer/source/package_map_resolver.dart'; | 19 import 'package:analyzer/source/package_map_resolver.dart'; |
20 import 'package:analyzer/src/generated/engine.dart'; | 20 import 'package:analyzer/src/generated/engine.dart'; |
21 import 'package:analyzer/src/generated/java_engine.dart'; | 21 import 'package:analyzer/src/generated/java_engine.dart'; |
22 import 'package:analyzer/src/generated/source.dart'; | 22 import 'package:analyzer/src/generated/source.dart'; |
23 import 'package:plugin/manager.dart'; | 23 import 'package:plugin/manager.dart'; |
24 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 24 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
25 import 'package:typed_mock/typed_mock.dart'; | 25 import 'package:typed_mock/typed_mock.dart'; |
26 import 'package:unittest/unittest.dart'; | 26 import 'package:unittest/unittest.dart'; |
27 | 27 |
28 import 'mock_sdk.dart'; | 28 import 'mock_sdk.dart'; |
29 import 'mocks.dart'; | 29 import 'mocks.dart'; |
| 30 import 'utils.dart'; |
30 | 31 |
31 main() { | 32 main() { |
32 groupSep = ' | '; | 33 initializeTestEnvironment(); |
33 defineReflectiveTests(AnalysisServerTest); | 34 defineReflectiveTests(AnalysisServerTest); |
34 } | 35 } |
35 | 36 |
36 @reflectiveTest | 37 @reflectiveTest |
37 class AnalysisServerTest { | 38 class AnalysisServerTest { |
38 MockServerChannel channel; | 39 MockServerChannel channel; |
39 AnalysisServer server; | 40 AnalysisServer server; |
40 MemoryResourceProvider resourceProvider; | 41 MemoryResourceProvider resourceProvider; |
41 MockPackageMapProvider packageMapProvider; | 42 MockPackageMapProvider packageMapProvider; |
42 | 43 |
43 /** | 44 /** |
44 * Verify that getAnalysisContextForSource returns the correct contexts even | 45 * Verify that getAnalysisContextForSource returns the correct contexts even |
45 * for sources that are included by multiple contexts. | 46 * for sources that are included by multiple contexts. |
46 * | 47 * |
47 * See dartbug.com/21898 | 48 * See dartbug.com/21898 |
48 */ | 49 */ |
49 Future fail_getAnalysisContextForSource_crossImports() { | 50 Future fail_getAnalysisContextForSource_crossImports() { |
50 // Subscribe to STATUS so we'll know when analysis is done. | 51 // Subscribe to STATUS so we'll know when analysis is done. |
51 server.serverServices = [ServerService.STATUS].toSet(); | 52 server.serverServices = [ServerService.STATUS].toSet(); |
52 // Analyze project foo containing foo.dart and project bar containing | 53 // Analyze project foo containing foo.dart and project bar containing |
53 // bar.dart. | 54 // bar.dart. |
54 resourceProvider.newFolder('/foo'); | 55 resourceProvider.newFolder('/foo'); |
55 resourceProvider.newFolder('/bar'); | 56 resourceProvider.newFolder('/bar'); |
56 File foo = resourceProvider.newFile('/foo/foo.dart', ''' | 57 File foo = resourceProvider.newFile( |
| 58 '/foo/foo.dart', |
| 59 ''' |
57 libary foo; | 60 libary foo; |
58 import "../bar/bar.dart"; | 61 import "../bar/bar.dart"; |
59 '''); | 62 '''); |
60 Source fooSource = foo.createSource(); | 63 Source fooSource = foo.createSource(); |
61 File bar = resourceProvider.newFile('/bar/bar.dart', ''' | 64 File bar = resourceProvider.newFile( |
| 65 '/bar/bar.dart', |
| 66 ''' |
62 library bar; | 67 library bar; |
63 import "../foo/foo.dart"; | 68 import "../foo/foo.dart"; |
64 '''); | 69 '''); |
65 Source barSource = bar.createSource(); | 70 Source barSource = bar.createSource(); |
66 server.setAnalysisRoots('0', ['/foo', '/bar'], [], {}); | 71 server.setAnalysisRoots('0', ['/foo', '/bar'], [], {}); |
67 return pumpEventQueue(40).then((_) { | 72 return pumpEventQueue(40).then((_) { |
68 expect(server.statusAnalyzing, isFalse); | 73 expect(server.statusAnalyzing, isFalse); |
69 // Make sure getAnalysisContext returns the proper context for each. | 74 // Make sure getAnalysisContext returns the proper context for each. |
70 AnalysisContext fooContext = | 75 AnalysisContext fooContext = |
71 server.getAnalysisContextForSource(fooSource); | 76 server.getAnalysisContextForSource(fooSource); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 }); | 119 }); |
115 } | 120 } |
116 | 121 |
117 void setUp() { | 122 void setUp() { |
118 channel = new MockServerChannel(); | 123 channel = new MockServerChannel(); |
119 resourceProvider = new MemoryResourceProvider(); | 124 resourceProvider = new MemoryResourceProvider(); |
120 packageMapProvider = new MockPackageMapProvider(); | 125 packageMapProvider = new MockPackageMapProvider(); |
121 ExtensionManager manager = new ExtensionManager(); | 126 ExtensionManager manager = new ExtensionManager(); |
122 ServerPlugin serverPlugin = new ServerPlugin(); | 127 ServerPlugin serverPlugin = new ServerPlugin(); |
123 manager.processPlugins([serverPlugin]); | 128 manager.processPlugins([serverPlugin]); |
124 server = new AnalysisServer(channel, resourceProvider, packageMapProvider, | 129 server = new AnalysisServer( |
125 null, serverPlugin, new AnalysisServerOptions(), new MockSdk(), | 130 channel, |
126 InstrumentationService.NULL_SERVICE, rethrowExceptions: true); | 131 resourceProvider, |
| 132 packageMapProvider, |
| 133 null, |
| 134 serverPlugin, |
| 135 new AnalysisServerOptions(), |
| 136 new MockSdk(), |
| 137 InstrumentationService.NULL_SERVICE, |
| 138 rethrowExceptions: true); |
127 } | 139 } |
128 | 140 |
129 Future test_contextDisposed() { | 141 Future test_contextDisposed() { |
130 resourceProvider.newFolder('/foo'); | 142 resourceProvider.newFolder('/foo'); |
131 resourceProvider.newFile('/foo/bar.dart', 'library lib;'); | 143 resourceProvider.newFile('/foo/bar.dart', 'library lib;'); |
132 server.setAnalysisRoots('0', ['/foo'], [], {}); | 144 server.setAnalysisRoots('0', ['/foo'], [], {}); |
133 AnalysisContext context; | 145 AnalysisContext context; |
134 return pumpEventQueue().then((_) { | 146 return pumpEventQueue().then((_) { |
135 context = server.getAnalysisContext('/foo/bar.dart'); | 147 context = server.getAnalysisContext('/foo/bar.dart'); |
136 server.setAnalysisRoots('1', [], [], {}); | 148 server.setAnalysisRoots('1', [], [], {}); |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 server.setPriorityFiles('17', []); | 410 server.setPriorityFiles('17', []); |
399 return pumpEventQueue(); | 411 return pumpEventQueue(); |
400 }).then((_) { | 412 }).then((_) { |
401 expect(eventCount, 3); | 413 expect(eventCount, 3); |
402 expect(firstSource, isNull); | 414 expect(firstSource, isNull); |
403 }); | 415 }); |
404 } | 416 } |
405 | 417 |
406 void test_rethrowExceptions() { | 418 void test_rethrowExceptions() { |
407 Exception exceptionToThrow = new Exception('test exception'); | 419 Exception exceptionToThrow = new Exception('test exception'); |
408 MockServerOperation operation = new MockServerOperation( | 420 MockServerOperation operation = |
409 ServerOperationPriority.ANALYSIS, (_) { | 421 new MockServerOperation(ServerOperationPriority.ANALYSIS, (_) { |
410 throw exceptionToThrow; | 422 throw exceptionToThrow; |
411 }); | 423 }); |
412 server.operationQueue.add(operation); | 424 server.operationQueue.add(operation); |
413 server.performOperationPending = true; | 425 server.performOperationPending = true; |
414 try { | 426 try { |
415 server.performOperation(); | 427 server.performOperation(); |
416 fail('exception not rethrown'); | 428 fail('exception not rethrown'); |
417 } on AnalysisException catch (exception) { | 429 } on AnalysisException catch (exception) { |
418 expect(exception.cause.exception, equals(exceptionToThrow)); | 430 expect(exception.cause.exception, equals(exceptionToThrow)); |
419 } | 431 } |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 _MockServerOperation(this.context); | 514 _MockServerOperation(this.context); |
503 | 515 |
504 @override | 516 @override |
505 ServerOperationPriority get priority => ServerOperationPriority.ANALYSIS; | 517 ServerOperationPriority get priority => ServerOperationPriority.ANALYSIS; |
506 | 518 |
507 @override | 519 @override |
508 void perform(AnalysisServer server) { | 520 void perform(AnalysisServer server) { |
509 isComplete = true; | 521 isComplete = true; |
510 } | 522 } |
511 } | 523 } |
OLD | NEW |