mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-04 10:48:32 +00:00
Extend invalid-envvar-default (PLW1508)
to detect os.environ.get
(#14512)
This commit is contained in:
parent
e53ac7985d
commit
931fa06d85
5 changed files with 73 additions and 1 deletions
|
@ -12,3 +12,4 @@ os.getenv("AA", "GOOD %s" % "BAR")
|
|||
os.getenv("B", Z)
|
||||
os.getenv("AA", "GOOD" if Z else "BAR")
|
||||
os.getenv("AA", 1 if Z else "BAR") # [invalid-envvar-default]
|
||||
os.environ.get("TEST", 12) # [invalid-envvar-default]
|
||||
|
|
|
@ -410,6 +410,7 @@ mod tests {
|
|||
Rule::RepeatedEqualityComparison,
|
||||
Path::new("repeated_equality_comparison.py")
|
||||
)]
|
||||
#[test_case(Rule::InvalidEnvvarDefault, Path::new("invalid_envvar_default.py"))]
|
||||
fn preview_rules(rule_code: Rule, path: &Path) -> Result<()> {
|
||||
let snapshot = format!(
|
||||
"preview__{}_{}",
|
||||
|
|
|
@ -51,7 +51,16 @@ pub(crate) fn invalid_envvar_default(checker: &mut Checker, call: &ast::ExprCall
|
|||
if checker
|
||||
.semantic()
|
||||
.resolve_qualified_name(&call.func)
|
||||
.is_some_and(|qualified_name| matches!(qualified_name.segments(), ["os", "getenv"]))
|
||||
.is_some_and(|qualified_name| {
|
||||
if checker.settings.preview.is_enabled() {
|
||||
matches!(
|
||||
qualified_name.segments(),
|
||||
["os", "getenv"] | ["os", "environ", "get"]
|
||||
)
|
||||
} else {
|
||||
matches!(qualified_name.segments(), ["os", "getenv"])
|
||||
}
|
||||
})
|
||||
{
|
||||
// Find the `default` argument, if it exists.
|
||||
let Some(expr) = call.arguments.find_argument("default", 1) else {
|
||||
|
|
|
@ -48,4 +48,5 @@ invalid_envvar_default.py:14:17: PLW1508 Invalid type for environment variable d
|
|||
13 | os.getenv("AA", "GOOD" if Z else "BAR")
|
||||
14 | os.getenv("AA", 1 if Z else "BAR") # [invalid-envvar-default]
|
||||
| ^^^^^^^^^^^^^^^^^ PLW1508
|
||||
15 | os.environ.get("TEST", 12) # [invalid-envvar-default]
|
||||
|
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
---
|
||||
source: crates/ruff_linter/src/rules/pylint/mod.rs
|
||||
snapshot_kind: text
|
||||
---
|
||||
invalid_envvar_default.py:3:29: PLW1508 Invalid type for environment variable default; expected `str` or `None`
|
||||
|
|
||||
1 | import os
|
||||
2 |
|
||||
3 | tempVar = os.getenv("TEST", 12) # [invalid-envvar-default]
|
||||
| ^^ PLW1508
|
||||
4 | goodVar = os.getenv("TESTING", None)
|
||||
5 | dictVarBad = os.getenv("AAA", {"a", 7}) # [invalid-envvar-default]
|
||||
|
|
||||
|
||||
invalid_envvar_default.py:5:31: PLW1508 Invalid type for environment variable default; expected `str` or `None`
|
||||
|
|
||||
3 | tempVar = os.getenv("TEST", 12) # [invalid-envvar-default]
|
||||
4 | goodVar = os.getenv("TESTING", None)
|
||||
5 | dictVarBad = os.getenv("AAA", {"a", 7}) # [invalid-envvar-default]
|
||||
| ^^^^^^^^ PLW1508
|
||||
6 | print(os.getenv("TEST", False)) # [invalid-envvar-default]
|
||||
7 | os.getenv("AA", "GOOD")
|
||||
|
|
||||
|
||||
invalid_envvar_default.py:6:25: PLW1508 Invalid type for environment variable default; expected `str` or `None`
|
||||
|
|
||||
4 | goodVar = os.getenv("TESTING", None)
|
||||
5 | dictVarBad = os.getenv("AAA", {"a", 7}) # [invalid-envvar-default]
|
||||
6 | print(os.getenv("TEST", False)) # [invalid-envvar-default]
|
||||
| ^^^^^ PLW1508
|
||||
7 | os.getenv("AA", "GOOD")
|
||||
8 | os.getenv("AA", f"GOOD")
|
||||
|
|
||||
|
||||
invalid_envvar_default.py:10:17: PLW1508 Invalid type for environment variable default; expected `str` or `None`
|
||||
|
|
||||
8 | os.getenv("AA", f"GOOD")
|
||||
9 | os.getenv("AA", "GOOD" + "BAR")
|
||||
10 | os.getenv("AA", "GOOD" + 1)
|
||||
| ^^^^^^^^^^ PLW1508
|
||||
11 | os.getenv("AA", "GOOD %s" % "BAR")
|
||||
12 | os.getenv("B", Z)
|
||||
|
|
||||
|
||||
invalid_envvar_default.py:14:17: PLW1508 Invalid type for environment variable default; expected `str` or `None`
|
||||
|
|
||||
12 | os.getenv("B", Z)
|
||||
13 | os.getenv("AA", "GOOD" if Z else "BAR")
|
||||
14 | os.getenv("AA", 1 if Z else "BAR") # [invalid-envvar-default]
|
||||
| ^^^^^^^^^^^^^^^^^ PLW1508
|
||||
15 | os.environ.get("TEST", 12) # [invalid-envvar-default]
|
||||
|
|
||||
|
||||
invalid_envvar_default.py:15:24: PLW1508 Invalid type for environment variable default; expected `str` or `None`
|
||||
|
|
||||
13 | os.getenv("AA", "GOOD" if Z else "BAR")
|
||||
14 | os.getenv("AA", 1 if Z else "BAR") # [invalid-envvar-default]
|
||||
15 | os.environ.get("TEST", 12) # [invalid-envvar-default]
|
||||
| ^^ PLW1508
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue