validate incompatible rules (#1965)
diff --git a/test/all.dart b/test/all.dart
index e797842..95ae5f4 100644
--- a/test/all.dart
+++ b/test/all.dart
@@ -13,7 +13,7 @@
import 'utils_test.dart' as utils_test;
import 'validate_format_test.dart' as validate_format;
import 'validate_headers_test.dart' as validate_headers;
-import 'validate_metadata.dart' as validate_metadata;
+import 'validate_incompatible_rules.dart' as validate_incompatible_rules;
import 'version_test.dart' as version_test;
void main() {
@@ -28,6 +28,6 @@
utils_test.main();
validate_format.main();
validate_headers.main();
- validate_metadata.main();
+ validate_incompatible_rules.main();
version_test.main();
}
diff --git a/test/validate_incompatible_rules.dart b/test/validate_incompatible_rules.dart
new file mode 100644
index 0000000..30634f3
--- /dev/null
+++ b/test/validate_incompatible_rules.dart
@@ -0,0 +1,27 @@
+// Copyright (c) 2019, 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:linter/src/analyzer.dart';
+import 'package:linter/src/rules.dart';
+import 'package:test/test.dart';
+
+void main() {
+ group('check for incompatible rules:', () {
+ registerLintRules();
+ for (var rule in Analyzer.facade.registeredRules) {
+ for (var incompatibleRule in rule.incompatibleRules) {
+ test(rule.name, () async {
+ var referencedRule = Analyzer.facade.registeredRules
+ .firstWhere((r) => r.name == incompatibleRule);
+ expect(referencedRule, isNotNull,
+ reason:
+ 'No rule found for id: $incompatibleRule (check for typo?)');
+ expect(referencedRule.incompatibleRules, contains(rule.name),
+ reason:
+ '$referencedRule should define ${rule.name} in `incompatibleRules` but does not.');
+ });
+ }
+ }
+ });
+}
diff --git a/test/validate_metadata.dart b/test/validate_metadata.dart
deleted file mode 100644
index 5be62fa..0000000
--- a/test/validate_metadata.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2019, 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.
-
-void main() {
-// todo (pq): re-introduce check when analyzer >0.39.3-dev is published
-// group('check for incompatible rules:', () {
-// registerLintRules();
-// for (var rule in Analyzer.facade.registeredRules) {
-// test(rule.name, () async {
-// for (var incompatibleRule in lintDetail.incompatibleRules) {
-// final ruleDetail = lintCache.findDetailsById(incompatibleRule);
-// expect(ruleDetail, isNotNull,
-// reason:
-// 'No rule found for id: $incompatibleRule (check for typo?)');
-// expect(ruleDetail.incompatibleRules, contains(lintDetail.id),
-// reason:
-// '${ruleDetail.id} should declare ${lintDetail.id} as `@IncompatibleWith` but does not.');
-// }
-// });
-// }
-// });
-}