mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-29 13:25:09 +00:00
internal: don't use #[should_panic]
for tests
This commit is contained in:
parent
06a633ff42
commit
db2a989565
3 changed files with 22 additions and 24 deletions
|
@ -110,6 +110,13 @@ mod tests {
|
|||
assert_eq!(expected, FileRange { file_id: nav.file_id, range: nav.focus_or_full_range() });
|
||||
}
|
||||
|
||||
fn check_unresolved(ra_fixture: &str) {
|
||||
let (analysis, position) = fixture::position(ra_fixture);
|
||||
let navs = analysis.goto_definition(position).unwrap().expect("no definition found").info;
|
||||
|
||||
assert!(navs.is_empty(), "didn't expect this to resolve anywhere: {:?}", navs)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn goto_def_for_extern_crate() {
|
||||
check(
|
||||
|
@ -927,17 +934,12 @@ fn f() -> impl Iterator<Item$0 = u8> {}
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic = "unresolved reference"]
|
||||
fn unknown_assoc_ty() {
|
||||
check(
|
||||
check_unresolved(
|
||||
r#"
|
||||
trait Iterator {
|
||||
type Item;
|
||||
//^^^^
|
||||
}
|
||||
|
||||
trait Iterator { type Item; }
|
||||
fn f() -> impl Iterator<Invalid$0 = u8> {}
|
||||
"#,
|
||||
"#,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -66,26 +66,12 @@ mod tests {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn flip_comma_before_punct() {
|
||||
// See https://github.com/rust-analyzer/rust-analyzer/issues/1619
|
||||
// "Flip comma" assist shouldn't be applicable to the last comma in enum or struct
|
||||
// declaration body.
|
||||
check_assist_target(
|
||||
flip_comma,
|
||||
"pub enum Test { \
|
||||
A,$0 \
|
||||
}",
|
||||
",",
|
||||
);
|
||||
|
||||
check_assist_target(
|
||||
flip_comma,
|
||||
"pub struct Test { \
|
||||
foo: usize,$0 \
|
||||
}",
|
||||
",",
|
||||
);
|
||||
check_assist_not_applicable(flip_comma, "pub enum Test { A,$0 }");
|
||||
check_assist_not_applicable(flip_comma, "pub struct Test { foo: usize,$0 }");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
@ -152,6 +152,16 @@ Do not reuse marks between several tests.
|
|||
|
||||
**Rationale:** marks provide an easy way to find the canonical test for each bit of code.
|
||||
This makes it much easier to understand.
|
||||
More than one mark per test / code branch doesn't add significantly to understanding.
|
||||
|
||||
## `#[should_panic]`
|
||||
|
||||
Do not use `#[should_panic]` tests.
|
||||
Instead, explicitly check for `None`, `Err`, etc.
|
||||
|
||||
**Rationale:**a `#[should_panic]` is a tool for library authors, to makes sure that API does not fail silently, when misused.
|
||||
`rust-analyzer` is not a library, we don't need to test for API misuse, and we have to handle any user input without panics.
|
||||
Panic messages in the logs from the `#[should_panic]` tests are confusing.
|
||||
|
||||
## Function Preconditions
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue