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