From daa9b4db7284cc96ef2df3103771c6aa87c0f620 Mon Sep 17 00:00:00 2001 From: Zanie Date: Thu, 7 Sep 2023 13:39:28 -0500 Subject: [PATCH] WIP: Add rules only enabled during testing Failing with... the trait `std::convert::From` is not implemented for `DiagnosticKind` --- crates/ruff/src/codes.rs | 6 ++++++ crates/ruff/src/linter.rs | 25 +++++++++++++++++++++++++ crates/ruff/src/rules/ruff/rules/mod.rs | 4 ++++ 3 files changed, 35 insertions(+) diff --git a/crates/ruff/src/codes.rs b/crates/ruff/src/codes.rs index 694050cc8b..9e09fd0d23 100644 --- a/crates/ruff/src/codes.rs +++ b/crates/ruff/src/codes.rs @@ -865,6 +865,12 @@ pub fn code_to_rule(linter: Linter, code: &str) -> Option<(RuleGroup, Rule)> { (Ruff, "017") => (RuleGroup::Nursery, rules::ruff::rules::QuadraticListSummation), (Ruff, "100") => (RuleGroup::Unspecified, rules::ruff::rules::UnusedNOQA), (Ruff, "200") => (RuleGroup::Unspecified, rules::ruff::rules::InvalidPyprojectToml), + #[cfg(test)] + (Ruff, "900") => (RuleGroup::Unspecified, rules::ruff::rules::StableTestRule), + #[cfg(test)] + (Ruff, "901") => (RuleGroup::Nursery, rules::ruff::rules::NurseryTestRule), + #[cfg(test)] + (Ruff, "902") => (RuleGroup::Preview, rules::ruff::rules::PreviewTestRule), // flake8-django (Flake8Django, "001") => (RuleGroup::Unspecified, rules::flake8_django::rules::DjangoNullableModelStringField), diff --git a/crates/ruff/src/linter.rs b/crates/ruff/src/linter.rs index 19612ab968..b99f116038 100644 --- a/crates/ruff/src/linter.rs +++ b/crates/ruff/src/linter.rs @@ -213,6 +213,31 @@ pub fn check_path( )); } + // Raise violations for internal test rules + #[cfg(test)] + { + if settings.rules.enabled(Rule::StableTestRule) { + diagnostics.push(Diagnostic::new( + Rule::StableTestRule, + ruff_text_size::TextRange::default(), + )); + } + + if settings.rules.enabled(Rule::PreviewTestRule) { + diagnostics.push(Diagnostic::new( + Rule::PreviewTestRule, + ruff_text_size::TextRange::default(), + )); + } + + if settings.rules.enabled(Rule::NurseryTestRule) { + diagnostics.push(Diagnostic::new( + Rule::NurseryTestRule, + ruff_text_size::TextRange::default(), + )); + } + } + // Ignore diagnostics based on per-file-ignores. if !diagnostics.is_empty() && !settings.per_file_ignores.is_empty() { let ignores = fs::ignores_from_path(path, &settings.per_file_ignores); diff --git a/crates/ruff/src/rules/ruff/rules/mod.rs b/crates/ruff/src/rules/ruff/rules/mod.rs index 8ffa324791..229d238682 100644 --- a/crates/ruff/src/rules/ruff/rules/mod.rs +++ b/crates/ruff/src/rules/ruff/rules/mod.rs @@ -10,6 +10,8 @@ pub(crate) use mutable_class_default::*; pub(crate) use mutable_dataclass_default::*; pub(crate) use pairwise_over_zipped::*; pub(crate) use static_key_dict_comprehension::*; +#[cfg(test)] +pub(crate) use test_rules::*; pub(crate) use unnecessary_iterable_allocation_for_first_element::*; #[cfg(feature = "unreachable-code")] pub(crate) use unreachable::*; @@ -29,6 +31,8 @@ mod mutable_class_default; mod mutable_dataclass_default; mod pairwise_over_zipped; mod static_key_dict_comprehension; +#[cfg(test)] +mod test_rules; mod unnecessary_iterable_allocation_for_first_element; #[cfg(feature = "unreachable-code")] pub(crate) mod unreachable;