]> git.lizzy.rs Git - rust.git/blob - crates/ra_assists/src/doc_tests.rs
Merge assits::test_helpers and tests
[rust.git] / crates / ra_assists / src / doc_tests.rs
1 //! Each assist definition has a special comment, which specifies docs and
2 //! example.
3 //!
4 //! We collect all the example and write the as tests in this module.
5
6 mod generated;
7
8 use ra_db::FileRange;
9 use test_utils::{assert_eq_text, extract_range_or_offset};
10
11 use crate::resolved_assists;
12
13 fn check(assist_id: &str, before: &str, after: &str) {
14     let (selection, before) = extract_range_or_offset(before);
15     let (db, file_id) = crate::tests::with_single_file(&before);
16     let frange = FileRange { file_id, range: selection.into() };
17
18     let assist = resolved_assists(&db, frange)
19         .into_iter()
20         .find(|assist| assist.label.id.0 == assist_id)
21         .unwrap_or_else(|| {
22             panic!(
23                 "\n\nAssist is not applicable: {}\nAvailable assists: {}",
24                 assist_id,
25                 resolved_assists(&db, frange)
26                     .into_iter()
27                     .map(|assist| assist.label.id.0)
28                     .collect::<Vec<_>>()
29                     .join(", ")
30             )
31         });
32
33     let actual = {
34         let mut actual = before.clone();
35         assist.action.edit.apply(&mut actual);
36         actual
37     };
38     assert_eq_text!(after, &actual);
39 }