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

Side by Side Diff: pkg/analysis_server/test/src/domain_abstract_test.dart

Issue 2830863002: Initial support for getting fixes from plugins (Closed)
Patch Set: address comments Created 3 years, 8 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
OLDNEW
(Empty)
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
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.
4
5 import 'dart:async';
6
7 import 'package:analysis_server/src/domain_abstract.dart';
8 import 'package:analysis_server/src/plugin/plugin_manager.dart';
9 import 'package:analysis_server/src/protocol_server.dart' hide Element;
10 import 'package:analyzer_plugin/protocol/protocol.dart' as plugin;
11 import 'package:analyzer_plugin/protocol/protocol_constants.dart' as plugin;
12 import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
13 import 'package:test/test.dart';
14 import 'package:test_reflective_loader/test_reflective_loader.dart';
15
16 import '../analysis_abstract.dart';
17
18 main() {
19 defineReflectiveSuite(() {
20 defineReflectiveTests(AbstractRequestHandlerTest);
21 });
22 }
23
24 @reflectiveTest
25 class AbstractRequestHandlerTest extends AbstractAnalysisTest {
26 test_waitForResponses_empty_noTimeout() async {
27 AbstractRequestHandler handler = new TestAbstractRequestHandler(server);
28 Map<PluginInfo, Future<plugin.Response>> futures =
29 <PluginInfo, Future<plugin.Response>>{};
30 List<plugin.Response> responses = await handler.waitForResponses(futures);
31 expect(responses, isEmpty);
32 }
33
34 test_waitForResponses_empty_timeout() async {
35 AbstractRequestHandler handler = new TestAbstractRequestHandler(server);
36 Map<PluginInfo, Future<plugin.Response>> futures =
37 <PluginInfo, Future<plugin.Response>>{};
38 List<plugin.Response> responses =
39 await handler.waitForResponses(futures, timeout: 250);
40 expect(responses, isEmpty);
41 }
42
43 test_waitForResponses_nonEmpty_noTimeout_immediate() async {
44 AbstractRequestHandler handler = new TestAbstractRequestHandler(server);
45 PluginInfo plugin1 = new PluginInfo('p1', '', '', null, null);
46 PluginInfo plugin2 = new PluginInfo('p2', '', '', null, null);
47 plugin.Response response1 = new plugin.Response('1');
48 plugin.Response response2 = new plugin.Response('2');
49 Map<PluginInfo, Future<plugin.Response>> futures =
50 <PluginInfo, Future<plugin.Response>>{
51 plugin1: new Future.value(response1),
52 plugin2: new Future.value(response2),
53 };
54 List<plugin.Response> responses = await handler.waitForResponses(futures);
55 expect(responses, unorderedEquals([response1, response2]));
56 }
57
58 test_waitForResponses_nonEmpty_noTimeout_withError() async {
59 AbstractRequestHandler handler = new TestAbstractRequestHandler(server);
60 PluginInfo plugin1 = new PluginInfo('p1', '', '', null, null);
61 PluginInfo plugin2 = new PluginInfo('p2', '', '', null, null);
62 plugin.Response response1 = new plugin.Response('1');
63 plugin.Response response2 = new plugin.Response('2',
64 error: new plugin.RequestError(
65 plugin.RequestErrorCode.PLUGIN_ERROR, 'message'));
66 Map<PluginInfo, Future<plugin.Response>> futures =
67 <PluginInfo, Future<plugin.Response>>{
68 plugin1: new Future.value(response1),
69 plugin2: new Future.value(response2),
70 };
71 List<plugin.Response> responses = await handler.waitForResponses(futures);
72 expect(responses, unorderedEquals([response1]));
73 }
74
75 test_waitForResponses_nonEmpty_timeout_someDelayed() async {
76 AbstractRequestHandler handler = new TestAbstractRequestHandler(server);
77 PluginInfo plugin1 = new PluginInfo('p1', '', '', null, null);
78 PluginInfo plugin2 = new PluginInfo('p2', '', '', null, null);
79 PluginInfo plugin3 = new PluginInfo('p3', '', '', null, null);
80 plugin.Response response1 = new plugin.Response('1');
81 plugin.Response response2 = new plugin.Response('2');
82 plugin.Response response3 = new plugin.Response('3');
83 Map<PluginInfo, Future<plugin.Response>> futures =
84 <PluginInfo, Future<plugin.Response>>{
85 plugin1:
86 new Future.delayed(new Duration(milliseconds: 500), () => response1),
87 plugin2: new Future.value(response2),
88 plugin3:
89 new Future.delayed(new Duration(milliseconds: 500), () => response3)
90 };
91 List<plugin.Response> responses =
92 await handler.waitForResponses(futures, timeout: 50);
93 expect(responses, unorderedEquals([response2]));
94 }
95 }
96
97 class TestAbstractRequestHandler extends AbstractRequestHandler {
98 TestAbstractRequestHandler(server) : super(server);
99
100 @override
101 Response handleRequest(Request request) {
102 fail('Unexpected invocation of handleRequest');
103 return null;
104 }
105 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/plugin/plugin_manager.dart ('k') | pkg/analysis_server/test/src/plugin/plugin_manager_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698