Skip to content

Commit 8b33588

Browse files
DanTupCommit Queue
authored andcommitted
[analysis_server] Change some LSP base test classes to mixins
This changes two classes that were previously used as base classes for tests to mixins, which allows both of them to be applied to the same class (which is required for some upcoming shared Code Action tests, since one of the base classes provides the shared interface and the other provides CodeActions helpers). As part of this, I also inlined the setUp() method from the original base class and reduced it to just what's required for each testing, including removing `failTestOnErrorDiagnostic = false` from some tests, and fixing up some unintended errors in them. Change-Id: I92012d9fdd4df9f13912859c92c277154f297e8d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/427380 Reviewed-by: Samuel Rawlins <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Brian Wilkerson <[email protected]>
1 parent ac18236 commit 8b33588

12 files changed

+132
-73
lines changed

pkg/analysis_server/test/lsp/code_actions_assists_test.dart

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:analysis_server/lsp_protocol/protocol.dart';
88
import 'package:analysis_server/src/analysis_server.dart';
99
import 'package:analysis_server/src/lsp/constants.dart';
1010
import 'package:analysis_server/src/lsp/extensions/code_action.dart';
11+
import 'package:analysis_server/src/services/correction/assist_internal.dart';
1112
import 'package:analyzer/src/test_utilities/test_code_format.dart';
1213
import 'package:analyzer_plugin/protocol/protocol_common.dart' as plugin;
1314
import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
@@ -16,7 +17,8 @@ import 'package:test_reflective_loader/test_reflective_loader.dart';
1617

1718
import '../utils/lsp_protocol_extensions.dart';
1819
import '../utils/test_code_extensions.dart';
19-
import 'code_actions_abstract.dart';
20+
import 'code_actions_mixin.dart';
21+
import 'server_abstract.dart';
2022

2123
void main() {
2224
defineReflectiveSuite(() {
@@ -25,12 +27,19 @@ void main() {
2527
}
2628

2729
@reflectiveTest
28-
class AssistsCodeActionsTest extends AbstractCodeActionsTest {
30+
class AssistsCodeActionsTest extends AbstractLspAnalysisServerTest
31+
with CodeActionsTestMixin {
2932
@override
3033
void setUp() {
3134
super.setUp();
32-
writeTestPackageConfig(flutter: true);
35+
36+
setApplyEditSupport();
37+
setDocumentChangesSupport();
3338
setSupportedCodeActionKinds([CodeActionKind.Refactor]);
39+
40+
registerBuiltInAssistGenerators();
41+
42+
writeTestPackageConfig(flutter: true);
3443
}
3544

3645
Future<void> test_appliesCorrectEdits_withDocumentChangesSupport() async {
@@ -256,6 +265,8 @@ Future? f;
256265
}
257266

258267
Future<void> test_plugin() async {
268+
failTestOnErrorDiagnostic = false;
269+
259270
if (!AnalysisServer.supportsPlugins) return;
260271
// This code should get an assist to replace 'foo' with 'bar'.'
261272
const content = '''

pkg/analysis_server/test/lsp/code_actions_fixes_test.dart

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import 'package:analysis_server/lsp_protocol/protocol.dart';
66
import 'package:analysis_server/src/analysis_server.dart';
77
import 'package:analysis_server/src/lsp/extensions/code_action.dart';
8+
import 'package:analysis_server/src/services/correction/fix_internal.dart';
89
import 'package:analyzer/src/dart/error/lint_codes.dart';
910
import 'package:analyzer/src/lint/linter.dart';
1011
import 'package:analyzer/src/lint/registry.dart';
@@ -16,7 +17,8 @@ import 'package:test/test.dart';
1617
import 'package:test_reflective_loader/test_reflective_loader.dart';
1718

1819
import '../utils/test_code_extensions.dart';
19-
import 'code_actions_abstract.dart';
20+
import 'code_actions_mixin.dart';
21+
import 'server_abstract.dart';
2022

2123
void main() {
2224
defineReflectiveSuite(() {
@@ -46,7 +48,8 @@ class DeprecatedCamelCaseTypes extends LintRule {
4648
}
4749

4850
@reflectiveTest
49-
class FixesCodeActionsTest extends AbstractCodeActionsTest {
51+
class FixesCodeActionsTest extends AbstractLspAnalysisServerTest
52+
with CodeActionsTestMixin {
5053
/// Helper to check plugin fixes for [filePath].
5154
///
5255
/// Used to ensure that both Dart and non-Dart files fixes are returned.
@@ -108,7 +111,15 @@ bar
108111
@override
109112
void setUp() {
110113
super.setUp();
114+
115+
// Fix tests are likely to have diagnostics that need fixing.
116+
failTestOnErrorDiagnostic = false;
117+
118+
setApplyEditSupport();
119+
setDocumentChangesSupport();
111120
setSupportedCodeActionKinds([CodeActionKind.QuickFix]);
121+
122+
registerBuiltInFixGenerators();
112123
}
113124

114125
Future<void> test_addImport_noPreference() async {

pkg/analysis_server/test/lsp/code_actions_abstract.dart renamed to pkg/analysis_server/test/lsp/code_actions_mixin.dart

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
import 'package:analysis_server/lsp_protocol/protocol.dart';
66
import 'package:analysis_server/src/lsp/constants.dart';
77
import 'package:analysis_server/src/lsp/extensions/code_action.dart';
8-
import 'package:analysis_server/src/services/correction/assist_internal.dart';
9-
import 'package:analysis_server/src/services/correction/fix_internal.dart';
108
import 'package:analyzer/src/test_utilities/test_code_format.dart';
119
import 'package:collection/collection.dart';
1210
import 'package:test/test.dart';
@@ -16,7 +14,7 @@ import '../utils/test_code_extensions.dart';
1614
import 'change_verifier.dart';
1715
import 'server_abstract.dart';
1816

19-
abstract class AbstractCodeActionsTest extends AbstractLspAnalysisServerTest {
17+
mixin CodeActionsTestMixin on AbstractLspAnalysisServerTest {
2018
/// Initializes the server with some basic configuration and expects to find
2119
/// a [CodeAction] with [kind]/[command]/[title].
2220
Future<CodeAction> expectCodeAction(
@@ -236,21 +234,6 @@ abstract class AbstractCodeActionsTest extends AbstractLspAnalysisServerTest {
236234
return null;
237235
}
238236

239-
@override
240-
void setUp() {
241-
super.setUp();
242-
243-
// Fix tests are likely to have diagnostics that need fixing.
244-
failTestOnErrorDiagnostic = false;
245-
246-
// Some defaults that most tests use. Tests can opt-out by overwriting these
247-
// before initializing.
248-
setApplyEditSupport();
249-
setDocumentChangesSupport();
250-
registerBuiltInAssistGenerators();
251-
registerBuiltInFixGenerators();
252-
}
253-
254237
/// Verifies that executing the given Code Action (either via a command or
255238
/// an inline edit) results in the files matching the expected content.
256239
Future<LspChangeVerifier> verifyCodeActionEdits(

pkg/analysis_server/test/lsp/code_actions_refactor_test.dart

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ import 'package:test_reflective_loader/test_reflective_loader.dart';
1313

1414
import '../tool/lsp_spec/matchers.dart';
1515
import '../utils/test_code_extensions.dart';
16-
import 'code_actions_abstract.dart';
16+
import 'code_actions_mixin.dart';
1717
import 'request_helpers_mixin.dart';
18+
import 'server_abstract.dart';
1819

1920
void main() {
2021
defineReflectiveSuite(() {
@@ -222,7 +223,7 @@ void f() {
222223
try {
223224
// Send an edit request immediately after the refactor request.
224225
var req1 = executeCommand(codeAction.command!);
225-
var req2 = replaceFile(100, mainFileUri, 'new test content');
226+
var req2 = replaceFile(100, mainFileUri, '// new test content');
226227
completer.complete();
227228

228229
// Expect the first to fail because of the modified content.
@@ -264,22 +265,22 @@ void f() {
264265

265266
Future<void> test_generatesNames() async {
266267
const content = '''
267-
Object F() {
268+
Object? F() {
268269
return Container([!Text('Test!')!]);
269270
}
270271
271-
Object Container(Object text) => null;
272-
Object Text(Object text) => null;
272+
Object? Container(Object? text) => null;
273+
Object? Text(Object? text) => null;
273274
''';
274275
const expectedContent = '''
275-
Object F() {
276+
Object? F() {
276277
return Container(text());
277278
}
278279
279-
Object text() => Text('Test!');
280+
Object? text() => Text('Test!');
280281
281-
Object Container(Object text) => null;
282-
Object Text(Object text) => null;
282+
Object? Container(Object? text) => null;
283+
Object? Text(Object? text) => null;
283284
''';
284285

285286
await verifyCodeActionLiteralEdits(
@@ -308,7 +309,7 @@ void f() {}
308309
const content = '''
309310
import 'dart:io' as io;
310311
311-
i^o.File a;
312+
i^o.File? a;
312313
''';
313314

314315
await expectNoAction(
@@ -977,10 +978,14 @@ void foo2() {
977978
}
978979
}
979980

980-
abstract class RefactorCodeActionsTest extends AbstractCodeActionsTest {
981+
abstract class RefactorCodeActionsTest extends AbstractLspAnalysisServerTest
982+
with CodeActionsTestMixin {
981983
@override
982984
void setUp() {
983985
super.setUp();
986+
987+
setApplyEditSupport();
988+
setDocumentChangesSupport();
984989
setSupportedCodeActionKinds([CodeActionKind.Refactor]);
985990
}
986991
}

pkg/analysis_server/test/lsp/code_actions_source_test.dart

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ import 'dart:async';
66

77
import 'package:analysis_server/lsp_protocol/protocol.dart';
88
import 'package:analysis_server/src/lsp/constants.dart';
9+
import 'package:analysis_server/src/services/correction/fix_internal.dart';
910
import 'package:linter/src/rules.dart';
1011
import 'package:test/test.dart';
1112
import 'package:test_reflective_loader/test_reflective_loader.dart';
1213

1314
import '../tool/lsp_spec/matchers.dart';
14-
import 'code_actions_abstract.dart';
15+
import 'code_actions_mixin.dart';
16+
import 'server_abstract.dart';
1517

1618
void main() {
1719
defineReflectiveSuite(() {
@@ -21,7 +23,9 @@ void main() {
2123
});
2224
}
2325

24-
abstract class AbstractSourceCodeActionsTest extends AbstractCodeActionsTest {
26+
abstract class AbstractSourceCodeActionsTest
27+
extends AbstractLspAnalysisServerTest
28+
with CodeActionsTestMixin {
2529
/// For convenience since source code actions do not rely on a position (but
2630
/// one must be provided), uses [startOfDocPos] to avoid every test needing
2731
/// to include a '^' marker.
@@ -46,12 +50,25 @@ abstract class AbstractSourceCodeActionsTest extends AbstractCodeActionsTest {
4650
@override
4751
void setUp() {
4852
super.setUp();
53+
54+
setApplyEditSupport();
55+
setDocumentChangesSupport();
4956
setSupportedCodeActionKinds([CodeActionKind.Source]);
5057
}
5158
}
5259

5360
@reflectiveTest
5461
class FixAllSourceCodeActionsTest extends AbstractSourceCodeActionsTest {
62+
@override
63+
void setUp() {
64+
super.setUp();
65+
66+
// Fix tests are likely to have diagnostics that need fixing.
67+
failTestOnErrorDiagnostic = false;
68+
69+
registerBuiltInFixGenerators();
70+
}
71+
5572
Future<void> test_appliesCorrectEdits() async {
5673
const analysisOptionsContent = '''
5774
linter:
@@ -351,14 +368,14 @@ import 'dart:math';
351368
import 'dart:async';
352369
import 'dart:convert';
353370
354-
Completer foo;
371+
Completer? foo;
355372
int minified(int x, int y) => min(x, y);
356373
''';
357374
const expectedContent = '''
358375
import 'dart:async';
359376
import 'dart:math';
360377
361-
Completer foo;
378+
Completer? foo;
362379
int minified(int x, int y) => min(x, y);
363380
''';
364381

@@ -375,14 +392,14 @@ import 'dart:math';
375392
import 'dart:async';
376393
import 'dart:convert';
377394
378-
Completer foo;
395+
Completer? foo;
379396
int minified(int x, int y) => min(x, y);
380397
''';
381398
const expectedContent = '''
382399
import 'dart:async';
383400
import 'dart:math';
384401
385-
Completer foo;
402+
Completer? foo;
386403
int minified(int x, int y) => min(x, y);
387404
''';
388405

@@ -414,6 +431,7 @@ int minified(int x, int y) => min(x, y);
414431
}
415432

416433
Future<void> test_fileHasErrors_failsSilentlyForAutomatic() async {
434+
failTestOnErrorDiagnostic = false;
417435
var content = 'invalid dart code';
418436

419437
var codeAction = await expectCodeActionLiteral(
@@ -429,6 +447,7 @@ int minified(int x, int y) => min(x, y);
429447
}
430448

431449
Future<void> test_fileHasErrors_failsWithErrorForManual() async {
450+
failTestOnErrorDiagnostic = false;
432451
var content = 'invalid dart code';
433452

434453
var codeAction = await expectCodeActionLiteral(
@@ -464,7 +483,7 @@ int minified(int x, int y) => min(x, y);
464483
import 'dart:async';
465484
import 'dart:math';
466485
467-
Completer foo;
486+
Completer? foo;
468487
int minified(int x, int y) => min(x, y);
469488
''';
470489

@@ -500,12 +519,12 @@ int minified(int x, int y) => min(x, y);
500519
class SortMembersSourceCodeActionsTest extends AbstractSourceCodeActionsTest {
501520
Future<void> test_appliesCorrectEdits_withDocumentChangesSupport() async {
502521
const content = '''
503-
String b;
504-
String a;
522+
String? b;
523+
String? a;
505524
''';
506525
const expectedContent = '''
507-
String a;
508-
String b;
526+
String? a;
527+
String? b;
509528
''';
510529

511530
await verifyCodeActionLiteralEdits(
@@ -517,12 +536,12 @@ String b;
517536

518537
Future<void> test_appliesCorrectEdits_withoutDocumentChangesSupport() async {
519538
const content = '''
520-
String b;
521-
String a;
539+
String? b;
540+
String? a;
522541
''';
523542
const expectedContent = '''
524-
String a;
525-
String b;
543+
String? a;
544+
String? b;
526545
''';
527546

528547
setDocumentChangesSupport(false);
@@ -554,8 +573,8 @@ String b;
554573

555574
Future<void> test_failsIfClientDoesntApplyEdits() async {
556575
const content = '''
557-
String b;
558-
String a;
576+
String? b;
577+
String? a;
559578
''';
560579

561580
var codeAction = await expectCodeActionLiteral(
@@ -591,6 +610,7 @@ String a;
591610
}
592611

593612
Future<void> test_fileHasErrors_failsSilentlyForAutomatic() async {
613+
failTestOnErrorDiagnostic = false;
594614
var content = 'invalid dart code';
595615

596616
var codeAction = await expectCodeActionLiteral(
@@ -606,6 +626,7 @@ String a;
606626
}
607627

608628
Future<void> test_fileHasErrors_failsWithErrorForManual() async {
629+
failTestOnErrorDiagnostic = false;
609630
var content = 'invalid dart code';
610631

611632
var codeAction = await expectCodeActionLiteral(

0 commit comments

Comments
 (0)