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

Side by Side Diff: pkg/analysis_server/test/integration/integration_tests.dart

Issue 1241193002: Add '--useAnalysisHighlight2' option to generate version 2 of semantic highlight. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 5 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
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.integration.analysis; 5 library test.integration.analysis;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:collection'; 8 import 'dart:collection';
9 import 'dart:convert'; 9 import 'dart:convert';
10 import 'dart:io'; 10 import 'dart:io';
11 11
12 import 'package:analysis_server/src/constants.dart'; 12 import 'package:analysis_server/src/constants.dart';
13 import 'package:analysis_server/src/protocol.dart'; 13 import 'package:analysis_server/src/protocol.dart';
14 import 'package:path/path.dart'; 14 import 'package:path/path.dart';
15 import 'package:unittest/unittest.dart'; 15 import 'package:unittest/unittest.dart';
16 16
17 import 'integration_test_methods.dart'; 17 import 'integration_test_methods.dart';
18 import 'protocol_matchers.dart'; 18 import 'protocol_matchers.dart';
19 19
20 const Matcher isBool = const isInstanceOf<bool>('bool'); 20 const Matcher isBool = const isInstanceOf<bool>('bool');
21 21
22 const Matcher isInt = const isInstanceOf<int>('int'); 22 const Matcher isInt = const isInstanceOf<int>('int');
23 23
24 const Matcher isNotification = const MatchesJsonObject('notification', const { 24 const Matcher isNotification = const MatchesJsonObject(
25 'event': isString 25 'notification', const {'event': isString},
26 }, optionalFields: const {'params': isMap}); 26 optionalFields: const {'params': isMap});
27 27
28 const Matcher isObject = isMap; 28 const Matcher isObject = isMap;
29 29
30 final Matcher isResponse = new MatchesJsonObject('response', {'id': isString}, 30 final Matcher isResponse = new MatchesJsonObject('response', {'id': isString},
31 optionalFields: {'result': anything, 'error': isRequestError}); 31 optionalFields: {'result': anything, 'error': isRequestError});
32 32
33 const Matcher isString = const isInstanceOf<String>('String'); 33 const Matcher isString = const isInstanceOf<String>('String');
34 34
35 Matcher isListOf(Matcher elementMatcher) => new _ListOf(elementMatcher); 35 Matcher isListOf(Matcher elementMatcher) => new _ListOf(elementMatcher);
36 36
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 }); 147 });
148 Completer serverConnected = new Completer(); 148 Completer serverConnected = new Completer();
149 onServerConnected.listen((_) { 149 onServerConnected.listen((_) {
150 expect(serverConnected.isCompleted, isFalse); 150 expect(serverConnected.isCompleted, isFalse);
151 serverConnected.complete(); 151 serverConnected.complete();
152 }); 152 });
153 onServerError.listen((ServerErrorParams params) { 153 onServerError.listen((ServerErrorParams params) {
154 // A server error should never happen during an integration test. 154 // A server error should never happen during an integration test.
155 fail('${params.message}\n${params.stackTrace}'); 155 fail('${params.message}\n${params.stackTrace}');
156 }); 156 });
157 return server.start().then((_) { 157 return startServer().then((_) {
158 server.listenToOutput(dispatchNotification); 158 server.listenToOutput(dispatchNotification);
159 server.exitCode.then((_) { 159 server.exitCode.then((_) {
160 skipShutdown = true; 160 skipShutdown = true;
161 }); 161 });
162 return serverConnected.future; 162 return serverConnected.future;
163 }); 163 });
164 } 164 }
165 165
166 /** 166 /**
167 * Convert the given [relativePath] to an absolute path, by interpreting it 167 * Convert the given [relativePath] to an absolute path, by interpreting it
(...skipping 13 matching lines...) Expand all
181 Future standardAnalysisSetup({bool subscribeStatus: true}) { 181 Future standardAnalysisSetup({bool subscribeStatus: true}) {
182 List<Future> futures = <Future>[]; 182 List<Future> futures = <Future>[];
183 if (subscribeStatus) { 183 if (subscribeStatus) {
184 futures.add(sendServerSetSubscriptions([ServerService.STATUS])); 184 futures.add(sendServerSetSubscriptions([ServerService.STATUS]));
185 } 185 }
186 futures.add(sendAnalysisSetAnalysisRoots([sourceDirectory.path], [])); 186 futures.add(sendAnalysisSetAnalysisRoots([sourceDirectory.path], []));
187 return Future.wait(futures); 187 return Future.wait(futures);
188 } 188 }
189 189
190 /** 190 /**
191 * Start [server].
192 */
193 Future startServer() => server.start();
194
195 /**
191 * After every test, the server is stopped and [sourceDirectory] is deleted. 196 * After every test, the server is stopped and [sourceDirectory] is deleted.
192 */ 197 */
193 Future tearDown() { 198 Future tearDown() {
194 return _shutdownIfNeeded().then((_) { 199 return _shutdownIfNeeded().then((_) {
195 sourceDirectory.deleteSync(recursive: true); 200 sourceDirectory.deleteSync(recursive: true);
196 }); 201 });
197 } 202 }
198 203
199 /** 204 /**
200 * Write a source file with the given absolute [pathname] and [contents]. 205 * Write a source file with the given absolute [pathname] and [contents].
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 _process.stdin.add(UTF8.encoder.convert("${line}\n")); 582 _process.stdin.add(UTF8.encoder.convert("${line}\n"));
578 return completer.future; 583 return completer.future;
579 } 584 }
580 585
581 /** 586 /**
582 * Start the server. If [debugServer] is `true`, the server will be started 587 * Start the server. If [debugServer] is `true`, the server will be started
583 * with "--debug", allowing a debugger to be attached. If [profileServer] is 588 * with "--debug", allowing a debugger to be attached. If [profileServer] is
584 * `true`, the server will be started with "--observe" and 589 * `true`, the server will be started with "--observe" and
585 * "--pause-isolates-on-exit", allowing the observatory to be used. 590 * "--pause-isolates-on-exit", allowing the observatory to be used.
586 */ 591 */
587 Future start({bool debugServer: false, int diagnosticPort, bool profileServer: false}) { 592 Future start({bool debugServer: false, int diagnosticPort,
593 bool profileServer: false, bool useAnalysisHighlight2: false}) {
588 if (_process != null) { 594 if (_process != null) {
589 throw new Exception('Process already started'); 595 throw new Exception('Process already started');
590 } 596 }
591 _time.start(); 597 _time.start();
592 String dartBinary = Platform.executable; 598 String dartBinary = Platform.executable;
593 String rootDir = 599 String rootDir =
594 findRoot(Platform.script.toFilePath(windows: Platform.isWindows)); 600 findRoot(Platform.script.toFilePath(windows: Platform.isWindows));
595 String serverPath = normalize(join(rootDir, 'bin', 'server.dart')); 601 String serverPath = normalize(join(rootDir, 'bin', 'server.dart'));
596 List<String> arguments = []; 602 List<String> arguments = [];
597 if (debugServer) { 603 if (debugServer) {
598 arguments.add('--debug'); 604 arguments.add('--debug');
599 } 605 }
600 if (profileServer) { 606 if (profileServer) {
601 arguments.add('--observe'); 607 arguments.add('--observe');
602 arguments.add('--pause-isolates-on-exit'); 608 arguments.add('--pause-isolates-on-exit');
603 } 609 }
604 if (Platform.packageRoot.isNotEmpty) { 610 if (Platform.packageRoot.isNotEmpty) {
605 arguments.add('--package-root=${Platform.packageRoot}'); 611 arguments.add('--package-root=${Platform.packageRoot}');
606 } 612 }
607 arguments.add('--checked'); 613 arguments.add('--checked');
608 arguments.add(serverPath); 614 arguments.add(serverPath);
609 if (diagnosticPort != null) { 615 if (diagnosticPort != null) {
610 arguments.add('--port'); 616 arguments.add('--port');
611 arguments.add(diagnosticPort.toString()); 617 arguments.add(diagnosticPort.toString());
612 } 618 }
619 if (useAnalysisHighlight2) {
620 arguments.add('--useAnalysisHighlight2');
621 }
613 return Process.start(dartBinary, arguments).then((Process process) { 622 return Process.start(dartBinary, arguments).then((Process process) {
614 _process = process; 623 _process = process;
615 process.exitCode.then((int code) { 624 process.exitCode.then((int code) {
616 _recordStdio('TERMINATED WITH EXIT CODE $code'); 625 _recordStdio('TERMINATED WITH EXIT CODE $code');
617 if (code != 0) { 626 if (code != 0) {
618 _badDataFromServer(); 627 _badDataFromServer();
619 } 628 }
620 }); 629 });
621 }); 630 });
622 } 631 }
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 void populateMismatches(item, List<MismatchDescriber> mismatches); 869 void populateMismatches(item, List<MismatchDescriber> mismatches);
861 870
862 /** 871 /**
863 * Create a [MismatchDescriber] describing a mismatch with a simple string. 872 * Create a [MismatchDescriber] describing a mismatch with a simple string.
864 */ 873 */
865 MismatchDescriber simpleDescription(String description) => 874 MismatchDescriber simpleDescription(String description) =>
866 (Description mismatchDescription) { 875 (Description mismatchDescription) {
867 mismatchDescription.add(description); 876 mismatchDescription.add(description);
868 }; 877 };
869 } 878 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698