Accept commas in default copyright pattern (#9498)

## Summary

Adds commas as an accepted separator between copyright years by default,
which is actually documented in one spot, but not currently accurate.
Fixes #9477.
This commit is contained in:
Ryan May 2024-03-22 12:42:02 -06:00 committed by GitHub
parent a06ffeb54e
commit 594b232e0f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 192 additions and 6 deletions

View file

@ -71,6 +71,20 @@ import os
r"
# Copyright (C) 2021-2023
import os
"
.trim(),
&settings::LinterSettings::for_rules(vec![Rule::MissingCopyrightNotice]),
);
assert_messages!(diagnostics);
}
#[test]
fn notice_with_comma() {
let diagnostics = test_snippet(
r"
# Copyright (C) 2021, 2022
import os
"
.trim(),
@ -85,6 +99,126 @@ import os
r"
# Copyright (C) 2023 Ruff
import os
"
.trim(),
&settings::LinterSettings {
flake8_copyright: super::settings::Settings {
author: Some("Ruff".to_string()),
..super::settings::Settings::default()
},
..settings::LinterSettings::for_rules(vec![Rule::MissingCopyrightNotice])
},
);
assert_messages!(diagnostics);
}
#[test]
fn valid_author_with_dash() {
let diagnostics = test_snippet(
r"
# Copyright (C) 2022-2023 Ruff
import os
"
.trim(),
&settings::LinterSettings {
flake8_copyright: super::settings::Settings {
author: Some("Ruff".to_string()),
..super::settings::Settings::default()
},
..settings::LinterSettings::for_rules(vec![Rule::MissingCopyrightNotice])
},
);
assert_messages!(diagnostics);
}
#[test]
fn valid_author_with_dash_invalid_space() {
let diagnostics = test_snippet(
r"
# Copyright (C) 2022- 2023 Ruff
import os
"
.trim(),
&settings::LinterSettings {
flake8_copyright: super::settings::Settings {
author: Some("Ruff".to_string()),
..super::settings::Settings::default()
},
..settings::LinterSettings::for_rules(vec![Rule::MissingCopyrightNotice])
},
);
assert_messages!(diagnostics);
}
#[test]
fn valid_author_with_dash_invalid_spaces() {
let diagnostics = test_snippet(
r"
# Copyright (C) 2022 - 2023 Ruff
import os
"
.trim(),
&settings::LinterSettings {
flake8_copyright: super::settings::Settings {
author: Some("Ruff".to_string()),
..super::settings::Settings::default()
},
..settings::LinterSettings::for_rules(vec![Rule::MissingCopyrightNotice])
},
);
assert_messages!(diagnostics);
}
#[test]
fn valid_author_with_comma_invalid_no_space() {
let diagnostics = test_snippet(
r"
# Copyright (C) 2022,2023 Ruff
import os
"
.trim(),
&settings::LinterSettings {
flake8_copyright: super::settings::Settings {
author: Some("Ruff".to_string()),
..super::settings::Settings::default()
},
..settings::LinterSettings::for_rules(vec![Rule::MissingCopyrightNotice])
},
);
assert_messages!(diagnostics);
}
#[test]
fn valid_author_with_comma_invalid_spaces() {
let diagnostics = test_snippet(
r"
# Copyright (C) 2022 , 2023 Ruff
import os
"
.trim(),
&settings::LinterSettings {
flake8_copyright: super::settings::Settings {
author: Some("Ruff".to_string()),
..super::settings::Settings::default()
},
..settings::LinterSettings::for_rules(vec![Rule::MissingCopyrightNotice])
},
);
assert_messages!(diagnostics);
}
#[test]
fn valid_author_with_comma_valid_space() {
let diagnostics = test_snippet(
r"
# Copyright (C) 2022, 2023 Ruff
import os
"
.trim(),

View file

@ -15,7 +15,7 @@ pub struct Settings {
}
pub static COPYRIGHT: Lazy<Regex> =
Lazy::new(|| Regex::new(r"(?i)Copyright\s+((?:\(C\)|©)\s+)?\d{4}(-\d{4})*").unwrap());
Lazy::new(|| Regex::new(r"(?i)Copyright\s+((?:\(C\)|©)\s+)?\d{4}((-|,\s)\d{4})*").unwrap());
impl Default for Settings {
fn default() -> Self {

View file

@ -0,0 +1,4 @@
---
source: crates/ruff_linter/src/rules/flake8_copyright/mod.rs
---

View file

@ -0,0 +1,10 @@
---
source: crates/ruff_linter/src/rules/flake8_copyright/mod.rs
---
<filename>:1:1: CPY001 Missing copyright notice at top of file
|
1 | # Copyright (C) 2022,2023 Ruff
| CPY001
2 |
3 | import os
|

View file

@ -0,0 +1,10 @@
---
source: crates/ruff_linter/src/rules/flake8_copyright/mod.rs
---
<filename>:1:1: CPY001 Missing copyright notice at top of file
|
1 | # Copyright (C) 2022 , 2023 Ruff
| CPY001
2 |
3 | import os
|

View file

@ -0,0 +1,4 @@
---
source: crates/ruff_linter/src/rules/flake8_copyright/mod.rs
---

View file

@ -0,0 +1,4 @@
---
source: crates/ruff_linter/src/rules/flake8_copyright/mod.rs
---

View file

@ -0,0 +1,10 @@
---
source: crates/ruff_linter/src/rules/flake8_copyright/mod.rs
---
<filename>:1:1: CPY001 Missing copyright notice at top of file
|
1 | # Copyright (C) 2022- 2023 Ruff
| CPY001
2 |
3 | import os
|

View file

@ -0,0 +1,10 @@
---
source: crates/ruff_linter/src/rules/flake8_copyright/mod.rs
---
<filename>:1:1: CPY001 Missing copyright notice at top of file
|
1 | # Copyright (C) 2022 - 2023 Ruff
| CPY001
2 |
3 | import os
|