mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 04:53:34 +00:00
internal: enforce no #[ignore] and no #[should_panic]
This commit is contained in:
parent
4584868a7a
commit
067e97d149
3 changed files with 33 additions and 2 deletions
|
@ -21,7 +21,7 @@ SOURCE_FILE@0..60
|
||||||
PATH@15..21
|
PATH@15..21
|
||||||
PATH_SEGMENT@15..21
|
PATH_SEGMENT@15..21
|
||||||
NAME_REF@15..21
|
NAME_REF@15..21
|
||||||
IDENT@15..21 "ignore"
|
IDENT@15..21 "Ignore"
|
||||||
R_BRACK@21..22 "]"
|
R_BRACK@21..22 "]"
|
||||||
WHITESPACE@22..23 "\n"
|
WHITESPACE@22..23 "\n"
|
||||||
FN_KW@23..25 "fn"
|
FN_KW@23..25 "fn"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
#[ignore]
|
#[Ignore]
|
||||||
fn foo() {}
|
fn foo() {}
|
||||||
|
|
||||||
#[path = "a.rs"]
|
#[path = "a.rs"]
|
||||||
|
|
|
@ -89,6 +89,7 @@ fn rust_files_are_tidy() {
|
||||||
let text = read_file(&path).unwrap();
|
let text = read_file(&path).unwrap();
|
||||||
check_todo(&path, &text);
|
check_todo(&path, &text);
|
||||||
check_dbg(&path, &text);
|
check_dbg(&path, &text);
|
||||||
|
check_test_attrs(&path, &text);
|
||||||
check_trailing_ws(&path, &text);
|
check_trailing_ws(&path, &text);
|
||||||
deny_clippy(&path, &text);
|
deny_clippy(&path, &text);
|
||||||
tidy_docs.visit(&path, &text);
|
tidy_docs.visit(&path, &text);
|
||||||
|
@ -334,6 +335,36 @@ fn check_dbg(path: &Path, text: &str) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn check_test_attrs(path: &Path, text: &str) {
|
||||||
|
let ignore_rule =
|
||||||
|
"https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/dev/style.md#ignore";
|
||||||
|
let need_ignore: &[&str] = &[
|
||||||
|
// Special case to run `#[ignore]` tests
|
||||||
|
"ide/src/runnables.rs",
|
||||||
|
// A legit test which needs to be ignored, as it takes too long to run
|
||||||
|
// :(
|
||||||
|
"hir_def/src/nameres/collector.rs",
|
||||||
|
// Obviously needs ignore.
|
||||||
|
"ide_assists/src/handlers/toggle_ignore.rs",
|
||||||
|
// See above.
|
||||||
|
"ide_assists/src/tests/generated.rs",
|
||||||
|
];
|
||||||
|
if text.contains("#[ignore") && !need_ignore.iter().any(|p| path.ends_with(p)) {
|
||||||
|
panic!("\ndon't `#[ignore]` tests, see:\n\n {}\n\n {}\n", ignore_rule, path.display(),)
|
||||||
|
}
|
||||||
|
|
||||||
|
let panic_rule =
|
||||||
|
"https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/dev/style.md#panic";
|
||||||
|
let need_panic: &[&str] = &["test_utils/src/fixture.rs"];
|
||||||
|
if text.contains("#[should_panic") && !need_panic.iter().any(|p| path.ends_with(p)) {
|
||||||
|
panic!(
|
||||||
|
"\ndon't add `#[should_panic]` tests, see:\n\n {}\n\n {}\n",
|
||||||
|
panic_rule,
|
||||||
|
path.display(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn check_trailing_ws(path: &Path, text: &str) {
|
fn check_trailing_ws(path: &Path, text: &str) {
|
||||||
if is_exclude_dir(path, &["test_data"]) {
|
if is_exclude_dir(path, &["test_data"]) {
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue