AO. More changes to AnalysisOptionsParserTest.

PS1: Renames around valid / invalid.
PS3: More renames.
PS5: Remove duplicates from test_codeStyle_
PS7: Remove duplicates from test_analyzer_cannotIgnore_ and test_plugins_
PS9: Remove noisy 'valid' word from names.
PS11: Renames for a few 'supported' names.
PS13: Remove duplicate test_analyzer_optionalChecks_chromeOsManifestChecks and test_analyzer_optionalChecks_propagateLinterExceptions.
PS15: Renames for test_analyzer_plugins_
PS17: Renames for test_analyzer_errors_
PS19: Remove duplicate test_analyzer_optionalChecks_propagateLinterExceptions_mapKey, test_include_recursive_self_direct
PS21: Renames for test_linter_rules_
PS23: sort

Bug: https://github.com/dart-lang/sdk/issues/63580
Change-Id: I22be975eca2231c74c56550450c93663162dd358
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/517521
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/test/src/analysis_options/analysis_options_parser_test.dart b/pkg/analyzer/test/src/analysis_options/analysis_options_parser_test.dart
index aea5d72..92a82d8 100644
--- a/pkg/analyzer/test/src/analysis_options/analysis_options_parser_test.dart
+++ b/pkg/analyzer/test/src/analysis_options/analysis_options_parser_test.dart
@@ -60,20 +60,18 @@
     super.setUp();
   }
 
-  test_analyzer_cannotIgnore_invalid_badValue() {
+  test_analyzer_cannotIgnore_errorSeverity() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   cannot-ignore:
-    - not_an_error_code
-//    ^^^^^^^^^^^^^^^^^
-// [diag.unrecognizedErrorCode] 'not_an_error_code' isn't a recognized diagnostic code.
+    - error
 ''');
 
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  unignorableDiagnosticCodeNames
-    not_an_error_code
-''');
+    // Keep this as a broad probe: `error` should include all diagnostics with
+    // error severity, not just a single named code.
+    var unignorableCodeNames = analysisOptions.unignorableDiagnosticCodeNames;
+    expect(unignorableCodeNames, contains('invalid_annotation'));
+    expect(unignorableCodeNames.length, greaterThan(500));
   }
 
   test_analyzer_cannotIgnore_invalid_notList() {
@@ -90,6 +88,22 @@
 ''');
   }
 
+  test_analyzer_cannotIgnore_invalid_unrecognizedCode() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+analyzer:
+  cannot-ignore:
+    - not_an_error_code
+//    ^^^^^^^^^^^^^^^^^
+// [diag.unrecognizedErrorCode] 'not_an_error_code' isn't a recognized diagnostic code.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  unignorableDiagnosticCodeNames
+    not_an_error_code
+''');
+  }
+
   test_analyzer_cannotIgnore_invalid_valueNotString() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
@@ -104,47 +118,22 @@
 ''');
   }
 
-  test_analyzer_cannotIgnore_severity() {
+  test_analyzer_cannotIgnore_lintRule() {
+    registerLintRule(TestRule());
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   cannot-ignore:
-    - error
+    - fantastic_test_rule
 ''');
 
-    var unignorableCodeNames = analysisOptions.unignorableDiagnosticCodeNames;
-    expect(unignorableCodeNames, contains('invalid_annotation'));
-    expect(unignorableCodeNames.length, greaterThan(500));
-  }
-
-  test_analyzer_cannotIgnore_severity_withProcessor() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-analyzer:
-  errors:
-    unused_import: error
-  cannot-ignore:
-    - error
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  unignorableDiagnosticCodeNames
+    fantastic_test_rule
 ''');
-
-    var unignorableCodeNames = analysisOptions.unignorableDiagnosticCodeNames;
-    expect(unignorableCodeNames, contains('unused_import'));
   }
 
-  test_analyzer_cannotIgnore_severity_withProcessor_oldSeverity() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-analyzer:
-  errors:
-    unused_import: error
-  cannot-ignore:
-    - warning
-''');
-
-    // Since `unused_import` has been reclassified as an error,
-    // `cannot-ignore: - warning` should not apply to it.
-    var unignorableCodeNames = analysisOptions.unignorableDiagnosticCodeNames;
-    expect(unignorableCodeNames, isNot(contains('unused_import')));
-  }
-
-  test_analyzer_cannotIgnore_valid() {
+  test_analyzer_cannotIgnore_multipleCodes() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   cannot-ignore:
@@ -160,7 +149,35 @@
 ''');
   }
 
-  test_analyzer_cannotIgnore_valid_code() {
+  test_analyzer_cannotIgnore_severity_errorIncludesReclassifiedDiagnostic() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+analyzer:
+  errors:
+    unused_import: error
+  cannot-ignore:
+    - error
+''');
+
+    var unignorableCodeNames = analysisOptions.unignorableDiagnosticCodeNames;
+    expect(unignorableCodeNames, contains('unused_import'));
+  }
+
+  test_analyzer_cannotIgnore_severity_warningExcludesReclassifiedDiagnostic() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+analyzer:
+  errors:
+    unused_import: error
+  cannot-ignore:
+    - warning
+''');
+
+    // Since `unused_import` has been reclassified as an error,
+    // `cannot-ignore: - warning` should not apply to it.
+    var unignorableCodeNames = analysisOptions.unignorableDiagnosticCodeNames;
+    expect(unignorableCodeNames, isNot(contains('unused_import')));
+  }
+
+  test_analyzer_cannotIgnore_singleCode() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   cannot-ignore:
@@ -174,35 +191,6 @@
 ''');
   }
 
-  test_analyzer_cannotIgnore_valid_lintRule() {
-    registerLintRule(TestRule());
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-analyzer:
-  cannot-ignore:
-    - fantastic_test_rule
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  unignorableDiagnosticCodeNames
-    fantastic_test_rule
-''');
-  }
-
-  test_analyzer_cannotIgnore_valid_severity() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-analyzer:
-  cannot-ignore:
-    - error
-''');
-
-    // Keep this as a broad probe: `error` should include all diagnostics with
-    // error severity, not just a single named code.
-    var unignorableCodeNames = analysisOptions.unignorableDiagnosticCodeNames;
-    expect(unignorableCodeNames, contains('invalid_annotation'));
-    expect(unignorableCodeNames.length, greaterThan(500));
-  }
-
   test_analyzer_empty() {
     registerLintRule(TestRule());
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
@@ -306,7 +294,7 @@
 ''');
   }
 
-  test_analyzer_enableExperiment_valid() {
+  test_analyzer_enableExperiment_knownExperiment() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   enable-experiment:
@@ -322,26 +310,51 @@
 ''');
   }
 
-  test_analyzer_errors_cannotBeIgnoredByUniqueName() {
+  test_analyzer_errors_errorSeverityAppliesToWarningDiagnostic() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   errors:
-    return_type_invalid_for_catch_error: ignore
-//  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// [diag.unrecognizedErrorCode] 'return_type_invalid_for_catch_error' isn't a recognized diagnostic code.
+    unused_local_variable: error
 ''');
 
     assertAnalysisOptionsText(analysisOptions, r'''
 AnalysisOptionsImpl
   errorProcessors
-    return_type_invalid_for_catch_error: ignore
+    unused_local_variable: error
 ''');
 
     var warning = Diagnostic.tmp(
       source: FileSource(newFile('/test.dart', '')),
       offset: 0,
       length: 1,
-      diagnosticCode: diag.returnTypeInvalidForCatchError,
+      diagnosticCode: diag.unusedLocalVariable,
+      arguments: [
+        ['x'],
+      ],
+    );
+
+    var processor = analysisOptions.errorProcessors.single;
+    expect(processor.appliesTo(warning), isTrue);
+  }
+
+  test_analyzer_errors_ignoreSeverityAppliesToErrorDiagnostic() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+analyzer:
+  errors:
+    invalid_assignment: ignore
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  errorProcessors
+    invalid_assignment: ignore
+''');
+
+    var error = Diagnostic.tmp(
+      source: FileSource(newFile('/test.dart', '')),
+      offset: 0,
+      length: 1,
+      diagnosticCode: diag.invalidAssignment,
       arguments: [
         ['x'],
         ['y'],
@@ -349,85 +362,7 @@
     );
 
     var processor = analysisOptions.errorProcessors.single;
-    expect(processor.appliesTo(warning), isFalse);
-  }
-
-  test_analyzer_errors_code_supported() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-analyzer:
-  errors:
-    unused_local_variable: ignore
-    invalid_assignment: warning
-    assignment_of_do_not_store: error
-    dead_code: info
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  errorProcessors
-    unused_local_variable: ignore
-    invalid_assignment: warning
-    assignment_of_do_not_store: error
-    dead_code: info
-''');
-  }
-
-  test_analyzer_errors_code_supported_invalidValue() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-analyzer:
-  errors:
-    unused_local_variable: ftw
-//                         ^^^
-// [diag.unsupportedOptionWithLegalValues] The option 'ftw' isn't supported by 'errors'.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-''');
-  }
-
-  test_analyzer_errors_code_supported_nullValue() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-analyzer:
-  errors:
-    unused_local_variable: null
-//                         ^^^^
-// [diag.unsupportedOptionWithLegalValues] The option 'null' isn't supported by 'errors'.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-''');
-  }
-
-  test_analyzer_errors_code_unsupported() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-analyzer:
-  errors:
-    not_supported: ignore
-//  ^^^^^^^^^^^^^
-// [diag.unrecognizedErrorCode] 'not_supported' isn't a recognized diagnostic code.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  errorProcessors
-    not_supported: ignore
-''');
-  }
-
-  test_analyzer_errors_code_unsupported_null() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-analyzer:
-  errors:
-    null: ignore
-//  ^^^^
-// [diag.unrecognizedErrorCode] 'null' isn't a recognized diagnostic code.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-''');
+    expect(processor.appliesTo(error), isTrue);
   }
 
   test_analyzer_errors_include_merged() {
@@ -629,7 +564,35 @@
 ''');
   }
 
-  test_analyzer_errors_lintCode_recognized() {
+  test_analyzer_errors_invalidNullSeverity() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+analyzer:
+  errors:
+    unused_local_variable: null
+//                         ^^^^
+// [diag.unsupportedOptionWithLegalValues] The option 'null' isn't supported by 'errors'.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+''');
+  }
+
+  test_analyzer_errors_invalidSeverity() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+analyzer:
+  errors:
+    unused_local_variable: ftw
+//                         ^^^
+// [diag.unsupportedOptionWithLegalValues] The option 'ftw' isn't supported by 'errors'.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+''');
+  }
+
+  test_analyzer_errors_registeredLintCode() {
     registerLintRule(TestRule());
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
@@ -644,62 +607,27 @@
 ''');
   }
 
-  test_analyzer_errors_severityIsError() {
+  test_analyzer_errors_severityValues() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   errors:
-    unused_local_variable: error
+    unused_local_variable: ignore
+    invalid_assignment: warning
+    assignment_of_do_not_store: error
+    dead_code: info
 ''');
 
     assertAnalysisOptionsText(analysisOptions, r'''
 AnalysisOptionsImpl
   errorProcessors
-    unused_local_variable: error
+    unused_local_variable: ignore
+    invalid_assignment: warning
+    assignment_of_do_not_store: error
+    dead_code: info
 ''');
-
-    var warning = Diagnostic.tmp(
-      source: FileSource(newFile('/test.dart', '')),
-      offset: 0,
-      length: 1,
-      diagnosticCode: diag.unusedLocalVariable,
-      arguments: [
-        ['x'],
-      ],
-    );
-
-    var processor = analysisOptions.errorProcessors.single;
-    expect(processor.appliesTo(warning), isTrue);
   }
 
-  test_analyzer_errors_severityIsIgnore() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-analyzer:
-  errors:
-    invalid_assignment: ignore
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  errorProcessors
-    invalid_assignment: ignore
-''');
-
-    var error = Diagnostic.tmp(
-      source: FileSource(newFile('/test.dart', '')),
-      offset: 0,
-      length: 1,
-      diagnosticCode: diag.invalidAssignment,
-      arguments: [
-        ['x'],
-        ['y'],
-      ],
-    );
-
-    var processor = analysisOptions.errorProcessors.single;
-    expect(processor.appliesTo(error), isTrue);
-  }
-
-  test_analyzer_errors_sharedNameAppliesToAllSharedCodes() {
+  test_analyzer_errors_sharedNameMatchesSharedDiagnosticCode() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   errors:
@@ -727,6 +655,66 @@
     expect(processor.appliesTo(warning), isTrue);
   }
 
+  test_analyzer_errors_uniqueNameDoesNotMatchSharedDiagnosticCode() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+analyzer:
+  errors:
+    return_type_invalid_for_catch_error: ignore
+//  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// [diag.unrecognizedErrorCode] 'return_type_invalid_for_catch_error' isn't a recognized diagnostic code.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  errorProcessors
+    return_type_invalid_for_catch_error: ignore
+''');
+
+    var warning = Diagnostic.tmp(
+      source: FileSource(newFile('/test.dart', '')),
+      offset: 0,
+      length: 1,
+      diagnosticCode: diag.returnTypeInvalidForCatchError,
+      arguments: [
+        ['x'],
+        ['y'],
+      ],
+    );
+
+    var processor = analysisOptions.errorProcessors.single;
+    expect(processor.appliesTo(warning), isFalse);
+  }
+
+  test_analyzer_errors_unrecognizedCode() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+analyzer:
+  errors:
+    not_supported: ignore
+//  ^^^^^^^^^^^^^
+// [diag.unrecognizedErrorCode] 'not_supported' isn't a recognized diagnostic code.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  errorProcessors
+    not_supported: ignore
+''');
+  }
+
+  test_analyzer_errors_unrecognizedNullCode() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+analyzer:
+  errors:
+    null: ignore
+//  ^^^^
+// [diag.unrecognizedErrorCode] 'null' isn't a recognized diagnostic code.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+''');
+  }
+
   test_analyzer_exclude_include_merged() {
     var options = parseAnalysisOptionsFilesWithDiagnostics({
       analysisOptionsFile: r'''
@@ -803,7 +791,7 @@
 ''');
   }
 
-  test_analyzer_exclude_valid_patterns() {
+  test_analyzer_exclude_patterns() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   exclude:
@@ -819,7 +807,7 @@
 ''');
   }
 
-  test_analyzer_exclude_valid_singlePattern() {
+  test_analyzer_exclude_singlePattern() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   exclude:
@@ -1095,20 +1083,7 @@
 ''');
   }
 
-  test_analyzer_optionalChecks_chromeOsManifestChecks_supported() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-analyzer:
-  optional-checks:
-    chrome-os-manifest-checks
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  chromeOsManifestChecks: true
-''');
-  }
-
-  test_analyzer_optionalChecks_chromeOsManifestChecks_valid_map() {
+  test_analyzer_optionalChecks_chromeOsManifestChecks_map() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   optional-checks:
@@ -1120,7 +1095,7 @@
 ''');
   }
 
-  test_analyzer_optionalChecks_chromeOsManifestChecks_valid_scalar() {
+  test_analyzer_optionalChecks_chromeOsManifestChecks_scalar() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   optional-checks:
@@ -1171,6 +1146,17 @@
 ''');
   }
 
+  test_analyzer_optionalChecks_propagateLinterExceptions_false() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+analyzer:
+  optional-checks:
+    propagate-linter-exceptions: false
+''');
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+''');
+  }
+
   test_analyzer_optionalChecks_propagateLinterExceptions_invalid_notScalar() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
@@ -1186,44 +1172,7 @@
 ''');
   }
 
-  test_analyzer_optionalChecks_propagateLinterExceptions_supported() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-analyzer:
-  optional-checks:
-    propagate-linter-exceptions
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  propagateLinterExceptions: true
-''');
-  }
-
-  test_analyzer_optionalChecks_propagateLinterExceptions_valid_false() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-analyzer:
-  optional-checks:
-    propagate-linter-exceptions: false
-''');
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-''');
-  }
-
-  test_analyzer_optionalChecks_propagateLinterExceptions_valid_mapKey() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-analyzer:
-  optional-checks:
-    propagate-linter-exceptions: true
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  propagateLinterExceptions: true
-''');
-  }
-
-  test_analyzer_optionalChecks_propagateLinterExceptions_valid_scalar() {
+  test_analyzer_optionalChecks_propagateLinterExceptions_scalar() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   optional-checks:
@@ -1235,7 +1184,7 @@
 ''');
   }
 
-  test_analyzer_optionalChecks_propagateLinterExceptions_valid_true() {
+  test_analyzer_optionalChecks_propagateLinterExceptions_true() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   optional-checks:
@@ -1247,7 +1196,143 @@
 ''');
   }
 
-  test_analyzer_plugins_legacy_chooseFirst() {
+  test_analyzer_plugins_include_includedListThenDirectList() {
+    newFile('$testPackageRootPath/other_options.yaml', '''
+analyzer:
+  plugins:
+    - plugin_one
+''');
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
+include: other_options.yaml
+analyzer:
+  plugins:
+    - plugin_two
+//    ^^^^^^^^^^
+// [diag.multiplePlugins] Multiple plugins can't be enabled.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  enabledLegacyPluginNames
+    plugin_one
+''');
+  }
+
+  test_analyzer_plugins_include_includedListThenDirectMap() {
+    newFile('$testPackageRootPath/other_options.yaml', '''
+analyzer:
+  plugins:
+    - plugin_one
+''');
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
+include: other_options.yaml
+analyzer:
+  plugins:
+    plugin_two:
+//  ^^^^^^^^^^
+// [diag.multiplePlugins] Multiple plugins can't be enabled.
+      foo: bar
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  enabledLegacyPluginNames
+    plugin_two
+''');
+  }
+
+  test_analyzer_plugins_include_includedListThenDirectScalar() {
+    newFile('$testPackageRootPath/other_options.yaml', '''
+analyzer:
+  plugins:
+    - plugin_one
+''');
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
+include: other_options.yaml
+analyzer:
+  plugins: plugin_two
+//         ^^^^^^^^^^
+// [diag.multiplePlugins] Multiple plugins can't be enabled.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  enabledLegacyPluginNames
+    plugin_two
+''');
+  }
+
+  test_analyzer_plugins_include_indirectIncludedListThenDirectList() {
+    newFile('$testPackageRootPath/more_options.yaml', '''
+analyzer:
+  plugins:
+    - plugin_one
+''');
+    newFile('$testPackageRootPath/other_options.yaml', '''
+include: more_options.yaml
+''');
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
+include: other_options.yaml
+analyzer:
+  plugins:
+    - plugin_two
+//    ^^^^^^^^^^
+// [diag.multiplePlugins] Multiple plugins can't be enabled.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  enabledLegacyPluginNames
+    plugin_one
+''');
+  }
+
+  test_analyzer_plugins_include_indirectIncludedListThenIncludedList() {
+    newFile('$testPackageRootPath/more_options.yaml', '''
+analyzer:
+  plugins:
+    - plugin_one
+''');
+    newFile('$testPackageRootPath/other_options.yaml', '''
+include: more_options.yaml
+analyzer:
+  plugins:
+    - plugin_two
+''');
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
+include: other_options.yaml
+//       ^^^^^^^^^^^^^^^^^^
+// [diag.includedFileWarning] Warning in the included options file /home/test/other_options.yaml(54..63): Multiple plugins can't be enabled.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  enabledLegacyPluginNames
+    plugin_one
+''');
+  }
+
+  test_analyzer_plugins_include_map() {
+    var options = parseAnalysisOptionsFilesWithDiagnostics({
+      analysisOptionsFile: r'''
+include: other_options.yaml
+''',
+      getFile('$testPackageRootPath/other_options.yaml'): '''
+analyzer:
+  plugins:
+    toplevelplugin:
+      enabled: true
+''',
+    });
+
+    assertAnalysisOptionsText(options, r'''
+AnalysisOptionsImpl
+  enabledLegacyPluginNames
+    toplevelplugin
+''');
+  }
+
+  test_analyzer_plugins_include_nestedMultiple_chooseFirst() {
     var options = parseAnalysisOptionsFilesWithDiagnostics({
       analysisOptionsFile: r'''
 include: other_options.yaml
@@ -1293,27 +1378,7 @@
 ''');
   }
 
-  test_analyzer_plugins_legacy_include() {
-    var options = parseAnalysisOptionsFilesWithDiagnostics({
-      analysisOptionsFile: r'''
-include: other_options.yaml
-''',
-      getFile('$testPackageRootPath/other_options.yaml'): '''
-analyzer:
-  plugins:
-    toplevelplugin:
-      enabled: true
-''',
-    });
-
-    assertAnalysisOptionsText(options, r'''
-AnalysisOptionsImpl
-  enabledLegacyPluginNames
-    toplevelplugin
-''');
-  }
-
-  test_analyzer_plugins_legacy_list() {
+  test_analyzer_plugins_list() {
     // TODO(srawlins): Test legacy plugins as a list of non-scalar values
     // (`- angular2: yes`).
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
@@ -1332,38 +1397,22 @@
 ''');
   }
 
-  test_analyzer_plugins_legacy_map() {
-    // TODO(srawlins): Test legacy plugins as a map of scalar values
-    // (`angular2: yes`).
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+  test_analyzer_plugins_list_duplicateName() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
 analyzer:
   plugins:
-    angular2:
-      enabled: true
+    - plugin_one
+    - plugin_one
 ''');
 
     assertAnalysisOptionsText(analysisOptions, r'''
 AnalysisOptionsImpl
   enabledLegacyPluginNames
-    angular2
+    plugin_one
 ''');
   }
 
-  test_analyzer_plugins_legacy_string() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-analyzer:
-  plugins:
-    angular2
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  enabledLegacyPluginNames
-    angular2
-''');
-  }
-
-  test_analyzer_plugins_multiple_directList() {
+  test_analyzer_plugins_list_multiple() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
 analyzer:
   plugins:
@@ -1383,22 +1432,7 @@
 ''');
   }
 
-  test_analyzer_plugins_multiple_directList_nonString() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
-analyzer:
-  plugins:
-    - 7
-    - plugin_one
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  enabledLegacyPluginNames
-    plugin_one
-''');
-  }
-
-  test_analyzer_plugins_multiple_directList_nonString_afterString() {
+  test_analyzer_plugins_list_nonStringAfterString() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
 analyzer:
   plugins:
@@ -1413,11 +1447,11 @@
 ''');
   }
 
-  test_analyzer_plugins_multiple_directList_sameName() {
+  test_analyzer_plugins_list_nonStringBeforeString() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
 analyzer:
   plugins:
-    - plugin_one
+    - 7
     - plugin_one
 ''');
 
@@ -1428,7 +1462,39 @@
 ''');
   }
 
-  test_analyzer_plugins_multiple_directMap() {
+  test_analyzer_plugins_map() {
+    // TODO(srawlins): Test legacy plugins as a map of scalar values
+    // (`angular2: yes`).
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+analyzer:
+  plugins:
+    angular2:
+      enabled: true
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  enabledLegacyPluginNames
+    angular2
+''');
+  }
+
+  test_analyzer_plugins_map_duplicateKey() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
+analyzer:
+  plugins:
+    plugin_one: yes
+    plugin_one: sure
+//  ^^^^^^^^^^
+// [diag.parseError] Duplicate mapping key.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+''');
+  }
+
+  test_analyzer_plugins_map_multiple() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
 analyzer:
   plugins:
@@ -1445,134 +1511,17 @@
 ''');
   }
 
-  test_analyzer_plugins_multiple_directMap_sameName() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
+  test_analyzer_plugins_scalar() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   plugins:
-    plugin_one: yes
-    plugin_one: sure
-//  ^^^^^^^^^^
-// [diag.parseError] Duplicate mapping key.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-''');
-  }
-
-  test_analyzer_plugins_multiple_firstIncludedSecondDirect_list() {
-    newFile('$testPackageRootPath/other_options.yaml', '''
-analyzer:
-  plugins:
-    - plugin_one
-''');
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
-include: other_options.yaml
-analyzer:
-  plugins:
-    - plugin_two
-//    ^^^^^^^^^^
-// [diag.multiplePlugins] Multiple plugins can't be enabled.
+    angular2
 ''');
 
     assertAnalysisOptionsText(analysisOptions, r'''
 AnalysisOptionsImpl
   enabledLegacyPluginNames
-    plugin_one
-''');
-  }
-
-  test_analyzer_plugins_multiple_firstIncludedSecondDirect_map() {
-    newFile('$testPackageRootPath/other_options.yaml', '''
-analyzer:
-  plugins:
-    - plugin_one
-''');
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
-include: other_options.yaml
-analyzer:
-  plugins:
-    plugin_two:
-//  ^^^^^^^^^^
-// [diag.multiplePlugins] Multiple plugins can't be enabled.
-      foo: bar
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  enabledLegacyPluginNames
-    plugin_two
-''');
-  }
-
-  test_analyzer_plugins_multiple_firstIncludedSecondDirect_scalar() {
-    newFile('$testPackageRootPath/other_options.yaml', '''
-analyzer:
-  plugins:
-    - plugin_one
-''');
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
-include: other_options.yaml
-analyzer:
-  plugins: plugin_two
-//         ^^^^^^^^^^
-// [diag.multiplePlugins] Multiple plugins can't be enabled.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  enabledLegacyPluginNames
-    plugin_two
-''');
-  }
-
-  test_analyzer_plugins_multiple_firstIndirectlyIncludedSecondDirect() {
-    newFile('$testPackageRootPath/more_options.yaml', '''
-analyzer:
-  plugins:
-    - plugin_one
-''');
-    newFile('$testPackageRootPath/other_options.yaml', '''
-include: more_options.yaml
-''');
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
-include: other_options.yaml
-analyzer:
-  plugins:
-    - plugin_two
-//    ^^^^^^^^^^
-// [diag.multiplePlugins] Multiple plugins can't be enabled.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  enabledLegacyPluginNames
-    plugin_one
-''');
-  }
-
-  test_analyzer_plugins_multiple_firstIndirectlyIncludedSecondIncluded() {
-    newFile('$testPackageRootPath/more_options.yaml', '''
-analyzer:
-  plugins:
-    - plugin_one
-''');
-    newFile('$testPackageRootPath/other_options.yaml', '''
-include: more_options.yaml
-analyzer:
-  plugins:
-    - plugin_two
-''');
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
-include: other_options.yaml
-//       ^^^^^^^^^^^^^^^^^^
-// [diag.includedFileWarning] Warning in the included options file /home/test/other_options.yaml(54..63): Multiple plugins can't be enabled.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  enabledLegacyPluginNames
-    plugin_one
+    angular2
 ''');
   }
 
@@ -1619,7 +1568,7 @@
 ''');
   }
 
-  test_analyzer_strongMode_implicitDynamic_valid() {
+  test_analyzer_strongMode_implicitDynamic_true() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 analyzer:
   strong-mode:
@@ -1676,7 +1625,6 @@
 code-style:
   format: false
 ''');
-
     assertAnalysisOptionsText(analysisOptions, r'''
 AnalysisOptionsImpl
 ''');
@@ -1687,7 +1635,6 @@
 code-style:
   format: true
 ''');
-
     assertAnalysisOptionsText(analysisOptions, r'''
 AnalysisOptionsImpl
   codeStyleOptions
@@ -1695,20 +1642,7 @@
 ''');
   }
 
-  test_codeStyle_format_invalid() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-code-style:
-  format: 80
-//        ^^
-// [diag.unsupportedValue] The value '80' isn't supported by 'format'.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-''');
-  }
-
-  test_codeStyle_format_invalidDoesNotOverrideIncluded() {
+  test_codeStyle_format_include_invalidDoesNotOverrideIncluded() {
     newFile('$testPackageRootPath/included.yaml', '''
 code-style:
   format: true
@@ -1728,6 +1662,19 @@
 ''');
   }
 
+  test_codeStyle_format_invalid_int() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+code-style:
+  format: 80
+//        ^^
+// [diag.unsupportedValue] The value '80' isn't supported by 'format'.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+''');
+  }
+
   test_codeStyle_format_string_false() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 code-style:
@@ -1778,25 +1725,59 @@
 ''');
   }
 
-  test_codeStyle_format_valid_false() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+  test_codeStyle_include_invalid_notMap_doesNotOverrideIncluded() {
+    newFile('$testPackageRootPath/included.yaml', '''
 code-style:
-  format: false
+  format: true
 ''');
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+include: included.yaml
+code-style: format
+//          ^^^^^^
+// [diag.invalidSectionFormat] Invalid format for the 'code-style' section.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  codeStyleOptions
+    useFormatter: true
+''');
+  }
+
+  test_codeStyle_invalid_notMap() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+code-style: 7
+//          ^
+// [diag.invalidSectionFormat] Invalid format for the 'code-style' section.
+''');
+
     assertAnalysisOptionsText(analysisOptions, r'''
 AnalysisOptionsImpl
 ''');
   }
 
-  test_codeStyle_format_valid_true() {
+  test_codeStyle_invalid_notMap_list() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 code-style:
-  format: true
+  - format
+//^^^^^^^^
+// [diag.invalidSectionFormat] Invalid format for the 'code-style' section.
 ''');
+
     assertAnalysisOptionsText(analysisOptions, r'''
 AnalysisOptionsImpl
-  codeStyleOptions
-    useFormatter: true
+''');
+  }
+
+  test_codeStyle_invalid_notMap_scalar() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+code-style: format
+//          ^^^^^^
+// [diag.invalidSectionFormat] Invalid format for the 'code-style' section.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
 ''');
   }
 
@@ -2073,63 +2054,7 @@
 ''');
   }
 
-  test_codeStyle_notMap() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-code-style: 7
-//          ^
-// [diag.invalidSectionFormat] Invalid format for the 'code-style' section.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-''');
-  }
-
-  test_codeStyle_notMap_doesNotOverrideIncluded() {
-    newFile('$testPackageRootPath/included.yaml', '''
-code-style:
-  format: true
-''');
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-include: included.yaml
-code-style: format
-//          ^^^^^^
-// [diag.invalidSectionFormat] Invalid format for the 'code-style' section.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  codeStyleOptions
-    useFormatter: true
-''');
-  }
-
-  test_codeStyle_notMap_list() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-code-style:
-  - format
-//^^^^^^^^
-// [diag.invalidSectionFormat] Invalid format for the 'code-style' section.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-''');
-  }
-
-  test_codeStyle_notMap_scalar() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-code-style: format
-//          ^^^^^^
-// [diag.invalidSectionFormat] Invalid format for the 'code-style' section.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-''');
-  }
-
-  test_codeStyle_unsupportedOption() {
+  test_codeStyle_unsupportedKey() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 code-style:
   not_supported: true
@@ -2152,6 +2077,25 @@
 ''');
   }
 
+  test_formatter_include_invalid_notMap_doesNotOverrideIncluded() {
+    newFile('$testPackageRootPath/included.yaml', '''
+formatter:
+  page_width: 80
+''');
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+include: included.yaml
+formatter: format
+//         ^^^^^^
+// [diag.invalidSectionFormat] Invalid format for the 'formatter' section.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  formatterOptions
+    pageWidth: 80
+''');
+  }
+
   test_formatter_include_merged() {
     newFile('$testPackageRootPath/included.yaml', '''
 formatter:
@@ -2171,25 +2115,6 @@
 ''');
   }
 
-  test_formatter_include_notMap_doesNotOverrideIncluded() {
-    newFile('$testPackageRootPath/included.yaml', '''
-formatter:
-  page_width: 80
-''');
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-include: included.yaml
-formatter: format
-//         ^^^^^^
-// [diag.invalidSectionFormat] Invalid format for the 'formatter' section.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  formatterOptions
-    pageWidth: 80
-''');
-  }
-
   test_formatter_include_nullDoesNotOverrideIncluded() {
     newFile('$testPackageRootPath/included.yaml', '''
 formatter:
@@ -2207,7 +2132,7 @@
 ''');
   }
 
-  test_formatter_include_pageWidth_invalidDoesNotOverrideIncluded() {
+  test_formatter_pageWidth_include_invalidDoesNotOverrideIncluded() {
     newFile('$testPackageRootPath/included.yaml', '''
 formatter:
   page_width: 80
@@ -2227,23 +2152,16 @@
 ''');
   }
 
-  test_formatter_include_trailingCommas_invalidDoesNotOverrideIncluded() {
-    newFile('$testPackageRootPath/included.yaml', '''
-formatter:
-  trailing_commas: automate
-''');
+  test_formatter_pageWidth_integer() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-include: included.yaml
 formatter:
-  trailing_commas: foo
-//                 ^^^
-// [diag.invalidOption] Invalid option specified for 'trailing_commas': "trailing_commas" must be "automate" or "preserve".
+  page_width: 123
 ''');
 
     assertAnalysisOptionsText(analysisOptions, r'''
 AnalysisOptionsImpl
   formatterOptions
-    trailingCommas: automate
+    pageWidth: 123
 ''');
   }
 
@@ -2299,16 +2217,36 @@
 ''');
   }
 
-  test_formatter_pageWidth_valid_integer() {
+  test_formatter_trailingCommas_automate() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 formatter:
-  page_width: 123
+  trailing_commas: automate
 ''');
 
     assertAnalysisOptionsText(analysisOptions, r'''
 AnalysisOptionsImpl
   formatterOptions
-    pageWidth: 123
+    trailingCommas: automate
+''');
+  }
+
+  test_formatter_trailingCommas_include_invalidDoesNotOverrideIncluded() {
+    newFile('$testPackageRootPath/included.yaml', '''
+formatter:
+  trailing_commas: automate
+''');
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+include: included.yaml
+formatter:
+  trailing_commas: foo
+//                 ^^^
+// [diag.invalidOption] Invalid option specified for 'trailing_commas': "trailing_commas" must be "automate" or "preserve".
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  formatterOptions
+    trailingCommas: automate
 ''');
   }
 
@@ -2352,33 +2290,7 @@
 ''');
   }
 
-  test_formatter_trailingCommas_valid() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-formatter:
-  trailing_commas: automate
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  formatterOptions
-    trailingCommas: automate
-''');
-  }
-
-  test_formatter_unsupportedKey() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-formatter:
-  wrong: 123
-//^^^^^
-// [diag.unsupportedOptionWithoutValues] The option 'wrong' isn't supported by 'formatter'.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-''');
-  }
-
-  test_formatter_unsupportedKeys() {
+  test_formatter_unsupportedKey_multiple() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 formatter:
   wrong: 123
@@ -2394,6 +2306,19 @@
 ''');
   }
 
+  test_formatter_unsupportedKey_single() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+formatter:
+  wrong: 123
+//^^^^^
+// [diag.unsupportedOptionWithoutValues] The option 'wrong' isn't supported by 'formatter'.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+''');
+  }
+
   test_include_missing_absolutePath() {
     var options = parseAnalysisOptionsFilesWithDiagnostics({
       analysisOptionsFile: r'''
@@ -2759,20 +2684,6 @@
 ''');
   }
 
-  test_include_recursive_self_direct() {
-    // Test that the appropriate error is issued if `analysis_options.yaml`
-    // tries to include itself.
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics(r'''
-include: analysis_options.yaml
-//       ^^^^^^^^^^^^^^^^^^^^^
-// [diag.recursiveIncludeFile] The URI 'analysis_options.yaml' included in '/home/test/analysis_options.yaml' includes '/home/test/analysis_options.yaml', creating a circular reference.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-''');
-  }
-
   test_include_recursive_self_doubleQuoted() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 include: "./analysis_options.yaml"
@@ -2936,7 +2847,7 @@
 ''');
   }
 
-  test_linter_rules_deprecated_inIncludedFile_ok() {
+  test_linter_rules_deprecated_inIncludedFile() {
     newFile('$testPackageRootPath/included.yaml', '''
 linter:
   rules:
@@ -3000,7 +2911,7 @@
 ''');
   }
 
-  test_linter_rules_deprecated_previousSdk() {
+  test_linter_rules_deprecated_since_afterDeprecationSdk() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 linter:
   rules:
@@ -3017,7 +2928,7 @@
 ''');
   }
 
-  test_linter_rules_deprecated_since_inCurrentSdk() {
+  test_linter_rules_deprecated_since_atDeprecationSdk() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 linter:
   rules:
@@ -3034,7 +2945,7 @@
 ''');
   }
 
-  test_linter_rules_deprecated_since_notInCurrentSdk() {
+  test_linter_rules_deprecated_since_beforeDeprecationSdk() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 linter:
   rules:
@@ -3049,7 +2960,7 @@
 ''');
   }
 
-  test_linter_rules_deprecated_since_unknownSdk() {
+  test_linter_rules_deprecated_since_unknownPackageSdk() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 linter:
   rules:
@@ -3116,7 +3027,7 @@
 ''');
   }
 
-  test_linter_rules_duplicate_inIncludedFile_ok() {
+  test_linter_rules_duplicate_inIncludedFile() {
     newFile('$testPackageRootPath/included.yaml', '''
 linter:
   rules:
@@ -4094,6 +4005,22 @@
 ''');
   }
 
+  test_linter_rules_registeredRule() {
+    registerLintRule(TestRule());
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+linter:
+  rules:
+    - fantastic_test_rule
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  lint: true
+  lintRules
+    fantastic_test_rule
+''');
+  }
+
   test_linter_rules_removed() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 linter:
@@ -4111,41 +4038,8 @@
 ''');
   }
 
-  test_linter_rules_removed_inIncludedFile_ok() {
-    newFile('$testPackageRootPath/included.yaml', '''
-linter:
-  rules:
-    - removed_in_2_12_lint
-''');
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-include: included.yaml
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  lint: true
-  lintRules
-    removed_in_2_12_lint
-''');
-  }
-
-  test_linter_rules_removed_notYet_ok() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-linter:
-  rules:
-    - removed_in_2_12_lint
-''', sdkVersionConstraint: Version(2, 11, 0));
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  lint: true
-  lintRules
-    removed_in_2_12_lint
-''');
-  }
-
   /// https://github.com/dart-lang/sdk/issues/59869
-  test_linter_rules_removed_previousSdk() {
+  test_linter_rules_removed_afterRemovalSdk() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 linter:
   rules:
@@ -4162,7 +4056,7 @@
 ''');
   }
 
-  test_linter_rules_removed_previousSdk_mixedCase() {
+  test_linter_rules_removed_afterRemovalSdk_mixedCase() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 linter:
   rules:
@@ -4179,6 +4073,39 @@
 ''');
   }
 
+  test_linter_rules_removed_beforeRemovalSdk() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+linter:
+  rules:
+    - removed_in_2_12_lint
+''', sdkVersionConstraint: Version(2, 11, 0));
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  lint: true
+  lintRules
+    removed_in_2_12_lint
+''');
+  }
+
+  test_linter_rules_removed_inIncludedFile() {
+    newFile('$testPackageRootPath/included.yaml', '''
+linter:
+  rules:
+    - removed_in_2_12_lint
+''');
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+include: included.yaml
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+  lint: true
+  lintRules
+    removed_in_2_12_lint
+''');
+  }
+
   test_linter_rules_replaced() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 linter:
@@ -4273,22 +4200,6 @@
 ''');
   }
 
-  test_linter_rules_supported() {
-    registerLintRule(TestRule());
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-linter:
-  rules:
-    - fantastic_test_rule
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  lint: true
-  lintRules
-    fantastic_test_rule
-''');
-  }
-
   test_linter_rules_undefined() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 linter:
@@ -4632,64 +4543,6 @@
 ''');
   }
 
-  test_plugins_configuration_git() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-plugins:
-  plugin_one:
-    git: https://github.com/dart-lang/plugin_one.git
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  pluginsOptions
-    configurations
-      plugin_one
-        source: GitPluginSource
-          url: https://github.com/dart-lang/plugin_one.git
-''');
-  }
-
-  test_plugins_configuration_git_full() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-plugins:
-  plugin_one:
-    git:
-      url: https://github.com/dart-lang/sdk.git
-      ref: main
-      path: pkg/plugin_one
-      tag_pattern: 'v*'
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  pluginsOptions
-    configurations
-      plugin_one
-        source: GitPluginSource
-          url: https://github.com/dart-lang/sdk.git
-          ref: main
-          path: pkg/plugin_one
-          tagPattern: v*
-''');
-  }
-
-  test_plugins_configuration_git_scalar() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-plugins:
-  plugin_one:
-    git: https://github.com/dart-lang/plugin_one.git
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  pluginsOptions
-    configurations
-      plugin_one
-        source: GitPluginSource
-          url: https://github.com/dart-lang/plugin_one.git
-''');
-  }
-
   test_plugins_configuration_path() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 plugins:
@@ -4707,23 +4560,6 @@
 ''');
   }
 
-  test_plugins_configuration_path_relative() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-plugins:
-  plugin_one:
-    path: foo/bar
-''');
-
-    assertAnalysisOptionsText(analysisOptions, '''
-AnalysisOptionsImpl
-  pluginsOptions
-    configurations
-      plugin_one
-        source: PathPluginSource
-          path: /home/test/foo/bar
-''');
-  }
-
   test_plugins_configuration_path_relativeNonNormal() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 plugins:
@@ -4777,38 +4613,7 @@
 ''');
   }
 
-  test_plugins_configuration_versionScalar() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-plugins:
-  plugin_one: ^1.2.3
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-  pluginsOptions
-    configurations
-      plugin_one
-        source: VersionedPluginSource
-          constraint: ^1.2.3
-''');
-  }
-
-  test_plugins_dependencyOverrides_invalidKey() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-plugins:
-  dependency_overrides:
-    one:
-      ppath: foo/bar
-//    ^^^^^
-// [diag.unsupportedOptionWithLegalValues] The option 'ppath' isn't supported by 'plugins/dependency_overrides/one'.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-''');
-  }
-
-  test_plugins_dependencyOverrides_valid() {
+  test_plugins_dependencyOverrides_git() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 plugins:
   dependency_overrides:
@@ -4826,7 +4631,50 @@
 ''');
   }
 
-  test_plugins_diagnostics_invalid() {
+  test_plugins_dependencyOverrides_invalid_unsupportedKey() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+plugins:
+  dependency_overrides:
+    one:
+      ppath: foo/bar
+//    ^^^^^
+// [diag.unsupportedOptionWithLegalValues] The option 'ppath' isn't supported by 'plugins/dependency_overrides/one'.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+''');
+  }
+
+  test_plugins_diagnostics_bool() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+plugins:
+  one:
+    diagnostics:
+      code1: true
+      code2: false
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+''');
+  }
+
+  test_plugins_diagnostics_invalid_notMap() {
+    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
+plugins:
+  one:
+    diagnostics: 7
+//               ^
+// [diag.invalidSectionFormat] Invalid format for the 'plugins/one/diagnostics' section.
+''');
+
+    assertAnalysisOptionsText(analysisOptions, r'''
+AnalysisOptionsImpl
+''');
+  }
+
+  test_plugins_diagnostics_invalid_severity() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 plugins:
   one:
@@ -4841,21 +4689,7 @@
 ''');
   }
 
-  test_plugins_diagnostics_notMap() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-plugins:
-  one:
-    diagnostics: 7
-//               ^
-// [diag.invalidSectionFormat] Invalid format for the 'plugins/one/diagnostics' section.
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-''');
-  }
-
-  test_plugins_diagnostics_supported_severity() {
+  test_plugins_diagnostics_severity() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 plugins:
   one:
@@ -4871,20 +4705,6 @@
 ''');
   }
 
-  test_plugins_diagnostics_supported_trueOrFalse() {
-    var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
-plugins:
-  one:
-    diagnostics:
-      code1: true
-      code2: false
-''');
-
-    assertAnalysisOptionsText(analysisOptions, r'''
-AnalysisOptionsImpl
-''');
-  }
-
   test_plugins_empty() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 plugins:
@@ -4895,15 +4715,15 @@
 ''');
   }
 
-  test_plugins_git_invalidKey() {
+  test_plugins_git_invalid_refNotString() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 plugins:
   one:
     git:
       url: https://github.com/dart-lang/linter.git
-      invalid: main
-//    ^^^^^^^
-// [diag.unsupportedOptionWithLegalValues] The option 'invalid' isn't supported by 'plugins/one/git'.
+      ref: 7
+//         ^
+// [diag.invalidSectionFormat] Invalid format for the 'plugins/one/git/ref' section.
 ''');
 
     assertAnalysisOptionsText(analysisOptions, r'''
@@ -4916,15 +4736,15 @@
 ''');
   }
 
-  test_plugins_git_invalidValue() {
+  test_plugins_git_invalid_unsupportedKey() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 plugins:
   one:
     git:
       url: https://github.com/dart-lang/linter.git
-      ref: 7
-//         ^
-// [diag.invalidSectionFormat] Invalid format for the 'plugins/one/git/ref' section.
+      invalid: main
+//    ^^^^^^^
+// [diag.unsupportedOptionWithLegalValues] The option 'invalid' isn't supported by 'plugins/one/git'.
 ''');
 
     assertAnalysisOptionsText(analysisOptions, r'''
@@ -5083,7 +4903,7 @@
 ''');
   }
 
-  test_plugins_notMap_scalar() {
+  test_plugins_invalid_notMap_scalar() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 plugins: 7
 //       ^
@@ -5095,7 +4915,7 @@
 ''');
   }
 
-  test_plugins_plugin_invalidKey() {
+  test_plugins_plugin_invalid_unsupportedKey() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 plugins:
   one:
@@ -5109,7 +4929,7 @@
 ''');
   }
 
-  test_plugins_plugin_validKey() {
+  test_plugins_plugin_pathKey() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 plugins:
   one:
@@ -5126,7 +4946,7 @@
 ''');
   }
 
-  test_plugins_plugin_validScalar() {
+  test_plugins_plugin_scalar() {
     var analysisOptions = parseAnalysisOptionsWithDiagnostics('''
 plugins:
   one: ^1.2.3