]> git.lizzy.rs Git - rust.git/commitdiff
rename mock_analysis -> fixture
authorAleksey Kladov <aleksey.kladov@gmail.com>
Fri, 2 Oct 2020 15:34:31 +0000 (17:34 +0200)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Fri, 2 Oct 2020 15:49:44 +0000 (17:49 +0200)
24 files changed:
crates/ide/src/call_hierarchy.rs
crates/ide/src/call_info.rs
crates/ide/src/completion.rs
crates/ide/src/completion/test_utils.rs
crates/ide/src/diagnostics.rs
crates/ide/src/display/navigation_target.rs
crates/ide/src/expand_macro.rs
crates/ide/src/extend_selection.rs
crates/ide/src/fixture.rs [new file with mode: 0644]
crates/ide/src/fn_references.rs
crates/ide/src/goto_definition.rs
crates/ide/src/goto_implementation.rs
crates/ide/src/goto_type_definition.rs
crates/ide/src/hover.rs
crates/ide/src/inlay_hints.rs
crates/ide/src/lib.rs
crates/ide/src/mock_analysis.rs [deleted file]
crates/ide/src/parent_module.rs
crates/ide/src/references.rs
crates/ide/src/references/rename.rs
crates/ide/src/runnables.rs
crates/ide/src/syntax_highlighting/tests.rs
crates/ide/src/syntax_tree.rs
crates/ide/src/typing/on_enter.rs

index 0fb49de712e5c739d762f836a3b4641ea6e8f6e6..d2cf2cc7dfae713dc2bb92a5b0cdbe61b72d8d87 100644 (file)
@@ -139,7 +139,7 @@ fn into_items(self) -> Vec<CallItem> {
 mod tests {
     use base_db::FilePosition;
 
-    use crate::mock_analysis::analysis_and_position;
+    use crate::fixture;
 
     fn check_hierarchy(
         ra_fixture: &str,
@@ -147,7 +147,7 @@ fn check_hierarchy(
         expected_incoming: &[&str],
         expected_outgoing: &[&str],
     ) {
-        let (analysis, pos) = analysis_and_position(ra_fixture);
+        let (analysis, pos) = fixture::position(ra_fixture);
 
         let mut navs = analysis.call_hierarchy(pos).unwrap().unwrap().info;
         assert_eq!(navs.len(), 1);
index 7e99c6b72008dfda52930998a3b56a18f49cf405..d7b2b926e75742453fb2019a4cb9a079482a8ccd 100644 (file)
@@ -232,10 +232,10 @@ mod tests {
     use expect_test::{expect, Expect};
     use test_utils::mark;
 
-    use crate::mock_analysis::analysis_and_position;
+    use crate::fixture;
 
     fn check(ra_fixture: &str, expect: Expect) {
-        let (analysis, position) = analysis_and_position(ra_fixture);
+        let (analysis, position) = fixture::position(ra_fixture);
         let call_info = analysis.call_info(position).unwrap();
         let actual = match call_info {
             Some(call_info) => {
index daea2aa9585b187d8b3c5b97b4d11b7db06ae583..697f691b04211570d5907bfc23342e23e513004a 100644 (file)
@@ -133,7 +133,7 @@ pub(crate) fn completions(
 #[cfg(test)]
 mod tests {
     use crate::completion::completion_config::CompletionConfig;
-    use crate::mock_analysis::analysis_and_position;
+    use crate::fixture;
 
     struct DetailAndDocumentation<'a> {
         detail: &'a str,
@@ -141,7 +141,7 @@ struct DetailAndDocumentation<'a> {
     }
 
     fn check_detail_and_documentation(ra_fixture: &str, expected: DetailAndDocumentation) {
-        let (analysis, position) = analysis_and_position(ra_fixture);
+        let (analysis, position) = fixture::position(ra_fixture);
         let config = CompletionConfig::default();
         let completions = analysis.completions(&config, position).unwrap().unwrap();
         for item in completions {
index 1452d7e9e54b5cde41216ec3fd558907a8c1f8f1..feb8cd2a6eec8b3385fa6767681b518ad6caa1d5 100644 (file)
@@ -8,8 +8,7 @@
 
 use crate::{
     completion::{completion_item::CompletionKind, CompletionConfig},
-    mock_analysis::analysis_and_position,
-    CompletionItem,
+    fixture, CompletionItem,
 };
 
 pub(crate) fn do_completion(code: &str, kind: CompletionKind) -> Vec<CompletionItem> {
@@ -80,7 +79,7 @@ pub(crate) fn check_edit_with_config(
     ra_fixture_after: &str,
 ) {
     let ra_fixture_after = trim_indent(ra_fixture_after);
-    let (analysis, position) = analysis_and_position(ra_fixture_before);
+    let (analysis, position) = fixture::position(ra_fixture_before);
     let completions: Vec<CompletionItem> =
         analysis.completions(&config, position).unwrap().unwrap().into();
     let (completion,) = completions
@@ -94,7 +93,7 @@ pub(crate) fn check_edit_with_config(
 }
 
 pub(crate) fn check_pattern_is_applicable(code: &str, check: fn(SyntaxElement) -> bool) {
-    let (analysis, pos) = analysis_and_position(code);
+    let (analysis, pos) = fixture::position(code);
     analysis
         .with_db(|db| {
             let sema = Semantics::new(db);
@@ -109,6 +108,6 @@ pub(crate) fn get_all_completion_items(
     config: CompletionConfig,
     code: &str,
 ) -> Vec<CompletionItem> {
-    let (analysis, position) = analysis_and_position(code);
+    let (analysis, position) = fixture::position(code);
     analysis.completions(&config, position).unwrap().unwrap().into()
 }
index 906f72a42abae64477aa65f43926a6f950a9a4d2..f5d627b6efb816f26571bcc8bd8cfc427d919c87 100644 (file)
@@ -218,10 +218,7 @@ mod tests {
     use stdx::trim_indent;
     use test_utils::assert_eq_text;
 
-    use crate::{
-        mock_analysis::{analysis_and_position, many_files, single_file},
-        DiagnosticsConfig,
-    };
+    use crate::{fixture, DiagnosticsConfig};
 
     /// Takes a multi-file input fixture with annotated cursor positions,
     /// and checks that:
@@ -231,7 +228,7 @@ mod tests {
     fn check_fix(ra_fixture_before: &str, ra_fixture_after: &str) {
         let after = trim_indent(ra_fixture_after);
 
-        let (analysis, file_position) = analysis_and_position(ra_fixture_before);
+        let (analysis, file_position) = fixture::position(ra_fixture_before);
         let diagnostic = analysis
             .diagnostics(&DiagnosticsConfig::default(), file_position.file_id)
             .unwrap()
@@ -260,7 +257,7 @@ fn check_fix(ra_fixture_before: &str, ra_fixture_after: &str) {
     /// which has a fix that can apply to other files.
     fn check_apply_diagnostic_fix_in_other_file(ra_fixture_before: &str, ra_fixture_after: &str) {
         let ra_fixture_after = &trim_indent(ra_fixture_after);
-        let (analysis, file_pos) = analysis_and_position(ra_fixture_before);
+        let (analysis, file_pos) = fixture::position(ra_fixture_before);
         let current_file_id = file_pos.file_id;
         let diagnostic = analysis
             .diagnostics(&DiagnosticsConfig::default(), current_file_id)
@@ -282,7 +279,7 @@ fn check_apply_diagnostic_fix_in_other_file(ra_fixture_before: &str, ra_fixture_
     /// Takes a multi-file input fixture with annotated cursor position and checks that no diagnostics
     /// apply to the file containing the cursor.
     fn check_no_diagnostics(ra_fixture: &str) {
-        let (analysis, files) = many_files(ra_fixture);
+        let (analysis, files) = fixture::files(ra_fixture);
         let diagnostics = files
             .into_iter()
             .flat_map(|file_id| {
@@ -293,7 +290,7 @@ fn check_no_diagnostics(ra_fixture: &str) {
     }
 
     fn check_expect(ra_fixture: &str, expect: Expect) {
-        let (analysis, file_id) = single_file(ra_fixture);
+        let (analysis, file_id) = fixture::file(ra_fixture);
         let diagnostics = analysis.diagnostics(&DiagnosticsConfig::default(), file_id).unwrap();
         expect.assert_debug_eq(&diagnostics)
     }
@@ -785,7 +782,7 @@ fn test_disabled_diagnostics() {
         let mut config = DiagnosticsConfig::default();
         config.disabled.insert("unresolved-module".into());
 
-        let (analysis, file_id) = single_file(r#"mod foo;"#);
+        let (analysis, file_id) = fixture::file(r#"mod foo;"#);
 
         let diagnostics = analysis.diagnostics(&config, file_id).unwrap();
         assert!(diagnostics.is_empty());
index bace2f3a370d59b46cf7a70b7cc0fa060601b079..cf9d617dc0c30cc2f98f96980654bb0eb9ad6888 100644 (file)
@@ -423,11 +423,11 @@ pub(crate) fn description_from_symbol(db: &RootDatabase, symbol: &FileSymbol) ->
 mod tests {
     use expect_test::expect;
 
-    use crate::{mock_analysis::single_file, Query};
+    use crate::{fixture, Query};
 
     #[test]
     fn test_nav_for_symbol() {
-        let (analysis, _) = single_file(
+        let (analysis, _) = fixture::file(
             r#"
 enum FooInner { }
 fn foo() { enum FooInner { } }
@@ -478,7 +478,7 @@ fn foo() { enum FooInner { } }
 
     #[test]
     fn test_world_symbols_are_case_sensitive() {
-        let (analysis, _) = single_file(
+        let (analysis, _) = fixture::file(
             r#"
 fn foo() {}
 struct Foo;
index 8a285bcf7a9698b0b4172d17efb345a6198d245d..8d75e0f05c0fb1486c5373cfd889cc623737859b 100644 (file)
@@ -122,10 +122,10 @@ fn is_text(k: SyntaxKind) -> bool {
 mod tests {
     use expect_test::{expect, Expect};
 
-    use crate::mock_analysis::analysis_and_position;
+    use crate::fixture;
 
     fn check(ra_fixture: &str, expect: Expect) {
-        let (analysis, pos) = analysis_and_position(ra_fixture);
+        let (analysis, pos) = fixture::position(ra_fixture);
         let expansion = analysis.expand_macro(pos).unwrap().unwrap();
         let actual = format!("{}\n{}", expansion.name, expansion.expansion);
         expect.assert_eq(&actual);
index 34563a0267f6acd64edce4b35aa6d4315b75e9e8..3ee0af8ad430a02d89e33a410447a35d3b311e53 100644 (file)
@@ -315,12 +315,12 @@ fn adj_comments(comment: &ast::Comment, dir: Direction) -> ast::Comment {
 
 #[cfg(test)]
 mod tests {
-    use crate::mock_analysis::analysis_and_position;
+    use crate::fixture;
 
     use super::*;
 
     fn do_check(before: &str, afters: &[&str]) {
-        let (analysis, position) = analysis_and_position(&before);
+        let (analysis, position) = fixture::position(&before);
         let before = analysis.file_text(position.file_id).unwrap();
         let range = TextRange::empty(position.offset);
         let mut frange = FileRange { file_id: position.file_id, range };
diff --git a/crates/ide/src/fixture.rs b/crates/ide/src/fixture.rs
new file mode 100644 (file)
index 0000000..ed06689
--- /dev/null
@@ -0,0 +1,70 @@
+//! Utilities for creating `Analysis` instances for tests.
+use base_db::fixture::ChangeFixture;
+use test_utils::{extract_annotations, RangeOrOffset};
+
+use crate::{Analysis, AnalysisHost, FileId, FilePosition, FileRange};
+
+/// Creates analysis for a single file.
+pub(crate) fn file(ra_fixture: &str) -> (Analysis, FileId) {
+    let mut host = AnalysisHost::default();
+    let change_fixture = ChangeFixture::parse(ra_fixture);
+    host.db.apply_change(change_fixture.change);
+    (host.analysis(), change_fixture.files[0])
+}
+
+/// Creates analysis for many files.
+pub(crate) fn files(ra_fixture: &str) -> (Analysis, Vec<FileId>) {
+    let mut host = AnalysisHost::default();
+    let change_fixture = ChangeFixture::parse(ra_fixture);
+    host.db.apply_change(change_fixture.change);
+    (host.analysis(), change_fixture.files)
+}
+
+/// Creates analysis from a multi-file fixture, returns positions marked with <|>.
+pub(crate) fn position(ra_fixture: &str) -> (Analysis, FilePosition) {
+    let mut host = AnalysisHost::default();
+    let change_fixture = ChangeFixture::parse(ra_fixture);
+    host.db.apply_change(change_fixture.change);
+    let (file_id, range_or_offset) = change_fixture.file_position.expect("expected a marker (<|>)");
+    let offset = match range_or_offset {
+        RangeOrOffset::Range(_) => panic!(),
+        RangeOrOffset::Offset(it) => it,
+    };
+    (host.analysis(), FilePosition { file_id, offset })
+}
+
+/// Creates analysis for a single file, returns range marked with a pair of <|>.
+pub(crate) fn range(ra_fixture: &str) -> (Analysis, FileRange) {
+    let mut host = AnalysisHost::default();
+    let change_fixture = ChangeFixture::parse(ra_fixture);
+    host.db.apply_change(change_fixture.change);
+    let (file_id, range_or_offset) = change_fixture.file_position.expect("expected a marker (<|>)");
+    let range = match range_or_offset {
+        RangeOrOffset::Range(it) => it,
+        RangeOrOffset::Offset(_) => panic!(),
+    };
+    (host.analysis(), FileRange { file_id, range })
+}
+
+/// Creates analysis from a multi-file fixture, returns positions marked with <|>.
+pub(crate) fn annotations(ra_fixture: &str) -> (Analysis, FilePosition, Vec<(FileRange, String)>) {
+    let mut host = AnalysisHost::default();
+    let change_fixture = ChangeFixture::parse(ra_fixture);
+    host.db.apply_change(change_fixture.change);
+    let (file_id, range_or_offset) = change_fixture.file_position.expect("expected a marker (<|>)");
+    let offset = match range_or_offset {
+        RangeOrOffset::Range(_) => panic!(),
+        RangeOrOffset::Offset(it) => it,
+    };
+
+    let annotations = change_fixture
+        .files
+        .iter()
+        .flat_map(|&file_id| {
+            let file_text = host.analysis().file_text(file_id).unwrap();
+            let annotations = extract_annotations(&file_text);
+            annotations.into_iter().map(move |(range, data)| (FileRange { file_id, range }, data))
+        })
+        .collect();
+    (host.analysis(), FilePosition { file_id, offset }, annotations)
+}
index 1989a562bec4d6dd564ad3386eb8a56cfc3037de..459f201ed805a60e0f746d3af7334f9bb4ec31e8 100644 (file)
@@ -25,15 +25,14 @@ fn method_range(item: SyntaxNode, file_id: FileId) -> Option<FileRange> {
 
 #[cfg(test)]
 mod tests {
-    use crate::mock_analysis::analysis_and_position;
+    use crate::fixture;
     use crate::{FileRange, TextSize};
     use std::ops::RangeInclusive;
 
     #[test]
     fn test_find_all_methods() {
-        let (analysis, pos) = analysis_and_position(
+        let (analysis, pos) = fixture::position(
             r#"
-            //- /lib.rs
             fn private_fn() {<|>}
 
             pub fn pub_fn() {}
@@ -48,9 +47,8 @@ pub fn generic_fn<T>(arg: T) {}
 
     #[test]
     fn test_find_trait_methods() {
-        let (analysis, pos) = analysis_and_position(
+        let (analysis, pos) = fixture::position(
             r#"
-            //- /lib.rs
             trait Foo {
                 fn bar() {<|>}
                 fn baz() {}
@@ -64,7 +62,7 @@ fn baz() {}
 
     #[test]
     fn test_skip_tests() {
-        let (analysis, pos) = analysis_and_position(
+        let (analysis, pos) = fixture::position(
             r#"
             //- /lib.rs
             #[test]
index 5fd2d1e9acab5d750d099b7bfd3e61df6ffd592b..582bf4837d53f38527d9f3f8120ec59b19e06a8f 100644 (file)
@@ -103,10 +103,10 @@ mod tests {
     use base_db::FileRange;
     use syntax::{TextRange, TextSize};
 
-    use crate::mock_analysis::analysis_and_annotations;
+    use crate::fixture;
 
     fn check(ra_fixture: &str) {
-        let (analysis, position, mut annotations) = analysis_and_annotations(ra_fixture);
+        let (analysis, position, mut annotations) = fixture::annotations(ra_fixture);
         let (mut expected, data) = annotations.pop().unwrap();
         match data.as_str() {
             "" => (),
index a88854d05c44fe9e35ada5d0839b52e22c6606b8..6c586bbd120e1dd100f6b31df9577fd2e91536c0 100644 (file)
@@ -76,10 +76,10 @@ fn impls_for_trait(
 mod tests {
     use base_db::FileRange;
 
-    use crate::mock_analysis::analysis_and_annotations;
+    use crate::fixture;
 
     fn check(ra_fixture: &str) {
-        let (analysis, position, annotations) = analysis_and_annotations(ra_fixture);
+        let (analysis, position, annotations) = fixture::annotations(ra_fixture);
 
         let navs = analysis.goto_implementation(position).unwrap().unwrap().info;
 
index b55a2dbb1a5afb5b6789b556cb76199504afbb2d..6d0df04dd065ec9ada30e8bd767a678743924bd7 100644 (file)
@@ -56,10 +56,10 @@ fn priority(n: &SyntaxToken) -> usize {
 mod tests {
     use base_db::FileRange;
 
-    use crate::mock_analysis::analysis_and_annotations;
+    use crate::fixture;
 
     fn check(ra_fixture: &str) {
-        let (analysis, position, mut annotations) = analysis_and_annotations(ra_fixture);
+        let (analysis, position, mut annotations) = fixture::annotations(ra_fixture);
         let (expected, data) = annotations.pop().unwrap();
         assert!(data.is_empty());
 
index 008061a3975a51efbc804f927447ce11b75dac99..9cf02f0a32fe829b5734a529f08a0379913ee0ef 100644 (file)
@@ -377,17 +377,17 @@ mod tests {
     use base_db::FileLoader;
     use expect_test::{expect, Expect};
 
-    use crate::mock_analysis::analysis_and_position;
+    use crate::fixture;
 
     use super::*;
 
     fn check_hover_no_result(ra_fixture: &str) {
-        let (analysis, position) = analysis_and_position(ra_fixture);
+        let (analysis, position) = fixture::position(ra_fixture);
         assert!(analysis.hover(position, true).unwrap().is_none());
     }
 
     fn check(ra_fixture: &str, expect: Expect) {
-        let (analysis, position) = analysis_and_position(ra_fixture);
+        let (analysis, position) = fixture::position(ra_fixture);
         let hover = analysis.hover(position, true).unwrap().unwrap();
 
         let content = analysis.db.file_text(position.file_id);
@@ -398,7 +398,7 @@ fn check(ra_fixture: &str, expect: Expect) {
     }
 
     fn check_hover_no_links(ra_fixture: &str, expect: Expect) {
-        let (analysis, position) = analysis_and_position(ra_fixture);
+        let (analysis, position) = fixture::position(ra_fixture);
         let hover = analysis.hover(position, false).unwrap().unwrap();
 
         let content = analysis.db.file_text(position.file_id);
@@ -409,7 +409,7 @@ fn check_hover_no_links(ra_fixture: &str, expect: Expect) {
     }
 
     fn check_actions(ra_fixture: &str, expect: Expect) {
-        let (analysis, position) = analysis_and_position(ra_fixture);
+        let (analysis, position) = fixture::position(ra_fixture);
         let hover = analysis.hover(position, true).unwrap().unwrap();
         expect.assert_debug_eq(&hover.info.actions)
     }
@@ -963,7 +963,7 @@ fn new() -> Self { Self<|> { x: 0 } }
             "#]],
         )
     } /* FIXME: revive these tests
-              let (analysis, position) = analysis_and_position(
+              let (analysis, position) = fixture::position(
                   "
                   struct Thing { x: u32 }
                   impl Thing {
@@ -977,7 +977,7 @@ fn new() -> Self<|> {
               let hover = analysis.hover(position).unwrap().unwrap();
               assert_eq!(trim_markup(&hover.info.markup.as_str()), ("Thing"));
 
-              let (analysis, position) = analysis_and_position(
+              let (analysis, position) = fixture::position(
                   "
                   enum Thing { A }
                   impl Thing {
@@ -990,7 +990,7 @@ pub fn new() -> Self<|> {
               let hover = analysis.hover(position).unwrap().unwrap();
               assert_eq!(trim_markup(&hover.info.markup.as_str()), ("enum Thing"));
 
-              let (analysis, position) = analysis_and_position(
+              let (analysis, position) = fixture::position(
                   "
                   enum Thing { A }
                   impl Thing {
index 583f39d85ba22e57cbf987ee985586aec68f8ed8..0afe5f8fd2dc128db8df098483c0ca4473b94701 100644 (file)
@@ -339,14 +339,14 @@ mod tests {
     use expect_test::{expect, Expect};
     use test_utils::extract_annotations;
 
-    use crate::{inlay_hints::InlayHintsConfig, mock_analysis::single_file};
+    use crate::{fixture, inlay_hints::InlayHintsConfig};
 
     fn check(ra_fixture: &str) {
         check_with_config(InlayHintsConfig::default(), ra_fixture);
     }
 
     fn check_with_config(config: InlayHintsConfig, ra_fixture: &str) {
-        let (analysis, file_id) = single_file(ra_fixture);
+        let (analysis, file_id) = fixture::file(ra_fixture);
         let expected = extract_annotations(&*analysis.file_text(file_id).unwrap());
         let inlay_hints = analysis.inlay_hints(file_id, &config).unwrap();
         let actual =
@@ -355,7 +355,7 @@ fn check_with_config(config: InlayHintsConfig, ra_fixture: &str) {
     }
 
     fn check_expect(config: InlayHintsConfig, ra_fixture: &str, expect: Expect) {
-        let (analysis, file_id) = single_file(ra_fixture);
+        let (analysis, file_id) = fixture::file(ra_fixture);
         let inlay_hints = analysis.inlay_hints(file_id, &config).unwrap();
         expect.assert_debug_eq(&inlay_hints)
     }
index 073b766a56d0da25493ccb914273e1774d9e8417..1aa673cf8a730439913c8085cb29a7072351d648 100644 (file)
@@ -16,7 +16,7 @@ macro_rules! eprintln {
 }
 
 #[cfg(test)]
-mod mock_analysis;
+mod fixture;
 
 mod markup;
 mod prime_caches;
diff --git a/crates/ide/src/mock_analysis.rs b/crates/ide/src/mock_analysis.rs
deleted file mode 100644 (file)
index 8385475..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-//! FIXME: write short doc here
-
-use base_db::fixture::ChangeFixture;
-use test_utils::{extract_annotations, RangeOrOffset};
-
-use crate::{Analysis, AnalysisHost, FileId, FilePosition, FileRange};
-
-/// Creates analysis from a multi-file fixture, returns positions marked with <|>.
-pub(crate) fn analysis_and_position(ra_fixture: &str) -> (Analysis, FilePosition) {
-    let mut host = AnalysisHost::default();
-    let change_fixture = ChangeFixture::parse(ra_fixture);
-    host.db.apply_change(change_fixture.change);
-    let (file_id, range_or_offset) = change_fixture.file_position.expect("expected a marker (<|>)");
-    let offset = match range_or_offset {
-        RangeOrOffset::Range(_) => panic!(),
-        RangeOrOffset::Offset(it) => it,
-    };
-    (host.analysis(), FilePosition { file_id, offset })
-}
-
-/// Creates analysis for a single file.
-pub(crate) fn single_file(ra_fixture: &str) -> (Analysis, FileId) {
-    let mut host = AnalysisHost::default();
-    let change_fixture = ChangeFixture::parse(ra_fixture);
-    host.db.apply_change(change_fixture.change);
-    (host.analysis(), change_fixture.files[0])
-}
-
-/// Creates analysis for a single file.
-pub(crate) fn many_files(ra_fixture: &str) -> (Analysis, Vec<FileId>) {
-    let mut host = AnalysisHost::default();
-    let change_fixture = ChangeFixture::parse(ra_fixture);
-    host.db.apply_change(change_fixture.change);
-    (host.analysis(), change_fixture.files)
-}
-
-/// Creates analysis for a single file, returns range marked with a pair of <|>.
-pub(crate) fn analysis_and_range(ra_fixture: &str) -> (Analysis, FileRange) {
-    let mut host = AnalysisHost::default();
-    let change_fixture = ChangeFixture::parse(ra_fixture);
-    host.db.apply_change(change_fixture.change);
-    let (file_id, range_or_offset) = change_fixture.file_position.expect("expected a marker (<|>)");
-    let range = match range_or_offset {
-        RangeOrOffset::Range(it) => it,
-        RangeOrOffset::Offset(_) => panic!(),
-    };
-    (host.analysis(), FileRange { file_id, range })
-}
-
-/// Creates analysis from a multi-file fixture, returns positions marked with <|>.
-pub(crate) fn analysis_and_annotations(
-    ra_fixture: &str,
-) -> (Analysis, FilePosition, Vec<(FileRange, String)>) {
-    let mut host = AnalysisHost::default();
-    let change_fixture = ChangeFixture::parse(ra_fixture);
-    host.db.apply_change(change_fixture.change);
-    let (file_id, range_or_offset) = change_fixture.file_position.expect("expected a marker (<|>)");
-    let offset = match range_or_offset {
-        RangeOrOffset::Range(_) => panic!(),
-        RangeOrOffset::Offset(it) => it,
-    };
-
-    let annotations = change_fixture
-        .files
-        .iter()
-        .flat_map(|&file_id| {
-            let file_text = host.analysis().file_text(file_id).unwrap();
-            let annotations = extract_annotations(&file_text);
-            annotations.into_iter().map(move |(range, data)| (FileRange { file_id, range }, data))
-        })
-        .collect();
-    (host.analysis(), FilePosition { file_id, offset }, annotations)
-}
index 25345447642f3a1f2aa6c12694ce0cda168d859f..ef94acfecd9e9d0a787141cc353044b8b52aaff1 100644 (file)
@@ -65,11 +65,11 @@ pub(crate) fn crate_for(db: &RootDatabase, file_id: FileId) -> Vec<CrateId> {
 mod tests {
     use test_utils::mark;
 
-    use crate::mock_analysis::{analysis_and_position, single_file};
+    use crate::fixture::{self};
 
     #[test]
     fn test_resolve_parent_module() {
-        let (analysis, pos) = analysis_and_position(
+        let (analysis, pos) = fixture::position(
             "
             //- /lib.rs
             mod foo;
@@ -84,7 +84,7 @@ fn test_resolve_parent_module() {
     #[test]
     fn test_resolve_parent_module_on_module_decl() {
         mark::check!(test_resolve_parent_module_on_module_decl);
-        let (analysis, pos) = analysis_and_position(
+        let (analysis, pos) = fixture::position(
             "
             //- /lib.rs
             mod foo;
@@ -102,7 +102,7 @@ fn test_resolve_parent_module_on_module_decl() {
 
     #[test]
     fn test_resolve_parent_module_for_inline() {
-        let (analysis, pos) = analysis_and_position(
+        let (analysis, pos) = fixture::position(
             "
             //- /lib.rs
             mod foo {
@@ -118,7 +118,7 @@ mod baz { <|> }
 
     #[test]
     fn test_resolve_crate_root() {
-        let (analysis, file_id) = single_file(
+        let (analysis, file_id) = fixture::file(
             r#"
 //- /main.rs
 mod foo;
index 157e0dc949b9572a379d5cf45e96b95abb22492e..e0830eb4fc6fbcc49ca263c15dc008ea456a82c7 100644 (file)
@@ -194,7 +194,7 @@ mod tests {
     use expect_test::{expect, Expect};
     use stdx::format_to;
 
-    use crate::{mock_analysis::analysis_and_position, SearchScope};
+    use crate::{fixture, SearchScope};
 
     #[test]
     fn test_struct_literal_after_space() {
@@ -674,7 +674,7 @@ fn check(ra_fixture: &str, expect: Expect) {
     }
 
     fn check_with_scope(ra_fixture: &str, search_scope: Option<SearchScope>, expect: Expect) {
-        let (analysis, pos) = analysis_and_position(ra_fixture);
+        let (analysis, pos) = fixture::position(ra_fixture);
         let refs = analysis.find_all_refs(pos, search_scope).unwrap().unwrap();
 
         let mut actual = String::new();
index 36652707042b5cb52569c12cbe1d3e548f0f7aa3..8cbe1ae5a290f01c0459e3a4c59e7d9b02d0f90d 100644 (file)
@@ -275,11 +275,11 @@ mod tests {
     use test_utils::{assert_eq_text, mark};
     use text_edit::TextEdit;
 
-    use crate::{mock_analysis::analysis_and_position, FileId};
+    use crate::{fixture, FileId};
 
     fn check(new_name: &str, ra_fixture_before: &str, ra_fixture_after: &str) {
         let ra_fixture_after = &trim_indent(ra_fixture_after);
-        let (analysis, position) = analysis_and_position(ra_fixture_before);
+        let (analysis, position) = fixture::position(ra_fixture_before);
         let source_change = analysis.rename(position, new_name).unwrap();
         let mut text_edit_builder = TextEdit::builder();
         let mut file_id: Option<FileId> = None;
@@ -297,7 +297,7 @@ fn check(new_name: &str, ra_fixture_before: &str, ra_fixture_after: &str) {
     }
 
     fn check_expect(new_name: &str, ra_fixture: &str, expect: Expect) {
-        let (analysis, position) = analysis_and_position(ra_fixture);
+        let (analysis, position) = fixture::position(ra_fixture);
         let source_change = analysis.rename(position, new_name).unwrap().unwrap();
         expect.assert_debug_eq(&source_change)
     }
@@ -314,7 +314,7 @@ fn test_rename_to_raw_identifier() {
 
     #[test]
     fn test_rename_to_invalid_identifier() {
-        let (analysis, position) = analysis_and_position(r#"fn main() { let i<|> = 1; }"#);
+        let (analysis, position) = fixture::position(r#"fn main() { let i<|> = 1; }"#);
         let new_name = "invalid!";
         let source_change = analysis.rename(position, new_name).unwrap();
         assert!(source_change.is_none());
index 961066277fb9ca4a5de84294e7dea15a813fc53a..752ef2f21911f4997c9d8b9b2fe14b3db98bc23f 100644 (file)
@@ -292,7 +292,7 @@ fn has_test_function_or_multiple_test_submodules(module: &ast::Module) -> bool {
 mod tests {
     use expect_test::{expect, Expect};
 
-    use crate::mock_analysis::analysis_and_position;
+    use crate::fixture;
 
     use super::{RunnableAction, BENCH, BIN, DOCTEST, TEST};
 
@@ -302,7 +302,7 @@ fn check(
         actions: &[&RunnableAction],
         expect: Expect,
     ) {
-        let (analysis, position) = analysis_and_position(ra_fixture);
+        let (analysis, position) = fixture::position(ra_fixture);
         let runnables = analysis.runnables(position.file_id).unwrap();
         expect.assert_debug_eq(&runnables);
         assert_eq!(
index eaa4e163ea2bbf4c0233a43adfc0071aaacbb183..694c4b7fa1537d23eb370cd6a9609904475d56af 100644 (file)
@@ -3,7 +3,7 @@
 use expect_test::{expect_file, ExpectFile};
 use test_utils::project_dir;
 
-use crate::{mock_analysis::single_file, FileRange, TextRange};
+use crate::{fixture, FileRange, TextRange};
 
 #[test]
 fn test_highlighting() {
@@ -178,7 +178,7 @@ fn accidentally_quadratic() {
     let file = project_dir().join("crates/syntax/test_data/accidentally_quadratic");
     let src = fs::read_to_string(file).unwrap();
 
-    let (analysis, file_id) = single_file(&src);
+    let (analysis, file_id) = fixture::file(&src);
 
     // let t = std::time::Instant::now();
     let _ = analysis.highlight(file_id).unwrap();
@@ -187,7 +187,7 @@ fn accidentally_quadratic() {
 
 #[test]
 fn test_ranges() {
-    let (analysis, file_id) = single_file(
+    let (analysis, file_id) = fixture::file(
         r#"
 #[derive(Clone, Debug)]
 struct Foo {
@@ -228,7 +228,7 @@ fn foo() {
 
 #[test]
 fn ranges_sorted() {
-    let (analysis, file_id) = single_file(
+    let (analysis, file_id) = fixture::file(
         r#"
 #[foo(bar = "bar")]
 macro_rules! test {}
@@ -479,7 +479,7 @@ pub struct A
 /// result as HTML, and compares it with the HTML file given as `snapshot`.
 /// Note that the `snapshot` file is overwritten by the rendered HTML.
 fn check_highlighting(ra_fixture: &str, expect: ExpectFile, rainbow: bool) {
-    let (analysis, file_id) = single_file(ra_fixture);
+    let (analysis, file_id) = fixture::file(ra_fixture);
     let actual_html = &analysis.highlight_as_html(file_id, rainbow).unwrap();
     expect.assert_eq(actual_html)
 }
index f8004495960c83e3a47dda5fac2bf41642543b3b..0eed2dbd78adbcdb12becf6dad3d4595f8fd2727 100644 (file)
@@ -104,12 +104,12 @@ fn syntax_tree_for_token(node: &SyntaxToken, text_range: TextRange) -> Option<St
 mod tests {
     use test_utils::assert_eq_text;
 
-    use crate::mock_analysis::{analysis_and_range, single_file};
+    use crate::fixture;
 
     #[test]
     fn test_syntax_tree_without_range() {
         // Basic syntax
-        let (analysis, file_id) = single_file(r#"fn foo() {}"#);
+        let (analysis, file_id) = fixture::file(r#"fn foo() {}"#);
         let syn = analysis.syntax_tree(file_id, None).unwrap();
 
         assert_eq_text!(
@@ -132,7 +132,7 @@ fn test_syntax_tree_without_range() {
             .trim()
         );
 
-        let (analysis, file_id) = single_file(
+        let (analysis, file_id) = fixture::file(
             r#"
 fn test() {
     assert!("
@@ -184,7 +184,7 @@ fn foo() {
 
     #[test]
     fn test_syntax_tree_with_range() {
-        let (analysis, range) = analysis_and_range(r#"<|>fn foo() {}<|>"#.trim());
+        let (analysis, range) = fixture::range(r#"<|>fn foo() {}<|>"#.trim());
         let syn = analysis.syntax_tree(range.file_id, Some(range.range)).unwrap();
 
         assert_eq_text!(
@@ -206,7 +206,7 @@ fn test_syntax_tree_with_range() {
             .trim()
         );
 
-        let (analysis, range) = analysis_and_range(
+        let (analysis, range) = fixture::range(
             r#"fn test() {
     <|>assert!("
     fn foo() {
@@ -242,7 +242,7 @@ fn foo() {
 
     #[test]
     fn test_syntax_tree_inside_string() {
-        let (analysis, range) = analysis_and_range(
+        let (analysis, range) = fixture::range(
             r#"fn test() {
     assert!("
 <|>fn foo() {
@@ -276,7 +276,7 @@ fn bar() {
         );
 
         // With a raw string
-        let (analysis, range) = analysis_and_range(
+        let (analysis, range) = fixture::range(
             r###"fn test() {
     assert!(r#"
 <|>fn foo() {
@@ -310,7 +310,7 @@ fn bar() {
         );
 
         // With a raw string
-        let (analysis, range) = analysis_and_range(
+        let (analysis, range) = fixture::range(
             r###"fn test() {
     assert!(r<|>#"
 fn foo() {
index f7d46146c50923b044e8f797afb00c3c9108c1d3..a0dc4b9df6eceebead5c257951fa224c7b75aa3c 100644 (file)
@@ -109,10 +109,10 @@ mod tests {
     use stdx::trim_indent;
     use test_utils::{assert_eq_text, mark};
 
-    use crate::mock_analysis::analysis_and_position;
+    use crate::fixture;
 
     fn apply_on_enter(before: &str) -> Option<String> {
-        let (analysis, position) = analysis_and_position(&before);
+        let (analysis, position) = fixture::position(&before);
         let result = analysis.on_enter(position).unwrap()?;
 
         let mut actual = analysis.file_text(position.file_id).unwrap().to_string();