rust/crates/ra_assists/src/doc_tests.rs

36 lines
1.1 KiB
Rust
Raw Normal View History

2019-10-25 06:16:46 -05:00
//! Each assist definition has a special comment, which specifies docs and
//! example.
//!
//! We collect all the example and write the as tests in this module.
mod generated;
2020-02-06 11:10:25 -06:00
use ra_db::FileRange;
2019-10-26 11:58:18 -05:00
use test_utils::{assert_eq_text, extract_range_or_offset};
2019-10-25 06:16:46 -05:00
2020-02-06 11:46:11 -06:00
use crate::resolved_assists;
2019-10-25 06:16:46 -05:00
fn check(assist_id: &str, before: &str, after: &str) {
2019-10-26 11:58:18 -05:00
let (selection, before) = extract_range_or_offset(before);
2020-02-06 11:10:25 -06:00
let (db, file_id) = crate::helpers::with_single_file(&before);
2019-10-26 11:58:18 -05:00
let frange = FileRange { file_id, range: selection.into() };
2019-10-25 06:16:46 -05:00
2020-02-06 11:46:11 -06:00
let assist = resolved_assists(&db, frange)
2019-10-25 15:38:15 -05:00
.into_iter()
2020-01-11 16:40:36 -06:00
.find(|assist| assist.label.id.0 == assist_id)
.unwrap_or_else(|| {
panic!(
"\n\nAssist is not applicable: {}\nAvailable assists: {}",
assist_id,
2020-02-06 11:46:11 -06:00
resolved_assists(&db, frange)
.into_iter()
2020-01-11 16:40:36 -06:00
.map(|assist| assist.label.id.0)
.collect::<Vec<_>>()
.join(", ")
)
});
2019-10-25 06:16:46 -05:00
2020-01-11 16:40:36 -06:00
let actual = assist.get_first_action().edit.apply(&before);
2019-10-25 06:16:46 -05:00
assert_eq_text!(after, &actual);
}