More tests

This commit is contained in:
Lukas Wirth 2021-07-20 18:05:25 +02:00
parent bb71ebb985
commit 2e39d4757b

View file

@ -463,7 +463,7 @@ mod tests {
use super::*; use super::*;
#[test] #[test]
fn test_doc_url_crate() { fn external_docs_doc_url_crate() {
check_external_docs( check_external_docs(
r#" r#"
//- /main.rs crate:main deps:test //- /main.rs crate:main deps:test
@ -476,7 +476,7 @@ pub struct Foo;
} }
#[test] #[test]
fn test_doc_url_struct() { fn external_docs_doc_url_struct() {
check_external_docs( check_external_docs(
r#" r#"
pub struct Fo$0o; pub struct Fo$0o;
@ -486,7 +486,19 @@ pub struct Fo$0o;
} }
#[test] #[test]
fn test_doc_url_fn() { fn external_docs_doc_url_struct_field() {
check_external_docs(
r#"
pub struct Foo {
field$0: ()
}
"#,
expect![[r##"https://docs.rs/test/*/test/struct.Foo.html#structfield.field"##]],
);
}
#[test]
fn external_docs_doc_url_fn() {
check_external_docs( check_external_docs(
r#" r#"
pub fn fo$0o() {} pub fn fo$0o() {}
@ -496,73 +508,119 @@ pub fn fo$0o() {}
} }
#[test] #[test]
fn test_doc_url_inherent_method() { fn external_docs_doc_url_impl_assoc() {
check_external_docs( check_external_docs(
r#" r#"
pub struct Foo; pub struct Foo;
impl Foo { impl Foo {
pub fn met$0hod() {} pub fn method$0() {}
} }
"#, "#,
expect![[r##"https://docs.rs/test/*/test/struct.Foo.html#method.method"##]], expect![[r##"https://docs.rs/test/*/test/struct.Foo.html#method.method"##]],
); );
check_external_docs(
r#"
pub struct Foo;
impl Foo {
const CONST$0: () = ();
}
"#,
expect![[r##"https://docs.rs/test/*/test/struct.Foo.html#associatedconstant.CONST"##]],
);
} }
#[test] #[test]
fn test_doc_url_impl_trait_method() { fn external_docs_doc_url_impl_trait_assoc() {
check_external_docs( check_external_docs(
r#" r#"
pub struct Foo; pub struct Foo;
pub trait Trait { pub trait Trait {
fn met hod(); fn method() {}
} }
impl Trait for Foo { impl Trait for Foo {
pub fn met$0hod() {} pub fn method$0() {}
} }
"#, "#,
expect![[r##"https://docs.rs/test/*/test/struct.Foo.html#method.method"##]], expect![[r##"https://docs.rs/test/*/test/struct.Foo.html#method.method"##]],
); );
check_external_docs(
r#"
pub struct Foo;
pub trait Trait {
const CONST: () = ();
}
impl Trait for Foo {
const CONST$0: () = ();
}
"#,
expect![[r##"https://docs.rs/test/*/test/struct.Foo.html#associatedconstant.CONST"##]],
);
check_external_docs(
r#"
pub struct Foo;
pub trait Trait {
type Type;
}
impl Trait for Foo {
type Type$0 = ();
}
"#,
expect![[r##"https://docs.rs/test/*/test/struct.Foo.html#associatedtype.Type"##]],
);
} }
#[test] #[test]
fn test_doc_url_trait_required_method() { fn external_docs_doc_url_trait_assoc() {
check_external_docs( check_external_docs(
r#" r#"
pub trait Foo { pub trait Foo {
fn met$0hod(); fn method$0();
} }
"#, "#,
expect![[r##"https://docs.rs/test/*/test/trait.Foo.html#tymethod.method"##]], expect![[r##"https://docs.rs/test/*/test/trait.Foo.html#tymethod.method"##]],
); );
}
#[test]
fn test_doc_url_field() {
check_external_docs( check_external_docs(
r#" r#"
pub struct Foo { pub trait Foo {
pub fie$0ld: () const CONST$0: ();
} }
"#, "#,
expect![[r##"https://docs.rs/test/*/test/struct.Foo.html#structfield.field"##]], expect![[r##"https://docs.rs/test/*/test/trait.Foo.html#associatedconstant.CONST"##]],
);
check_external_docs(
r#"
pub trait Foo {
type Type$0;
}
"#,
expect![[r##"https://docs.rs/test/*/test/trait.Foo.html#associatedtype.Type"##]],
); );
} }
#[test] #[test]
fn test_module() { fn external_docs_trait() {
check_external_docs(
r#"
trait Trait$0 {}
"#,
expect![[r#"https://docs.rs/test/*/test/trait.Trait.html"#]],
)
}
#[test]
fn external_docs_module() {
check_external_docs( check_external_docs(
r#" r#"
pub mod foo { pub mod foo {
pub mod ba$0r {} pub mod ba$0r {}
} }
"#, "#,
expect![[r#"https://docs.rs/test/*/test/foo/bar/index.html"#]], expect![[r#"https://docs.rs/test/*/test/foo/bar/index.html"#]],
) )
} }
#[test] #[test]
fn test_reexport_order() { fn external_docs_reexport_order() {
check_external_docs( check_external_docs(
r#" r#"
pub mod wrapper { pub mod wrapper {
@ -603,7 +661,7 @@ trait Trait$0 {
} }
#[test] #[test]
fn test_rewrite_html_root_url() { fn rewrite_html_root_url() {
check_rewrite( check_rewrite(
r#" r#"
#![doc(arbitrary_attribute = "test", html_root_url = "https:/example.com", arbitrary_attribute2)] #![doc(arbitrary_attribute = "test", html_root_url = "https:/example.com", arbitrary_attribute2)]
@ -619,7 +677,7 @@ pub struct B$0ar
} }
#[test] #[test]
fn test_rewrite_on_field() { fn rewrite_on_field() {
// FIXME: Should be // FIXME: Should be
// [Foo](https://docs.rs/test/*/test/struct.Foo.html) // [Foo](https://docs.rs/test/*/test/struct.Foo.html)
check_rewrite( check_rewrite(
@ -634,7 +692,7 @@ pub struct Foo {
} }
#[test] #[test]
fn test_rewrite_struct() { fn rewrite_struct() {
check_rewrite( check_rewrite(
r#" r#"
/// [Foo] /// [Foo]
@ -674,22 +732,6 @@ pub struct $0Foo;
); );
} }
#[test]
fn test_rewrite() {
check_rewrite(
r#"
pub trait Foo {
fn buzz() -> usize;
}
/// [Foo][buzz]
///
/// [buzz]: Foo::buzz
pub struct Bar$0;
"#,
expect![[r###"[Foo](https://docs.rs/test/*/test/trait.Foo.html#tymethod.buzz)"###]],
)
}
fn check_external_docs(ra_fixture: &str, expect: Expect) { fn check_external_docs(ra_fixture: &str, expect: Expect) {
let (analysis, position) = fixture::position(ra_fixture); let (analysis, position) = fixture::position(ra_fixture);
let url = analysis.external_docs(position).unwrap().expect("could not find url for symbol"); let url = analysis.external_docs(position).unwrap().expect("could not find url for symbol");