| OLD | NEW |
| 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.edit.fixes; | 5 library test.edit.fixes; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/plugin/protocol/protocol.dart'; | 9 import 'package:analysis_server/plugin/protocol/protocol.dart'; |
| 10 import 'package:analysis_server/src/domain_analysis.dart'; | 10 import 'package:analysis_server/src/domain_analysis.dart'; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 class FixesTest extends AbstractAnalysisTest { | 26 class FixesTest extends AbstractAnalysisTest { |
| 27 @override | 27 @override |
| 28 void setUp() { | 28 void setUp() { |
| 29 super.setUp(); | 29 super.setUp(); |
| 30 createProject(); | 30 createProject(); |
| 31 ExtensionManager manager = new ExtensionManager(); | 31 ExtensionManager manager = new ExtensionManager(); |
| 32 manager.processPlugins([server.serverPlugin]); | 32 manager.processPlugins([server.serverPlugin]); |
| 33 handler = new EditDomainHandler(server); | 33 handler = new EditDomainHandler(server); |
| 34 } | 34 } |
| 35 | 35 |
| 36 Future test_fixUndefinedClass() async { | 36 test_fixUndefinedClass() async { |
| 37 addTestFile(''' | 37 addTestFile(''' |
| 38 main() { | 38 main() { |
| 39 Future<String> x = null; | 39 Future<String> x = null; |
| 40 } | 40 } |
| 41 '''); | 41 '''); |
| 42 await waitForTasksFinished(); | 42 await waitForTasksFinished(); |
| 43 List<AnalysisErrorFixes> errorFixes = _getFixesAt('Future<String>'); | 43 List<AnalysisErrorFixes> errorFixes = await _getFixesAt('Future<String>'); |
| 44 expect(errorFixes, hasLength(1)); | 44 expect(errorFixes, hasLength(1)); |
| 45 AnalysisError error = errorFixes[0].error; | 45 AnalysisError error = errorFixes[0].error; |
| 46 expect(error.severity, AnalysisErrorSeverity.WARNING); | 46 expect(error.severity, AnalysisErrorSeverity.WARNING); |
| 47 expect(error.type, AnalysisErrorType.STATIC_WARNING); | 47 expect(error.type, AnalysisErrorType.STATIC_WARNING); |
| 48 List<SourceChange> fixes = errorFixes[0].fixes; | 48 List<SourceChange> fixes = errorFixes[0].fixes; |
| 49 expect(fixes, hasLength(2)); | 49 expect(fixes, hasLength(2)); |
| 50 expect(fixes[0].message, matches('Import library')); | 50 expect(fixes[0].message, matches('Import library')); |
| 51 expect(fixes[1].message, matches('Create class')); | 51 expect(fixes[1].message, matches('Create class')); |
| 52 } | 52 } |
| 53 | 53 |
| 54 Future test_hasFixes() async { | 54 test_hasFixes() async { |
| 55 addTestFile(''' | 55 addTestFile(''' |
| 56 foo() { | 56 foo() { |
| 57 print(1) | 57 print(1) |
| 58 } | 58 } |
| 59 bar() { | 59 bar() { |
| 60 print(10) print(20) | 60 print(10) print(20) |
| 61 } | 61 } |
| 62 '''); | 62 '''); |
| 63 await waitForTasksFinished(); | 63 await waitForTasksFinished(); |
| 64 // print(1) | 64 // print(1) |
| 65 { | 65 { |
| 66 List<AnalysisErrorFixes> errorFixes = _getFixesAt('print(1)'); | 66 List<AnalysisErrorFixes> errorFixes = await _getFixesAt('print(1)'); |
| 67 expect(errorFixes, hasLength(1)); | 67 expect(errorFixes, hasLength(1)); |
| 68 _isSyntacticErrorWithSingleFix(errorFixes[0]); | 68 _isSyntacticErrorWithSingleFix(errorFixes[0]); |
| 69 } | 69 } |
| 70 // print(10) | 70 // print(10) |
| 71 { | 71 { |
| 72 List<AnalysisErrorFixes> errorFixes = _getFixesAt('print(10)'); | 72 List<AnalysisErrorFixes> errorFixes = await _getFixesAt('print(10)'); |
| 73 expect(errorFixes, hasLength(2)); | 73 expect(errorFixes, hasLength(2)); |
| 74 _isSyntacticErrorWithSingleFix(errorFixes[0]); | 74 _isSyntacticErrorWithSingleFix(errorFixes[0]); |
| 75 _isSyntacticErrorWithSingleFix(errorFixes[1]); | 75 _isSyntacticErrorWithSingleFix(errorFixes[1]); |
| 76 } | 76 } |
| 77 } | 77 } |
| 78 | 78 |
| 79 Future test_overlayOnlyFile() async { | 79 test_overlayOnlyFile() async { |
| 80 // add an overlay-only file | 80 // add an overlay-only file |
| 81 { | 81 { |
| 82 testCode = ''' | 82 testCode = ''' |
| 83 main() { | 83 main() { |
| 84 print(1) | 84 print(1) |
| 85 } | 85 } |
| 86 '''; | 86 '''; |
| 87 Request request = new AnalysisUpdateContentParams( | 87 Request request = new AnalysisUpdateContentParams( |
| 88 {testFile: new AddContentOverlay(testCode)}).toRequest('0'); | 88 {testFile: new AddContentOverlay(testCode)}).toRequest('0'); |
| 89 Response response = | 89 Response response = |
| 90 new AnalysisDomainHandler(server).handleRequest(request); | 90 new AnalysisDomainHandler(server).handleRequest(request); |
| 91 expect(response, isResponseSuccess('0')); | 91 expect(response, isResponseSuccess('0')); |
| 92 } | 92 } |
| 93 // ask for fixes | 93 // ask for fixes |
| 94 await waitForTasksFinished(); | 94 await waitForTasksFinished(); |
| 95 List<AnalysisErrorFixes> errorFixes = _getFixesAt('print(1)'); | 95 List<AnalysisErrorFixes> errorFixes = await _getFixesAt('print(1)'); |
| 96 expect(errorFixes, hasLength(1)); | 96 expect(errorFixes, hasLength(1)); |
| 97 _isSyntacticErrorWithSingleFix(errorFixes[0]); | 97 _isSyntacticErrorWithSingleFix(errorFixes[0]); |
| 98 } | 98 } |
| 99 | 99 |
| 100 List<AnalysisErrorFixes> _getFixes(int offset) { | 100 Future<List<AnalysisErrorFixes>> _getFixes(int offset) async { |
| 101 Request request = new EditGetFixesParams(testFile, offset).toRequest('0'); | 101 Request request = new EditGetFixesParams(testFile, offset).toRequest('0'); |
| 102 Response response = handleSuccessfulRequest(request); | 102 Response response = await waitResponse(request); |
| 103 var result = new EditGetFixesResult.fromResponse(response); | 103 var result = new EditGetFixesResult.fromResponse(response); |
| 104 return result.fixes; | 104 return result.fixes; |
| 105 } | 105 } |
| 106 | 106 |
| 107 List<AnalysisErrorFixes> _getFixesAt(String search) { | 107 Future<List<AnalysisErrorFixes>> _getFixesAt(String search) async { |
| 108 int offset = findOffset(search); | 108 int offset = findOffset(search); |
| 109 return _getFixes(offset); | 109 return await _getFixes(offset); |
| 110 } | 110 } |
| 111 | 111 |
| 112 void _isSyntacticErrorWithSingleFix(AnalysisErrorFixes fixes) { | 112 void _isSyntacticErrorWithSingleFix(AnalysisErrorFixes fixes) { |
| 113 AnalysisError error = fixes.error; | 113 AnalysisError error = fixes.error; |
| 114 expect(error.severity, AnalysisErrorSeverity.ERROR); | 114 expect(error.severity, AnalysisErrorSeverity.ERROR); |
| 115 expect(error.type, AnalysisErrorType.SYNTACTIC_ERROR); | 115 expect(error.type, AnalysisErrorType.SYNTACTIC_ERROR); |
| 116 expect(fixes.fixes, hasLength(1)); | 116 expect(fixes.fixes, hasLength(1)); |
| 117 } | 117 } |
| 118 } | 118 } |
| OLD | NEW |