Chromium Code Reviews| Index: pkg/analysis_server/test/domain_analysis_test.dart |
| diff --git a/pkg/analysis_server/test/domain_analysis_test.dart b/pkg/analysis_server/test/domain_analysis_test.dart |
| index 7daf7fe300ad20711e7fa982481ea254c1ebe1ec..405757174785bba990e69cfa13f974652031f674 100644 |
| --- a/pkg/analysis_server/test/domain_analysis_test.dart |
| +++ b/pkg/analysis_server/test/domain_analysis_test.dart |
| @@ -30,6 +30,7 @@ main() { |
| }); |
| group('notification.errors', testNotificationErrors); |
| + group('notification.errors', testUpdateContent); |
|
Brian Wilkerson
2014/05/28 20:38:15
"errors" --> "updateContent"?
I still don't under
scheglov
2014/05/28 20:44:05
Done.
|
| group('AnalysisDomainHandler', () { |
| test('getFixes', () { |
| @@ -110,16 +111,6 @@ main() { |
| expect(response, isNull); |
| }); |
| - test('updateContent', () { |
| - var request = new Request('0', AnalysisDomainHandler.UPDATE_CONTENT_METHOD); |
| -// request.setParameter( |
| -// AnalysisDomainHandler.FILES_PARAM, |
| -// {'project/test.dart' : null}); |
| - var response = handler.handleRequest(request); |
| - // TODO(scheglov) implement |
| - expect(response, isNull); |
| - }); |
| - |
| test('updateOptions', () { |
| var request = new Request('0', AnalysisDomainHandler.UPDATE_OPTIONS_METHOD); |
| request.setParameter( |
| @@ -213,20 +204,38 @@ class AnalysisTestHelper { |
| * Creates a project with a single Dart file `/project/bin/test.dart` with |
| * the given [code]. |
| */ |
| - createSingleFileProject(code) { |
| - if (code is List<String>) { |
| - code = code.join('\n'); |
| - } |
| - this.testCode = code; |
| + void createSingleFileProject(code) { |
| + this.testCode = _getCodeString(code); |
| resourceProvider.newFolder('/project'); |
| resourceProvider.newFile('/project/pubspec.yaml', 'name: project'); |
| resourceProvider.newFile(testFile, testCode); |
| Request request = new Request('0', AnalysisDomainHandler.SET_ANALYSIS_ROOTS_METHOD); |
| request.setParameter(AnalysisDomainHandler.INCLUDED_PARAM, ['/project']); |
| request.setParameter(AnalysisDomainHandler.EXCLUDED_PARAM, []); |
| + handleSuccessfulRequest(request); |
| + } |
| + |
| + /** |
| + * Validates that the given [request] is handled successfully. |
| + */ |
| + void handleSuccessfulRequest(Request request) { |
| Response response = handler.handleRequest(request); |
| expect(response, isResponseSuccess('0')); |
| } |
| + |
| + /** |
| + * Stops the associated server. |
| + */ |
| + void stopServer() { |
| + server.done(); |
| + } |
| + |
| + static String _getCodeString(code) { |
| + if (code is List<String>) { |
| + code = code.join('\n'); |
| + } |
| + return code as String; |
| + } |
| } |
| @@ -266,6 +275,64 @@ testNotificationErrors() { |
| } |
| +testUpdateContent() { |
| + test('full content', () { |
| + AnalysisTestHelper helper = new AnalysisTestHelper(); |
| + helper.createSingleFileProject('// empty'); |
| + return helper.waitForTasksFinished().then((_) { |
| + // no errors initially |
| + List<AnalysisError> errors = helper.getTestErrors(); |
| + expect(errors, isEmpty); |
| + // update code |
| + { |
| + Request request = new Request('0', AnalysisDomainHandler.UPDATE_CONTENT_METHOD); |
| + request.setParameter('files', |
| + { |
| + helper.testFile : { |
| + AnalysisDomainHandler.CONTENT_PARAM : 'library lib' |
| + } |
| + }); |
| + helper.handleSuccessfulRequest(request); |
| + } |
| + // wait, there is an error |
| + helper.waitForTasksFinished().then((_) { |
| + List<AnalysisError> errors = helper.getTestErrors(); |
| + expect(errors, hasLength(1)); |
| + }); |
| + }); |
| + }); |
| + |
| + test('incremental', () { |
| + AnalysisTestHelper helper = new AnalysisTestHelper(); |
| + helper.createSingleFileProject('library A;'); |
| + return helper.waitForTasksFinished().then((_) { |
| + // no errors initially |
| + List<AnalysisError> errors = helper.getTestErrors(); |
| + expect(errors, isEmpty); |
| + // update code |
| + { |
| + Request request = new Request('0', AnalysisDomainHandler.UPDATE_CONTENT_METHOD); |
| + request.setParameter('files', |
| + { |
| + helper.testFile : { |
| + AnalysisDomainHandler.CONTENT_PARAM : 'library lib', |
| + AnalysisDomainHandler.OFFSET_PARAM : 'library '.length, |
| + AnalysisDomainHandler.OLD_LENGTH_PARAM : 'A;'.length, |
| + AnalysisDomainHandler.NEW_LENGTH_PARAM : 'lib'.length, |
| + } |
| + }); |
| + helper.handleSuccessfulRequest(request); |
| + } |
| + // wait, there is an error |
| + helper.waitForTasksFinished().then((_) { |
| + List<AnalysisError> errors = helper.getTestErrors(); |
| + expect(errors, hasLength(1)); |
| + }); |
| + }); |
| + }); |
| +} |
| + |
| + |
| class AnalysisError { |
| final String file; |
| final String errorCode; |