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

Side by Side Diff: pkg/analysis_server/test/analysis_server_test.dart

Issue 300023004: Partial implementation of the 'setAnalysisRoots' API. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 7 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
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 test.analysis_server; 5 library test.analysis_server;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analyzer/src/generated/engine.dart'; 9 import 'package:analyzer/src/generated/engine.dart';
10 import 'package:analyzer/src/generated/source_io.dart'; 10 import 'package:analyzer/src/generated/source_io.dart';
11 import 'package:analyzer/src/generated/error.dart'; 11 import 'package:analyzer/src/generated/error.dart';
12 import 'package:analysis_server/src/analysis_server.dart'; 12 import 'package:analysis_server/src/analysis_server.dart';
13 import 'package:analysis_server/src/domain_server.dart'; 13 import 'package:analysis_server/src/domain_server.dart';
14 import 'package:analysis_server/src/protocol.dart'; 14 import 'package:analysis_server/src/protocol.dart';
15 import 'package:analysis_server/src/resource.dart';
15 import 'package:mock/mock.dart'; 16 import 'package:mock/mock.dart';
16 import 'package:unittest/unittest.dart'; 17 import 'package:unittest/unittest.dart';
17 18
18 import 'mocks.dart'; 19 import 'mocks.dart';
19 20
20 main() { 21 main() {
21 group('AnalysisServer', () { 22 group('AnalysisServer', () {
22 setUp(AnalysisServerTest.setUp); 23 setUp(AnalysisServerTest.setUp);
23 test('addContextToWorkQueue_twice', 24 test('addContextToWorkQueue_twice',
24 AnalysisServerTest.addContextToWorkQueue_twice); 25 AnalysisServerTest.addContextToWorkQueue_twice);
25 test('addContextToWorkQueue_whenNotRunning', 26 test('addContextToWorkQueue_whenNotRunning',
26 AnalysisServerTest.addContextToWorkQueue_whenNotRunning); 27 AnalysisServerTest.addContextToWorkQueue_whenNotRunning);
27 test('addContextToWorkQueue_whenRunning',
28 AnalysisServerTest.addContextToWorkQueue_whenRunning);
29 // TODO(scheglov) remove or move to the 'analysis' domain 28 // TODO(scheglov) remove or move to the 'analysis' domain
29 // test('addContextToWorkQueue_whenRunning',
30 // AnalysisServerTest.addContextToWorkQueue_whenRunning);
30 // test('createContext', AnalysisServerTest.createContext); 31 // test('createContext', AnalysisServerTest.createContext);
31 test('echo', AnalysisServerTest.echo); 32 test('echo', AnalysisServerTest.echo);
32 test('errorToJson_formattingApplied', 33 test('errorToJson_formattingApplied',
33 AnalysisServerTest.errorToJson_formattingApplied); 34 AnalysisServerTest.errorToJson_formattingApplied);
34 test('errorToJson_noCorrection', 35 test('errorToJson_noCorrection',
35 AnalysisServerTest.errorToJson_noCorrection); 36 AnalysisServerTest.errorToJson_noCorrection);
36 test('errorToJson_withCorrection', 37 test('errorToJson_withCorrection',
37 AnalysisServerTest.errorToJson_withCorrection); 38 AnalysisServerTest.errorToJson_withCorrection);
38 test('performTask_whenNotRunning', 39 test('performTask_whenNotRunning',
39 AnalysisServerTest.performTask_whenNotRunning); 40 AnalysisServerTest.performTask_whenNotRunning);
40 test('shutdown', AnalysisServerTest.shutdown); 41 test('shutdown', AnalysisServerTest.shutdown);
41 test('unknownRequest', AnalysisServerTest.unknownRequest); 42 test('unknownRequest', AnalysisServerTest.unknownRequest);
42 }); 43 });
43 } 44 }
44 45
45 class AnalysisServerTest { 46 class AnalysisServerTest {
46 static MockServerChannel channel; 47 static MockServerChannel channel;
47 static AnalysisServer server; 48 static AnalysisServer server;
48 static MockAnalysisLogger logger; 49 static MockAnalysisLogger logger;
49 50
50 static void setUp() { 51 static void setUp() {
51 channel = new MockServerChannel(); 52 channel = new MockServerChannel();
52 server = new AnalysisServer(channel); 53 server = new AnalysisServer(channel, PhysicalResourceProvider.INSTANCE);
53 logger = new MockAnalysisLogger(); 54 logger = new MockAnalysisLogger();
54 AnalysisEngine.instance.logger = logger; 55 AnalysisEngine.instance.logger = logger;
55 } 56 }
56 57
57 static Future addContextToWorkQueue_whenNotRunning() { 58 static Future addContextToWorkQueue_whenNotRunning() {
58 server.running = false; 59 server.running = false;
59 MockAnalysisContext context = new MockAnalysisContext(); 60 MockAnalysisContext context = new MockAnalysisContext();
60 server.addContextToWorkQueue(context); 61 server.addContextToWorkQueue(context);
61 // Pump the event queue to make sure the server doesn't try to do any 62 // Pump the event queue to make sure the server doesn't try to do any
62 // analysis. 63 // analysis.
63 return pumpEventQueue(); 64 return pumpEventQueue();
64 } 65 }
65 66
66 static Future addContextToWorkQueue_whenRunning() { 67 // TODO(scheglov) remove after implementing "setAnalysisRoots" API
67 MockAnalysisContext context = new MockAnalysisContext(); 68 // static Future addContextToWorkQueue_whenRunning() {
68 server.addContextToWorkQueue(context); 69 // MockAnalysisContext context = new MockAnalysisContext();
69 server.contextIdMap[context] = 'context-27'; 70 // server.addContextToWorkQueue(context);
70 MockSource source = new MockSource(); 71 // server.contextIdMap[context] = 'context-27';
71 source.when(callsTo('get encoding')).alwaysReturn('foo.dart'); 72 // MockSource source = new MockSource();
72 ChangeNoticeImpl changeNoticeImpl = new ChangeNoticeImpl(source); 73 // source.when(callsTo('get encoding')).alwaysReturn('foo.dart');
73 LineInfo lineInfo = new LineInfo([0]); 74 // ChangeNoticeImpl changeNoticeImpl = new ChangeNoticeImpl(source);
74 AnalysisError analysisError = new AnalysisError.con1(source, 75 // LineInfo lineInfo = new LineInfo([0]);
75 CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER, ['Foo']); 76 // AnalysisError analysisError = new AnalysisError.con1(source,
76 changeNoticeImpl.setErrors([analysisError], lineInfo); 77 // CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER, ['Foo']);
77 context.when(callsTo('performAnalysisTask')).thenReturn( 78 // changeNoticeImpl.setErrors([analysisError], lineInfo);
78 new AnalysisResult([changeNoticeImpl], 0, 'myClass', 0)); 79 // context.when(callsTo('performAnalysisTask')).thenReturn(
79 context.when(callsTo('performAnalysisTask')).thenReturn( 80 // new AnalysisResult([changeNoticeImpl], 0, 'myClass', 0));
80 new AnalysisResult(null, 0, null, 0)); 81 // context.when(callsTo('performAnalysisTask')).thenReturn(
81 return pumpEventQueue().then((_) { 82 // new AnalysisResult(null, 0, null, 0));
82 context.getLogs(callsTo('performAnalysisTask')).verify(happenedExactly(2)) ; 83 // return pumpEventQueue().then((_) {
83 var notifications = channel.notificationsReceived; 84 // context.getLogs(callsTo('performAnalysisTask')).verify(happenedExactly(2 ));
84 expect(notifications, hasLength(2)); 85 // var notifications = channel.notificationsReceived;
85 expect(notifications[0].event, equals('server.connected')); 86 // expect(notifications, hasLength(2));
86 expect(notifications[1].event, equals('context.errors')); 87 // expect(notifications[0].event, equals('server.connected'));
87 expect(notifications[1].params['source'], equals('foo.dart')); 88 // expect(notifications[1].event, equals('context.errors'));
88 expect(notifications[1].params['contextId'], equals('context-27')); 89 // expect(notifications[1].params['source'], equals('foo.dart'));
89 List<AnalysisError> errors = notifications[1].params['errors']; 90 // expect(notifications[1].params['contextId'], equals('context-27'));
90 expect(errors, hasLength(1)); 91 // List<AnalysisError> errors = notifications[1].params['errors'];
91 expect(errors[0], equals(AnalysisServer.errorToJson(analysisError))); 92 // expect(errors, hasLength(1));
92 }); 93 // expect(errors[0], equals(AnalysisServer.errorToJson(analysisError)));
93 } 94 // });
95 // }
94 96
95 static Future addContextToWorkQueue_twice() { 97 static Future addContextToWorkQueue_twice() {
96 // The context should only be asked to perform its analysis task once. 98 // TODO(scheglov) remove after implementing "setAnalysisRoots" API
97 MockAnalysisContext context = new MockAnalysisContext(); 99 return new Future.value();
98 server.addContextToWorkQueue(context); 100 // // The context should only be asked to perform its analysis task once.
99 server.addContextToWorkQueue(context); 101 // MockAnalysisContext context = new MockAnalysisContext();
100 context.when(callsTo('performAnalysisTask')).thenReturn( 102 // server.addContextToWorkQueue(context);
101 new AnalysisResult(null, 0, null, 0)); 103 // server.addContextToWorkQueue(context);
102 return pumpEventQueue().then((_) => 104 // context.when(callsTo('performAnalysisTask')).thenReturn(
103 context.getLogs(callsTo('performAnalysisTask')).verify(happenedExactly(1 ))); 105 // new AnalysisResult(null, 0, null, 0));
106 // return pumpEventQueue().then((_) =>
107 // context.getLogs(callsTo('performAnalysisTask')).verify(happenedExactly (1)));
104 } 108 }
105 109
106 // TODO(scheglov) remove or move to the 'analysis' domain 110 // TODO(scheglov) remove or move to the 'analysis' domain
107 // static Future createContext() { 111 // static Future createContext() {
108 // server.handlers = [new ServerDomainHandler(server)]; 112 // server.handlers = [new ServerDomainHandler(server)];
109 // var request = new Request('my27', ServerDomainHandler.CREATE_CONTEXT_METHO D); 113 // var request = new Request('my27', ServerDomainHandler.CREATE_CONTEXT_METHO D);
110 // request.setParameter(ServerDomainHandler.SDK_DIRECTORY_PARAM, sdkPath); 114 // request.setParameter(ServerDomainHandler.SDK_DIRECTORY_PARAM, sdkPath);
111 // request.setParameter(AnalysisServer.CONTEXT_ID_PARAM, 'ctx'); 115 // request.setParameter(AnalysisServer.CONTEXT_ID_PARAM, 'ctx');
112 // return channel.sendRequest(request) 116 // return channel.sendRequest(request)
113 // .then((Response response) { 117 // .then((Response response) {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 @override 211 @override
208 Response handleRequest(Request request) { 212 Response handleRequest(Request request) {
209 if (request.method == 'echo') { 213 if (request.method == 'echo') {
210 var response = new Response(request.id); 214 var response = new Response(request.id);
211 response.setResult('echo', true); 215 response.setResult('echo', true);
212 return response; 216 return response;
213 } 217 }
214 return null; 218 return null;
215 } 219 }
216 } 220 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698