diff --git a/pkg/analysis_server/test/analysis_server_base.dart b/pkg/analysis_server/test/analysis_server_base.dart index 6561561a3d0..c25d4d8e583 100644 --- a/pkg/analysis_server/test/analysis_server_base.dart +++ b/pkg/analysis_server/test/analysis_server_base.dart @@ -21,6 +21,7 @@ import 'package:analyzer/src/test_utilities/test_code_format.dart'; import 'package:analyzer/src/util/file_paths.dart' as file_paths; import 'package:analyzer_utilities/test/experiments/experiments.dart'; import 'package:analyzer_utilities/test/mock_packages/mock_packages.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:meta/meta.dart'; import 'package:test/test.dart'; import 'package:unified_analytics/unified_analytics.dart'; @@ -30,44 +31,6 @@ import 'mocks.dart'; import 'support/configuration_files.dart'; import 'utils/message_scheduler_test_view.dart'; -// TODO(scheglov): This is duplicate with pkg/linter/test/rule_test_support.dart. -// Keep them as consistent with each other as they are today. Ultimately combine -// them in a shared analyzer test utilities package (e.g. the analyzer_utilities -// package). -String analysisOptionsContent({ - String? include, - List experiments = const [], - List plugins = const [], - List rules = const [], -}) { - var buffer = StringBuffer(); - - if (include != null) { - buffer.writeln('include: $include'); - } - buffer.writeln('analyzer:'); - if (experiments.isNotEmpty) { - buffer.writeln(' enable-experiment:'); - for (var experiment in experiments) { - buffer.writeln(' - $experiment'); - } - } - if (plugins.isNotEmpty) { - buffer.writeln(' plugins:'); - for (var plugin in plugins) { - buffer.writeln(' - $plugin'); - } - } - - buffer.writeln('linter:'); - buffer.writeln(' rules:'); - for (var rule in rules) { - buffer.writeln(' - $rule'); - } - - return buffer.toString(); -} - class BlazeWorkspaceAnalysisServerTest extends ContextResolutionTest { String get myPackageLibPath => '$myPackageRootPath/lib'; diff --git a/pkg/analysis_server/test/domain_analysis_test.dart b/pkg/analysis_server/test/domain_analysis_test.dart index 31dbbfb3073..5f041cf2ca8 100644 --- a/pkg/analysis_server/test/domain_analysis_test.dart +++ b/pkg/analysis_server/test/domain_analysis_test.dart @@ -15,6 +15,7 @@ import 'package:analyzer/src/util/file_paths.dart' as file_paths; import 'package:analyzer/src/utilities/extensions/file_system.dart'; import 'package:analyzer_plugin/protocol/protocol_common.dart'; import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:analyzer_utilities/testing/tree_string_sink.dart'; import 'package:collection/collection.dart'; import 'package:test/test.dart'; @@ -2170,7 +2171,10 @@ class SetAnalysisRootsTest extends PubPackageAnalysisServerTest { // nestedFolder1 has plugin2 enabled. newAnalysisOptionsYamlFile( join(workspaceRootPath, 'package1', 'nestedFolder1'), - analysisOptionsContent(experiments: experiments, plugins: [plugin2.name]), + analysisOptionsContent( + experiments: experiments, + legacyPlugins: [plugin2.name], + ), ); // Write the single package config at the root that can resolve both @@ -2213,7 +2217,10 @@ class SetAnalysisRootsTest extends PubPackageAnalysisServerTest { // nestedFolder1 also has plugin1 enabled. newAnalysisOptionsYamlFile( join(workspaceRootPath, 'package1', 'nestedFolder1'), - analysisOptionsContent(experiments: experiments, plugins: [plugin1.name]), + analysisOptionsContent( + experiments: experiments, + legacyPlugins: [plugin1.name], + ), ); // Write the single package config at the root that can resolve both @@ -2449,7 +2456,7 @@ class SetAnalysisRootsTest extends PubPackageAnalysisServerTest { packagePath, analysisOptionsContent( experiments: experiments, - plugins: plugins.map((plugin) => plugin.name).toList(), + legacyPlugins: plugins.map((plugin) => plugin.name).toList(), ), ); diff --git a/pkg/analysis_server/test/edit/sort_members_test.dart b/pkg/analysis_server/test/edit/sort_members_test.dart index 94d51ffabcb..ff238544beb 100644 --- a/pkg/analysis_server/test/edit/sort_members_test.dart +++ b/pkg/analysis_server/test/edit/sort_members_test.dart @@ -4,6 +4,7 @@ import 'package:analysis_server/protocol/protocol_generated.dart'; import 'package:analyzer_plugin/protocol/protocol_common.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:linter/src/lint_names.dart'; import 'package:linter/src/rules.dart'; import 'package:test/test.dart'; diff --git a/pkg/analysis_server/test/integration/support/integration_tests.dart b/pkg/analysis_server/test/integration/support/integration_tests.dart index 0cbacdda4c0..a9d1311299f 100644 --- a/pkg/analysis_server/test/integration/support/integration_tests.dart +++ b/pkg/analysis_server/test/integration/support/integration_tests.dart @@ -14,11 +14,11 @@ import 'package:analyzer/file_system/physical_file_system.dart'; import 'package:analyzer/src/util/file_paths.dart' as file_paths; import 'package:analyzer_plugin/protocol/protocol_common.dart'; import 'package:analyzer_utilities/test/mock_packages/mock_packages.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:meta/meta.dart'; import 'package:path/path.dart' as path; import 'package:test/test.dart'; -import '../../analysis_server_base.dart' show analysisOptionsContent; import '../../support/configuration_files.dart'; import '../../support/sdk_paths.dart'; import 'integration_test_methods.dart'; diff --git a/pkg/analysis_server/test/services/completion/dart/declaration/closure_test.dart b/pkg/analysis_server/test/services/completion/dart/declaration/closure_test.dart index 895200577df..da036c84469 100644 --- a/pkg/analysis_server/test/services/completion/dart/declaration/closure_test.dart +++ b/pkg/analysis_server/test/services/completion/dart/declaration/closure_test.dart @@ -1,8 +1,12 @@ +// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:linter/src/lint_names.dart'; import 'package:linter/src/rules.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; -import '../../../../analysis_server_base.dart'; import '../../../../client/completion_driver_test.dart'; void main() { diff --git a/pkg/analysis_server/test/services/correction/sort_members_test.dart b/pkg/analysis_server/test/services/correction/sort_members_test.dart index 3ceeb4bd84e..71b11f863c4 100644 --- a/pkg/analysis_server/test/services/correction/sort_members_test.dart +++ b/pkg/analysis_server/test/services/correction/sort_members_test.dart @@ -4,12 +4,12 @@ import 'package:analysis_server/src/services/correction/sort_members.dart'; import 'package:analyzer_plugin/protocol/protocol_common.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:linter/src/lint_names.dart'; import 'package:test/test.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../../abstract_single_unit.dart'; -import '../../analysis_server_base.dart'; void main() { defineReflectiveSuite(() { diff --git a/pkg/analysis_server/test/services/refactoring/legacy/extract_method_test.dart b/pkg/analysis_server/test/services/refactoring/legacy/extract_method_test.dart index d6c03cf2d8c..cccb3b0cc56 100644 --- a/pkg/analysis_server/test/services/refactoring/legacy/extract_method_test.dart +++ b/pkg/analysis_server/test/services/refactoring/legacy/extract_method_test.dart @@ -6,12 +6,12 @@ import 'package:analysis_server/src/services/refactoring/legacy/extract_method.d import 'package:analyzer/source/source.dart'; import 'package:analyzer_plugin/protocol/protocol_common.dart'; import 'package:analyzer_plugin/src/utilities/string_utilities.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:linter/src/rules.dart'; import 'package:test/test.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../../../abstract_single_unit.dart'; -import '../../../analysis_server_base.dart'; import 'abstract_refactoring.dart'; void main() { diff --git a/pkg/analysis_server/test/src/computer/import_elements_computer_test.dart b/pkg/analysis_server/test/src/computer/import_elements_computer_test.dart index 15307965358..b190248ec4e 100644 --- a/pkg/analysis_server/test/src/computer/import_elements_computer_test.dart +++ b/pkg/analysis_server/test/src/computer/import_elements_computer_test.dart @@ -6,12 +6,12 @@ import 'package:analysis_server/protocol/protocol_generated.dart'; import 'package:analysis_server/src/computer/import_elements_computer.dart'; import 'package:analyzer/src/test_utilities/package_config_file_builder.dart'; import 'package:analyzer_plugin/protocol/protocol_common.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:linter/src/rules.dart'; import 'package:test/test.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../../abstract_context.dart'; -import '../../analysis_server_base.dart'; void main() { defineReflectiveSuite(() { diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart index c73bfc15a36..c61a8bf839b 100644 --- a/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart +++ b/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart @@ -4,9 +4,9 @@ import 'package:analysis_server/src/services/correction/fix.dart'; import 'package:analyzer_plugin/utilities/fixes/fixes.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; -import '../../../../analysis_server_base.dart'; import 'fix_processor.dart'; void main() { diff --git a/pkg/analyzer/test/generated/error_suppression_test.dart b/pkg/analyzer/test/generated/error_suppression_test.dart index d78b1dd66db..5af8bacd82b 100644 --- a/pkg/analyzer/test/generated/error_suppression_test.dart +++ b/pkg/analyzer/test/generated/error_suppression_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:linter/src/lint_codes.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; diff --git a/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart b/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart index 4a1fcc01494..522123438b4 100644 --- a/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart +++ b/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart @@ -21,11 +21,10 @@ import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart'; import 'package:analyzer/src/util/file_paths.dart' as file_paths; import 'package:analyzer/src/workspace/basic.dart'; import 'package:analyzer/src/workspace/blaze.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test/test.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; -import '../resolution/context_collection_resolution.dart'; - main() { defineReflectiveSuite(() { defineReflectiveTests(ContextBuilderImplTest); diff --git a/pkg/analyzer/test/src/dart/analysis/driver_caching_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_caching_test.dart index 58d457f957c..0080877f54c 100644 --- a/pkg/analyzer/test/src/dart/analysis/driver_caching_test.dart +++ b/pkg/analyzer/test/src/dart/analysis/driver_caching_test.dart @@ -10,6 +10,7 @@ import 'package:analyzer/error/error.dart'; import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/src/dart/analysis/driver.dart'; import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test/test.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart index e566a5ba8ec..f42146202e5 100644 --- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart +++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart @@ -20,6 +20,7 @@ import 'package:analyzer/src/fine/requirements.dart'; import 'package:analyzer/src/lint/linter.dart'; import 'package:analyzer/src/test_utilities/lint_registration_mixin.dart'; import 'package:analyzer/src/utilities/extensions/async.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:analyzer_utilities/testing/tree_string_sink.dart'; import 'package:linter/src/rules.dart'; import 'package:test/test.dart'; diff --git a/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart index 245c19676a0..35aa5822deb 100644 --- a/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart +++ b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart @@ -25,6 +25,7 @@ import 'package:analyzer/src/workspace/gn.dart'; import 'package:analyzer/src/workspace/pub.dart'; import 'package:analyzer_utilities/test/experiments/experiments.dart'; import 'package:analyzer_utilities/test/mock_packages/mock_packages.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:analyzer_utilities/testing/tree_string_sink.dart'; import 'package:linter/src/rules.dart'; import 'package:meta/meta.dart'; @@ -37,55 +38,6 @@ import 'resolution.dart'; export 'package:analyzer/src/test_utilities/package_config_file_builder.dart'; -// TODO(srawlins): This is duplicate with pkg/linter/test/rule_test_support.dart -// and pkg/analysis_server/test/analysis_server_base.dart. -// Keep them as consistent with each other as they are today. Ultimately combine -// them in a shared analyzer test utilities package (e.g. the analyzer_utilities -// package). -String analysisOptionsContent({ - List experiments = const [], - List plugins = const [], - List rules = const [], - bool strictCasts = false, - bool strictInference = false, - bool strictRawTypes = false, - List unignorableNames = const [], -}) { - var buffer = StringBuffer(); - - buffer.writeln('analyzer:'); - if (experiments.isNotEmpty) { - buffer.writeln(' enable-experiment:'); - for (var experiment in experiments) { - buffer.writeln(' - $experiment'); - } - } - - buffer.writeln(' language:'); - buffer.writeln(' strict-casts: $strictCasts'); - buffer.writeln(' strict-inference: $strictInference'); - buffer.writeln(' strict-raw-types: $strictRawTypes'); - buffer.writeln(' cannot-ignore:'); - for (var name in unignorableNames) { - buffer.writeln(' - $name'); - } - - if (plugins.isNotEmpty) { - buffer.writeln(' plugins:'); - for (var plugin in plugins) { - buffer.writeln(' - $plugin'); - } - } - - buffer.writeln('linter:'); - buffer.writeln(' rules:'); - for (var rule in rules) { - buffer.writeln(' - $rule'); - } - - return buffer.toString(); -} - // TODO(scheglov): This is duplicate with // pkg/linter/test/rule_test_support.dart. Keep them as consistent with each // other as they are today. Ultimately combine them in a shared analyzer test diff --git a/pkg/analyzer/test/src/diagnostics/duplicate_ignore_test.dart b/pkg/analyzer/test/src/diagnostics/duplicate_ignore_test.dart index 7d059e2b4ef..1d3b367a834 100644 --- a/pkg/analyzer/test/src/diagnostics/duplicate_ignore_test.dart +++ b/pkg/analyzer/test/src/diagnostics/duplicate_ignore_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; diff --git a/pkg/analyzer/test/src/diagnostics/inference_failure_on_collection_literal_test.dart b/pkg/analyzer/test/src/diagnostics/inference_failure_on_collection_literal_test.dart index e43de093ae8..662dac25b4b 100644 --- a/pkg/analyzer/test/src/diagnostics/inference_failure_on_collection_literal_test.dart +++ b/pkg/analyzer/test/src/diagnostics/inference_failure_on_collection_literal_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; diff --git a/pkg/analyzer/test/src/diagnostics/inference_failure_on_function_invocation_test.dart b/pkg/analyzer/test/src/diagnostics/inference_failure_on_function_invocation_test.dart index 90f6327c9f9..21a8a6cf9b7 100644 --- a/pkg/analyzer/test/src/diagnostics/inference_failure_on_function_invocation_test.dart +++ b/pkg/analyzer/test/src/diagnostics/inference_failure_on_function_invocation_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; diff --git a/pkg/analyzer/test/src/diagnostics/inference_failure_on_function_return_type_test.dart b/pkg/analyzer/test/src/diagnostics/inference_failure_on_function_return_type_test.dart index 98081ae68fd..b40256b26bf 100644 --- a/pkg/analyzer/test/src/diagnostics/inference_failure_on_function_return_type_test.dart +++ b/pkg/analyzer/test/src/diagnostics/inference_failure_on_function_return_type_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; diff --git a/pkg/analyzer/test/src/diagnostics/inference_failure_on_generic_invocation_test.dart b/pkg/analyzer/test/src/diagnostics/inference_failure_on_generic_invocation_test.dart index 2cc33c082fe..9723db87b75 100644 --- a/pkg/analyzer/test/src/diagnostics/inference_failure_on_generic_invocation_test.dart +++ b/pkg/analyzer/test/src/diagnostics/inference_failure_on_generic_invocation_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; diff --git a/pkg/analyzer/test/src/diagnostics/inference_failure_on_instance_creation_test.dart b/pkg/analyzer/test/src/diagnostics/inference_failure_on_instance_creation_test.dart index 0c0c3bec165..3d9a771cb40 100644 --- a/pkg/analyzer/test/src/diagnostics/inference_failure_on_instance_creation_test.dart +++ b/pkg/analyzer/test/src/diagnostics/inference_failure_on_instance_creation_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test/test.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; diff --git a/pkg/analyzer/test/src/diagnostics/inference_failure_on_uninitialized_variable_test.dart b/pkg/analyzer/test/src/diagnostics/inference_failure_on_uninitialized_variable_test.dart index 48d4a9571b9..01a894cdc50 100644 --- a/pkg/analyzer/test/src/diagnostics/inference_failure_on_uninitialized_variable_test.dart +++ b/pkg/analyzer/test/src/diagnostics/inference_failure_on_uninitialized_variable_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; diff --git a/pkg/analyzer/test/src/diagnostics/inference_failure_on_untyped_parameter_test.dart b/pkg/analyzer/test/src/diagnostics/inference_failure_on_untyped_parameter_test.dart index 8d5b2b41aac..906b6065731 100644 --- a/pkg/analyzer/test/src/diagnostics/inference_failure_on_untyped_parameter_test.dart +++ b/pkg/analyzer/test/src/diagnostics/inference_failure_on_untyped_parameter_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; diff --git a/pkg/analyzer/test/src/diagnostics/invalid_use_of_internal_member_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_use_of_internal_member_test.dart index 0365c87bda0..b345ef98124 100644 --- a/pkg/analyzer/test/src/diagnostics/invalid_use_of_internal_member_test.dart +++ b/pkg/analyzer/test/src/diagnostics/invalid_use_of_internal_member_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; diff --git a/pkg/analyzer/test/src/diagnostics/strict_raw_type_test.dart b/pkg/analyzer/test/src/diagnostics/strict_raw_type_test.dart index 36c3d3d11eb..6f0bb8e7202 100644 --- a/pkg/analyzer/test/src/diagnostics/strict_raw_type_test.dart +++ b/pkg/analyzer/test/src/diagnostics/strict_raw_type_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/src/error/codes.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; diff --git a/pkg/analyzer/test/src/diagnostics/unignorable_ignore_test.dart b/pkg/analyzer/test/src/diagnostics/unignorable_ignore_test.dart index 6d023309d15..2ad1ee72036 100644 --- a/pkg/analyzer/test/src/diagnostics/unignorable_ignore_test.dart +++ b/pkg/analyzer/test/src/diagnostics/unignorable_ignore_test.dart @@ -7,6 +7,7 @@ import 'package:analyzer/dart/ast/visitor.dart'; import 'package:analyzer/src/error/codes.dart'; import 'package:analyzer/src/lint/linter.dart'; import 'package:analyzer/src/test_utilities/lint_registration_mixin.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../dart/resolution/context_collection_resolution.dart'; diff --git a/pkg/analyzer/test/src/summary/elements/type_inference_test.dart b/pkg/analyzer/test/src/summary/elements/type_inference_test.dart index 80f381c8e03..0a3411b37fd 100644 --- a/pkg/analyzer/test/src/summary/elements/type_inference_test.dart +++ b/pkg/analyzer/test/src/summary/elements/type_inference_test.dart @@ -3,10 +3,10 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/dart/element/type.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test/test.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; -import '../../dart/resolution/context_collection_resolution.dart'; import '../../dart/resolution/node_text_expectations.dart'; import '../elements_base.dart'; diff --git a/pkg/analyzer/test/verify_diagnostics_test.dart b/pkg/analyzer/test/verify_diagnostics_test.dart index d26aaed380e..29c05363520 100644 --- a/pkg/analyzer/test/verify_diagnostics_test.dart +++ b/pkg/analyzer/test/verify_diagnostics_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/error/error.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test/test.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; diff --git a/pkg/analyzer_utilities/lib/testing/test_support.dart b/pkg/analyzer_utilities/lib/testing/test_support.dart new file mode 100644 index 00000000000..2b1d5b41206 --- /dev/null +++ b/pkg/analyzer_utilities/lib/testing/test_support.dart @@ -0,0 +1,57 @@ +// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +/// Returns the content for an analysis options file, specified appropriately +/// with the given parameter values. +String analysisOptionsContent({ + // TODO(srawlins): Change this maybe to a List. + String? include, + List experiments = const [], + List legacyPlugins = const [], + List rules = const [], + bool strictCasts = false, + bool strictInference = false, + bool strictRawTypes = false, + List unignorableNames = const [], +}) { + var buffer = StringBuffer(); + + if (include != null) { + buffer.writeln('include: $include'); + } + + buffer.writeln('analyzer:'); + if (experiments.isNotEmpty) { + buffer.writeln(' enable-experiment:'); + for (var experiment in experiments) { + buffer.writeln(' - $experiment'); + } + } + + buffer.writeln(' language:'); + buffer.writeln(' strict-casts: $strictCasts'); + buffer.writeln(' strict-inference: $strictInference'); + buffer.writeln(' strict-raw-types: $strictRawTypes'); + if (unignorableNames.isNotEmpty) { + buffer.writeln(' cannot-ignore:'); + for (var name in unignorableNames) { + buffer.writeln(' - $name'); + } + } + + if (legacyPlugins.isNotEmpty) { + buffer.writeln(' plugins:'); + for (var plugin in legacyPlugins) { + buffer.writeln(' - $plugin'); + } + } + + buffer.writeln('linter:'); + buffer.writeln(' rules:'); + for (var rule in rules) { + buffer.writeln(' - $rule'); + } + + return buffer.toString(); +} diff --git a/pkg/linter/test/rule_test_support.dart b/pkg/linter/test/rule_test_support.dart index f650280f947..2e6645e93e1 100644 --- a/pkg/linter/test/rule_test_support.dart +++ b/pkg/linter/test/rule_test_support.dart @@ -22,6 +22,7 @@ import 'package:analyzer/src/test_utilities/package_config_file_builder.dart'; import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart'; import 'package:analyzer_utilities/test/experiments/experiments.dart'; import 'package:analyzer_utilities/test/mock_packages/mock_packages.dart'; +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:collection/collection.dart'; import 'package:linter/src/analyzer.dart'; import 'package:linter/src/rules.dart'; @@ -33,35 +34,6 @@ export 'package:analyzer/src/error/codes.dart'; export 'package:analyzer/src/test_utilities/package_config_file_builder.dart'; export 'package:linter/src/lint_names.dart'; -// TODO(srawlins): This is duplicate with -// pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart and -// and pkg/analysis_server/test/analysis_server_base.dart. Keep them as -// consistent with each other as they are today. Ultimately combine them in a -// shared analyzer test utilities package. -String analysisOptionsContent({ - List experiments = const [], - List rules = const [], -}) { - var buffer = StringBuffer(); - - buffer.writeln('analyzer:'); - buffer.writeln(' enable-experiment:'); - for (var experiment in experiments) { - buffer.writeln(' - $experiment'); - } - - buffer.writeln(' optional-checks:'); - buffer.writeln(' propagate-linter-exceptions: true'); - - buffer.writeln('linter:'); - buffer.writeln(' rules:'); - for (var rule in rules) { - buffer.writeln(' - $rule'); - } - - return buffer.toString(); -} - ExpectedDiagnostic error( ErrorCode code, int offset, diff --git a/pkg/linter/test/rules/public_member_api_docs_test.dart b/pkg/linter/test/rules/public_member_api_docs_test.dart index 88acf1a5cd8..eb739e5f256 100644 --- a/pkg/linter/test/rules/public_member_api_docs_test.dart +++ b/pkg/linter/test/rules/public_member_api_docs_test.dart @@ -2,6 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'package:analyzer_utilities/testing/test_support.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../rule_test_support.dart';