Chromium Code Reviews| Index: pkg/analysis_server/test/analysis/get_errors_test.dart |
| diff --git a/pkg/analysis_server/test/analysis/get_errors_test.dart b/pkg/analysis_server/test/analysis/get_errors_test.dart |
| index 2c261e52abeaa7cd465beec450338657e416bdbe..8064aed75b7e86e4222eed7cb2e9e01d4b90cedd 100644 |
| --- a/pkg/analysis_server/test/analysis/get_errors_test.dart |
| +++ b/pkg/analysis_server/test/analysis/get_errors_test.dart |
| @@ -12,13 +12,14 @@ import 'package:analysis_server/src/domain_analysis.dart'; |
| import 'package:analysis_server/src/protocol.dart'; |
| import 'package:analysis_services/constants.dart'; |
| import 'package:analysis_testing/reflective_tests.dart'; |
| +import 'package:analyzer/file_system/file_system.dart'; |
| import 'package:unittest/unittest.dart'; |
| import '../analysis_abstract.dart'; |
| main() { |
| - group('notification.hover', () { |
| + group('getErrors', () { |
| runReflectiveTests(GetErrorsTest); |
| }); |
| } |
| @@ -26,30 +27,7 @@ main() { |
| @ReflectiveTestCase() |
| class GetErrorsTest extends AbstractAnalysisTest { |
| - Future<List<AnalysisError>> getErrors() { |
| - return getErrorsForFile(testFile); |
| - } |
| - |
| - Future<List<AnalysisError>> getErrorsForFile(String file) { |
| - return waitForTasksFinished().then((_) { |
| - String requestId = 'test-getError'; |
| - // send the Request |
| - Request request = new Request(requestId, ANALYSIS_GET_ERRORS); |
| - request.setParameter(FILE, file); |
| - server.handleRequest(request); |
| - // wait for the Response |
| - waitForResponse() { |
| - for (Response response in serverChannel.responsesReceived) { |
| - if (response.id == requestId) { |
| - List errorsJsons = response.getResult(ERRORS); |
| - return errorsJsons.map(AnalysisError.fromJson).toList(); |
| - } |
| - } |
| - return new Future(waitForResponse); |
| - } |
| - return new Future(waitForResponse); |
| - }); |
| - } |
| + static const String requestId = 'test-getError'; |
| @override |
| void setUp() { |
| @@ -58,13 +36,32 @@ class GetErrorsTest extends AbstractAnalysisTest { |
| createProject(); |
| } |
| + test_fileDoesNotExist() { |
| + String file = '$projectPath/doesNotExist.dart'; |
| + return _getErrorsForFile(file).then((List<AnalysisError> errors) { |
| + expect(errors, isEmpty); |
| + }); |
| + } |
| + |
| + test_fileWithoutContext() { |
| + String file = '/outside.dart'; |
| + addFile(file, ''' |
| +main() { |
| + print(42); |
| +} |
| +'''); |
| + return _getErrorsForFile(file).then((List<AnalysisError> errors) { |
| + expect(errors, isEmpty); |
| + }); |
| + } |
| + |
| test_hasErrors() { |
| addTestFile(''' |
| main() { |
| print(42) |
| } |
| '''); |
| - return getErrors().then((List<AnalysisError> errors) { |
| + return _getErrors().then((List<AnalysisError> errors) { |
| expect(errors, hasLength(1)); |
| { |
| AnalysisError error = errors[0]; |
| @@ -82,20 +79,63 @@ main() { |
| print(42); |
| } |
| '''); |
| - return getErrors().then((List<AnalysisError> errors) { |
| + return _getErrors().then((List<AnalysisError> errors) { |
| expect(errors, isEmpty); |
| }); |
| } |
| - test_fileWithoutContext() { |
| - String file = '/outside.dart'; |
| - addFile(file, ''' |
| + test_removeContextAfterRequest() { |
| + addTestFile(''' |
| main() { |
| - print(42); |
| + print(42) |
| } |
| '''); |
| - return getErrorsForFile(file).then((List<AnalysisError> errors) { |
| - expect(errors, isEmpty); |
| + _sendGetErrorsRequest(testFile); |
| + { |
| + Folder projectFolder = resourceProvider.getResource(projectPath); |
| + server.contextDirectoryManager.removeContext(projectFolder); |
| + } |
| + return _waitForResponse().then((Response response) { |
| + expect(response.getResult(ERRORS), isEmpty); |
| + RequestError error = response.error; |
| + expect(error, isNotNull); |
| + expect(error.code, -13); |
| }); |
| } |
| + |
| + Future<List<AnalysisError>> _getErrors() { |
| + return _getErrorsForFile(testFile); |
| + } |
| + |
| + Future<List<AnalysisError>> _getErrorsForFile(String file) { |
| + _sendGetErrorsRequest(file); |
| + return waitForTasksFinished().then((_) { |
|
Paul Berry
2014/07/23 15:06:51
Shouldn't just "return _waitForGetErrorsResponse()
scheglov
2014/07/24 16:54:04
Yes, it is sufficient.
Thanks.
|
| + return _waitForGetErrorsResponse(); |
| + }); |
| + } |
| + |
| + void _sendGetErrorsRequest(String file) { |
| + Request request = new Request(requestId, ANALYSIS_GET_ERRORS); |
| + request.setParameter(FILE, file); |
| + server.handleRequest(request); |
| + } |
| + |
| + Future<List<AnalysisError>> _waitForGetErrorsResponse() { |
| + return _waitForResponse().then((Response response) { |
| + List errorsJsons = response.getResult(ERRORS); |
| + return errorsJsons.map(AnalysisError.fromJson).toList(); |
| + }); |
| + } |
| + |
| + Future<Response> _waitForResponse() { |
| + waitForResponse() { |
|
Paul Berry
2014/07/23 15:06:51
It seems unfortunate that we have to busy wait for
scheglov
2014/07/24 16:54:04
OK
Although I have to duplicate some code to simu
|
| + for (Response response in serverChannel.responsesReceived) { |
| + if (response.id == requestId) { |
| + return response; |
| + } |
| + } |
| + return new Future(waitForResponse); |
| + } |
| + return new Future(waitForResponse); |
| + } |
| } |