]> git.lizzy.rs Git - rust.git/commitdiff
Add example expect test for goto definition
authorAleksey Kladov <aleksey.kladov@gmail.com>
Sat, 27 Jun 2020 16:21:26 +0000 (18:21 +0200)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Sat, 27 Jun 2020 17:22:31 +0000 (19:22 +0200)
Cargo.lock
crates/ra_ide/Cargo.toml
crates/ra_ide/src/goto_definition.rs

index a3cfe5dc4b3a7bae4f53d2a40a2365ef0f4ca3d9..de7337be136735a4d6e207f92b46111644d308a4 100644 (file)
@@ -1130,6 +1130,7 @@ name = "ra_ide"
 version = "0.1.0"
 dependencies = [
  "either",
+ "expect",
  "indexmap",
  "insta",
  "itertools",
index bbc6a5c9b8afb34f672f366895304ac2754435d2..8e889230939840de52b474723c48756a04d0db95 100644 (file)
@@ -28,6 +28,7 @@ ra_cfg = { path = "../ra_cfg" }
 ra_fmt = { path = "../ra_fmt" }
 ra_prof = { path = "../ra_prof" }
 test_utils = { path = "../test_utils" }
+expect = { path = "../expect" }
 ra_assists = { path = "../ra_assists" }
 ra_ssr = { path = "../ra_ssr" }
 
index bea7fbfa77f6d1dee79a81767be97b61a2f19997..969d5e0ffc7f76870967adeeee444f148e94e9c9 100644 (file)
@@ -103,6 +103,7 @@ pub(crate) fn reference_definition(
 
 #[cfg(test)]
 mod tests {
+    use expect::{expect, Expect};
     use test_utils::assert_eq_text;
 
     use crate::mock_analysis::analysis_and_position;
@@ -142,16 +143,40 @@ fn check_goto(ra_fixture: &str, expected: &str, expected_range: &str) {
         nav.assert_match(expected);
     }
 
+    fn check(ra_fixture: &str, expect: Expect) {
+        let (analysis, pos) = analysis_and_position(ra_fixture);
+
+        let mut navs = analysis.goto_definition(pos).unwrap().unwrap().info;
+        if navs.len() == 0 {
+            panic!("unresolved reference")
+        }
+        assert_eq!(navs.len(), 1);
+
+        let nav = navs.pop().unwrap();
+        let file_text = analysis.file_text(nav.file_id()).unwrap();
+
+        let mut actual = nav.debug_render();
+        actual += "\n";
+        actual += &file_text[nav.full_range()].to_string();
+        if let Some(focus) = nav.focus_range() {
+            actual += "|";
+            actual += &file_text[focus];
+            actual += "\n";
+        }
+        expect.assert_eq(&actual);
+    }
+
     #[test]
     fn goto_def_in_items() {
-        check_goto(
-            "
-            //- /lib.rs
-            struct Foo;
-            enum E { X(Foo<|>) }
-            ",
-            "Foo STRUCT_DEF FileId(1) 0..11 7..10",
-            "struct Foo;|Foo",
+        check(
+            r#"
+struct Foo;
+enum E { X(Foo<|>) }
+"#,
+            expect![[r#"
+                Foo STRUCT_DEF FileId(1) 0..11 7..10
+                struct Foo;|Foo
+            "#]],
         );
     }