mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-28 21:05:08 +00:00
Move FURB145
from nursery to preview (#7364)
Moves the new rule from nursery to preview for the upcoming release. Adds new test coverage for selection of a single preview rule and fixes a bug where preview rules were incorrectly selectable with exact codes.
This commit is contained in:
parent
5347df4728
commit
4bff397318
3 changed files with 31 additions and 6 deletions
|
@ -916,8 +916,7 @@ pub fn code_to_rule(linter: Linter, code: &str) -> Option<(RuleGroup, Rule)> {
|
||||||
(Refurb, "131") => (RuleGroup::Nursery, rules::refurb::rules::DeleteFullSlice),
|
(Refurb, "131") => (RuleGroup::Nursery, rules::refurb::rules::DeleteFullSlice),
|
||||||
#[allow(deprecated)]
|
#[allow(deprecated)]
|
||||||
(Refurb, "132") => (RuleGroup::Nursery, rules::refurb::rules::CheckAndRemoveFromSet),
|
(Refurb, "132") => (RuleGroup::Nursery, rules::refurb::rules::CheckAndRemoveFromSet),
|
||||||
#[allow(deprecated)]
|
(Refurb, "145") => (RuleGroup::Preview, rules::refurb::rules::SliceCopy),
|
||||||
(Refurb, "145") => (RuleGroup::Nursery, rules::refurb::rules::SliceCopy),
|
|
||||||
|
|
||||||
_ => return None,
|
_ => return None,
|
||||||
})
|
})
|
||||||
|
|
|
@ -212,7 +212,7 @@ impl RuleSelector {
|
||||||
// Always include rules that are not in preview or the nursery
|
// Always include rules that are not in preview or the nursery
|
||||||
!(rule.is_preview() || rule.is_nursery())
|
!(rule.is_preview() || rule.is_nursery())
|
||||||
// Backwards compatibility allows selection of nursery rules by exact code or dedicated group
|
// Backwards compatibility allows selection of nursery rules by exact code or dedicated group
|
||||||
|| (matches!(self, RuleSelector::Rule { .. }) || matches!(self, RuleSelector::Nursery { .. }) && rule.is_nursery())
|
|| ((matches!(self, RuleSelector::Rule { .. }) || matches!(self, RuleSelector::Nursery { .. })) && rule.is_nursery())
|
||||||
// Enabling preview includes all preview or nursery rules
|
// Enabling preview includes all preview or nursery rules
|
||||||
|| preview.is_enabled()
|
|| preview.is_enabled()
|
||||||
})
|
})
|
||||||
|
|
|
@ -764,7 +764,7 @@ pub fn resolve_src(src: &[String], project_root: &Path) -> Result<Vec<PathBuf>>
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use crate::configuration::{Configuration, RuleSelection};
|
use crate::configuration::{Configuration, RuleSelection};
|
||||||
use ruff::codes::{Flake8Copyright, Pycodestyle};
|
use ruff::codes::{Flake8Copyright, Pycodestyle, Refurb};
|
||||||
use ruff::registry::{Linter, Rule, RuleSet};
|
use ruff::registry::{Linter, Rule, RuleSet};
|
||||||
use ruff::settings::types::PreviewMode;
|
use ruff::settings::types::PreviewMode;
|
||||||
use ruff::RuleSelector;
|
use ruff::RuleSelector;
|
||||||
|
@ -811,10 +811,11 @@ mod tests {
|
||||||
Rule::RepeatedAppend,
|
Rule::RepeatedAppend,
|
||||||
Rule::DeleteFullSlice,
|
Rule::DeleteFullSlice,
|
||||||
Rule::CheckAndRemoveFromSet,
|
Rule::CheckAndRemoveFromSet,
|
||||||
Rule::SliceCopy,
|
|
||||||
Rule::QuadraticListSummation,
|
Rule::QuadraticListSummation,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const PREVIEW_RULES: &[Rule] = &[Rule::SliceCopy];
|
||||||
|
|
||||||
#[allow(clippy::needless_pass_by_value)]
|
#[allow(clippy::needless_pass_by_value)]
|
||||||
fn resolve_rules(
|
fn resolve_rules(
|
||||||
selections: impl IntoIterator<Item = RuleSelection>,
|
selections: impl IntoIterator<Item = RuleSelection>,
|
||||||
|
@ -1100,6 +1101,29 @@ mod tests {
|
||||||
assert_eq!(actual, expected);
|
assert_eq!(actual, expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn select_rule_preview() {
|
||||||
|
let actual = resolve_rules(
|
||||||
|
[RuleSelection {
|
||||||
|
select: Some(vec![Refurb::_145.into()]),
|
||||||
|
..RuleSelection::default()
|
||||||
|
}],
|
||||||
|
Some(PreviewMode::Disabled),
|
||||||
|
);
|
||||||
|
let expected = RuleSet::empty();
|
||||||
|
assert_eq!(actual, expected);
|
||||||
|
|
||||||
|
let actual = resolve_rules(
|
||||||
|
[RuleSelection {
|
||||||
|
select: Some(vec![Refurb::_145.into()]),
|
||||||
|
..RuleSelection::default()
|
||||||
|
}],
|
||||||
|
Some(PreviewMode::Enabled),
|
||||||
|
);
|
||||||
|
let expected = RuleSet::from_rule(Rule::SliceCopy);
|
||||||
|
assert_eq!(actual, expected);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn select_preview() {
|
fn select_preview() {
|
||||||
let actual = resolve_rules(
|
let actual = resolve_rules(
|
||||||
|
@ -1119,7 +1143,9 @@ mod tests {
|
||||||
}],
|
}],
|
||||||
Some(PreviewMode::Enabled),
|
Some(PreviewMode::Enabled),
|
||||||
);
|
);
|
||||||
let expected = RuleSet::from_rules(NURSERY_RULES);
|
|
||||||
|
let expected =
|
||||||
|
RuleSet::from_rules(NURSERY_RULES).union(&RuleSet::from_rules(PREVIEW_RULES));
|
||||||
assert_eq!(actual, expected);
|
assert_eq!(actual, expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue