aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_assists/src
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-05-06 09:16:55 +0100
committerAleksey Kladov <[email protected]>2020-05-06 09:16:55 +0100
commit25e6bbde01d4a9cd08fa79db5b8b7da6bbf1a623 (patch)
treeb47a0ba06886a45d9a07a594c14a04e019b5e2d8 /crates/ra_assists/src
parent30eb458b4fa8adcecd8cbf731bd1cfa9a7a8b88b (diff)
Merge assits::test_helpers and tests
Diffstat (limited to 'crates/ra_assists/src')
-rw-r--r--crates/ra_assists/src/doc_tests.rs2
-rw-r--r--crates/ra_assists/src/handlers/add_custom_impl.rs2
-rw-r--r--crates/ra_assists/src/handlers/add_derive.rs2
-rw-r--r--crates/ra_assists/src/handlers/add_explicit_type.rs2
-rw-r--r--crates/ra_assists/src/handlers/add_from_impl_for_enum.rs2
-rw-r--r--crates/ra_assists/src/handlers/add_function.rs2
-rw-r--r--crates/ra_assists/src/handlers/add_impl.rs2
-rw-r--r--crates/ra_assists/src/handlers/add_missing_impl_members.rs2
-rw-r--r--crates/ra_assists/src/handlers/add_new.rs2
-rw-r--r--crates/ra_assists/src/handlers/apply_demorgan.rs2
-rw-r--r--crates/ra_assists/src/handlers/auto_import.rs2
-rw-r--r--crates/ra_assists/src/handlers/change_visibility.rs2
-rw-r--r--crates/ra_assists/src/handlers/early_return.rs2
-rw-r--r--crates/ra_assists/src/handlers/fill_match_arms.rs2
-rw-r--r--crates/ra_assists/src/handlers/flip_binexpr.rs2
-rw-r--r--crates/ra_assists/src/handlers/flip_comma.rs2
-rw-r--r--crates/ra_assists/src/handlers/flip_trait_bound.rs2
-rw-r--r--crates/ra_assists/src/handlers/inline_local_variable.rs2
-rw-r--r--crates/ra_assists/src/handlers/introduce_variable.rs2
-rw-r--r--crates/ra_assists/src/handlers/invert_if.rs2
-rw-r--r--crates/ra_assists/src/handlers/merge_imports.rs2
-rw-r--r--crates/ra_assists/src/handlers/merge_match_arms.rs2
-rw-r--r--crates/ra_assists/src/handlers/move_bounds.rs2
-rw-r--r--crates/ra_assists/src/handlers/move_guard.rs2
-rw-r--r--crates/ra_assists/src/handlers/raw_string.rs2
-rw-r--r--crates/ra_assists/src/handlers/remove_dbg.rs2
-rw-r--r--crates/ra_assists/src/handlers/reorder_fields.rs2
-rw-r--r--crates/ra_assists/src/handlers/replace_if_let_with_match.rs2
-rw-r--r--crates/ra_assists/src/handlers/replace_let_with_if_let.rs2
-rw-r--r--crates/ra_assists/src/handlers/replace_qualified_name_with_use.rs2
-rw-r--r--crates/ra_assists/src/handlers/replace_unwrap_with_match.rs2
-rw-r--r--crates/ra_assists/src/handlers/split_import.rs2
-rw-r--r--crates/ra_assists/src/handlers/unwrap_block.rs2
-rw-r--r--crates/ra_assists/src/lib.rs149
-rw-r--r--crates/ra_assists/src/tests.rs137
35 files changed, 172 insertions, 180 deletions
diff --git a/crates/ra_assists/src/doc_tests.rs b/crates/ra_assists/src/doc_tests.rs
index f627f31dc..5eabb33d0 100644
--- a/crates/ra_assists/src/doc_tests.rs
+++ b/crates/ra_assists/src/doc_tests.rs
@@ -12,7 +12,7 @@ use crate::resolved_assists;
12 12
13fn check(assist_id: &str, before: &str, after: &str) { 13fn check(assist_id: &str, before: &str, after: &str) {
14 let (selection, before) = extract_range_or_offset(before); 14 let (selection, before) = extract_range_or_offset(before);
15 let (db, file_id) = crate::helpers::with_single_file(&before); 15 let (db, file_id) = crate::tests::with_single_file(&before);
16 let frange = FileRange { file_id, range: selection.into() }; 16 let frange = FileRange { file_id, range: selection.into() };
17 17
18 let assist = resolved_assists(&db, frange) 18 let assist = resolved_assists(&db, frange)
diff --git a/crates/ra_assists/src/handlers/add_custom_impl.rs b/crates/ra_assists/src/handlers/add_custom_impl.rs
index 4ea26a550..b72f7aeac 100644
--- a/crates/ra_assists/src/handlers/add_custom_impl.rs
+++ b/crates/ra_assists/src/handlers/add_custom_impl.rs
@@ -95,7 +95,7 @@ pub(crate) fn add_custom_impl(ctx: AssistCtx) -> Option<Assist> {
95 95
96#[cfg(test)] 96#[cfg(test)]
97mod tests { 97mod tests {
98 use crate::helpers::{check_assist, check_assist_not_applicable}; 98 use crate::tests::{check_assist, check_assist_not_applicable};
99 99
100 use super::*; 100 use super::*;
101 101
diff --git a/crates/ra_assists/src/handlers/add_derive.rs b/crates/ra_assists/src/handlers/add_derive.rs
index 6254eb7c4..3629dac6b 100644
--- a/crates/ra_assists/src/handlers/add_derive.rs
+++ b/crates/ra_assists/src/handlers/add_derive.rs
@@ -58,7 +58,7 @@ fn derive_insertion_offset(nominal: &ast::NominalDef) -> Option<TextSize> {
58#[cfg(test)] 58#[cfg(test)]
59mod tests { 59mod tests {
60 use super::*; 60 use super::*;
61 use crate::helpers::{check_assist, check_assist_target}; 61 use crate::tests::{check_assist, check_assist_target};
62 62
63 #[test] 63 #[test]
64 fn add_derive_new() { 64 fn add_derive_new() {
diff --git a/crates/ra_assists/src/handlers/add_explicit_type.rs b/crates/ra_assists/src/handlers/add_explicit_type.rs
index bc313782b..e39e1f4f3 100644
--- a/crates/ra_assists/src/handlers/add_explicit_type.rs
+++ b/crates/ra_assists/src/handlers/add_explicit_type.rs
@@ -77,7 +77,7 @@ pub(crate) fn add_explicit_type(ctx: AssistCtx) -> Option<Assist> {
77mod tests { 77mod tests {
78 use super::*; 78 use super::*;
79 79
80 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target}; 80 use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target};
81 81
82 #[test] 82 #[test]
83 fn add_explicit_type_target() { 83 fn add_explicit_type_target() {
diff --git a/crates/ra_assists/src/handlers/add_from_impl_for_enum.rs b/crates/ra_assists/src/handlers/add_from_impl_for_enum.rs
index 49deb6701..ee0d5ce98 100644
--- a/crates/ra_assists/src/handlers/add_from_impl_for_enum.rs
+++ b/crates/ra_assists/src/handlers/add_from_impl_for_enum.rs
@@ -97,7 +97,7 @@ fn existing_from_impl(
97mod tests { 97mod tests {
98 use super::*; 98 use super::*;
99 99
100 use crate::helpers::{check_assist, check_assist_not_applicable}; 100 use crate::tests::{check_assist, check_assist_not_applicable};
101 use test_utils::covers; 101 use test_utils::covers;
102 102
103 #[test] 103 #[test]
diff --git a/crates/ra_assists/src/handlers/add_function.rs b/crates/ra_assists/src/handlers/add_function.rs
index 6c7456579..cb2afc863 100644
--- a/crates/ra_assists/src/handlers/add_function.rs
+++ b/crates/ra_assists/src/handlers/add_function.rs
@@ -283,7 +283,7 @@ fn next_space_for_fn_in_module(
283 283
284#[cfg(test)] 284#[cfg(test)]
285mod tests { 285mod tests {
286 use crate::helpers::{check_assist, check_assist_not_applicable}; 286 use crate::tests::{check_assist, check_assist_not_applicable};
287 287
288 use super::*; 288 use super::*;
289 289
diff --git a/crates/ra_assists/src/handlers/add_impl.rs b/crates/ra_assists/src/handlers/add_impl.rs
index d26f8b93d..3d390c20b 100644
--- a/crates/ra_assists/src/handlers/add_impl.rs
+++ b/crates/ra_assists/src/handlers/add_impl.rs
@@ -60,7 +60,7 @@ pub(crate) fn add_impl(ctx: AssistCtx) -> Option<Assist> {
60#[cfg(test)] 60#[cfg(test)]
61mod tests { 61mod tests {
62 use super::*; 62 use super::*;
63 use crate::helpers::{check_assist, check_assist_target}; 63 use crate::tests::{check_assist, check_assist_target};
64 64
65 #[test] 65 #[test]
66 fn test_add_impl() { 66 fn test_add_impl() {
diff --git a/crates/ra_assists/src/handlers/add_missing_impl_members.rs b/crates/ra_assists/src/handlers/add_missing_impl_members.rs
index e47feda71..f7a101503 100644
--- a/crates/ra_assists/src/handlers/add_missing_impl_members.rs
+++ b/crates/ra_assists/src/handlers/add_missing_impl_members.rs
@@ -181,7 +181,7 @@ fn add_body(fn_def: ast::FnDef) -> ast::FnDef {
181 181
182#[cfg(test)] 182#[cfg(test)]
183mod tests { 183mod tests {
184 use crate::helpers::{check_assist, check_assist_not_applicable}; 184 use crate::tests::{check_assist, check_assist_not_applicable};
185 185
186 use super::*; 186 use super::*;
187 187
diff --git a/crates/ra_assists/src/handlers/add_new.rs b/crates/ra_assists/src/handlers/add_new.rs
index e8a36c7de..1b5d604d1 100644
--- a/crates/ra_assists/src/handlers/add_new.rs
+++ b/crates/ra_assists/src/handlers/add_new.rs
@@ -178,7 +178,7 @@ fn has_new_fn(imp: &ast::ImplDef) -> bool {
178 178
179#[cfg(test)] 179#[cfg(test)]
180mod tests { 180mod tests {
181 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target}; 181 use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target};
182 182
183 use super::*; 183 use super::*;
184 184
diff --git a/crates/ra_assists/src/handlers/apply_demorgan.rs b/crates/ra_assists/src/handlers/apply_demorgan.rs
index 260b9e073..a0c48d872 100644
--- a/crates/ra_assists/src/handlers/apply_demorgan.rs
+++ b/crates/ra_assists/src/handlers/apply_demorgan.rs
@@ -60,7 +60,7 @@ fn opposite_logic_op(kind: ast::BinOp) -> Option<&'static str> {
60mod tests { 60mod tests {
61 use super::*; 61 use super::*;
62 62
63 use crate::helpers::{check_assist, check_assist_not_applicable}; 63 use crate::tests::{check_assist, check_assist_not_applicable};
64 64
65 #[test] 65 #[test]
66 fn demorgan_turns_and_into_or() { 66 fn demorgan_turns_and_into_or() {
diff --git a/crates/ra_assists/src/handlers/auto_import.rs b/crates/ra_assists/src/handlers/auto_import.rs
index db6c4d2fa..9e4171ccd 100644
--- a/crates/ra_assists/src/handlers/auto_import.rs
+++ b/crates/ra_assists/src/handlers/auto_import.rs
@@ -277,7 +277,7 @@ impl ImportCandidate {
277#[cfg(test)] 277#[cfg(test)]
278mod tests { 278mod tests {
279 use super::*; 279 use super::*;
280 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target}; 280 use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target};
281 281
282 #[test] 282 #[test]
283 fn applicable_when_found_an_import() { 283 fn applicable_when_found_an_import() {
diff --git a/crates/ra_assists/src/handlers/change_visibility.rs b/crates/ra_assists/src/handlers/change_visibility.rs
index 1cd532e80..6ac1f8e69 100644
--- a/crates/ra_assists/src/handlers/change_visibility.rs
+++ b/crates/ra_assists/src/handlers/change_visibility.rs
@@ -110,7 +110,7 @@ fn change_vis(ctx: AssistCtx, vis: ast::Visibility) -> Option<Assist> {
110mod tests { 110mod tests {
111 use test_utils::covers; 111 use test_utils::covers;
112 112
113 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target}; 113 use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target};
114 114
115 use super::*; 115 use super::*;
116 116
diff --git a/crates/ra_assists/src/handlers/early_return.rs b/crates/ra_assists/src/handlers/early_return.rs
index eede2fe91..55ccc37b0 100644
--- a/crates/ra_assists/src/handlers/early_return.rs
+++ b/crates/ra_assists/src/handlers/early_return.rs
@@ -182,7 +182,7 @@ pub(crate) fn convert_to_guarded_return(ctx: AssistCtx) -> Option<Assist> {
182 182
183#[cfg(test)] 183#[cfg(test)]
184mod tests { 184mod tests {
185 use crate::helpers::{check_assist, check_assist_not_applicable}; 185 use crate::tests::{check_assist, check_assist_not_applicable};
186 186
187 use super::*; 187 use super::*;
188 188
diff --git a/crates/ra_assists/src/handlers/fill_match_arms.rs b/crates/ra_assists/src/handlers/fill_match_arms.rs
index 8d1af9933..1f9cd5585 100644
--- a/crates/ra_assists/src/handlers/fill_match_arms.rs
+++ b/crates/ra_assists/src/handlers/fill_match_arms.rs
@@ -168,7 +168,7 @@ fn build_pat(db: &RootDatabase, module: hir::Module, var: hir::EnumVariant) -> O
168 168
169#[cfg(test)] 169#[cfg(test)]
170mod tests { 170mod tests {
171 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target}; 171 use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target};
172 172
173 use super::fill_match_arms; 173 use super::fill_match_arms;
174 174
diff --git a/crates/ra_assists/src/handlers/flip_binexpr.rs b/crates/ra_assists/src/handlers/flip_binexpr.rs
index 8030efb35..41db963dc 100644
--- a/crates/ra_assists/src/handlers/flip_binexpr.rs
+++ b/crates/ra_assists/src/handlers/flip_binexpr.rs
@@ -69,7 +69,7 @@ impl From<BinOp> for FlipAction {
69mod tests { 69mod tests {
70 use super::*; 70 use super::*;
71 71
72 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target}; 72 use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target};
73 73
74 #[test] 74 #[test]
75 fn flip_binexpr_target_is_the_op() { 75 fn flip_binexpr_target_is_the_op() {
diff --git a/crates/ra_assists/src/handlers/flip_comma.rs b/crates/ra_assists/src/handlers/flip_comma.rs
index 1dacf29f8..e65c9a41d 100644
--- a/crates/ra_assists/src/handlers/flip_comma.rs
+++ b/crates/ra_assists/src/handlers/flip_comma.rs
@@ -39,7 +39,7 @@ pub(crate) fn flip_comma(ctx: AssistCtx) -> Option<Assist> {
39mod tests { 39mod tests {
40 use super::*; 40 use super::*;
41 41
42 use crate::helpers::{check_assist, check_assist_target}; 42 use crate::tests::{check_assist, check_assist_target};
43 43
44 #[test] 44 #[test]
45 fn flip_comma_works_for_function_parameters() { 45 fn flip_comma_works_for_function_parameters() {
diff --git a/crates/ra_assists/src/handlers/flip_trait_bound.rs b/crates/ra_assists/src/handlers/flip_trait_bound.rs
index f56769624..f186da585 100644
--- a/crates/ra_assists/src/handlers/flip_trait_bound.rs
+++ b/crates/ra_assists/src/handlers/flip_trait_bound.rs
@@ -43,7 +43,7 @@ pub(crate) fn flip_trait_bound(ctx: AssistCtx) -> Option<Assist> {
43mod tests { 43mod tests {
44 use super::*; 44 use super::*;
45 45
46 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target}; 46 use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target};
47 47
48 #[test] 48 #[test]
49 fn flip_trait_bound_assist_available() { 49 fn flip_trait_bound_assist_available() {
diff --git a/crates/ra_assists/src/handlers/inline_local_variable.rs b/crates/ra_assists/src/handlers/inline_local_variable.rs
index 60ec536a7..5f3b8dfd1 100644
--- a/crates/ra_assists/src/handlers/inline_local_variable.rs
+++ b/crates/ra_assists/src/handlers/inline_local_variable.rs
@@ -125,7 +125,7 @@ pub(crate) fn inline_local_variable(ctx: AssistCtx) -> Option<Assist> {
125mod tests { 125mod tests {
126 use test_utils::covers; 126 use test_utils::covers;
127 127
128 use crate::helpers::{check_assist, check_assist_not_applicable}; 128 use crate::tests::{check_assist, check_assist_not_applicable};
129 129
130 use super::*; 130 use super::*;
131 131
diff --git a/crates/ra_assists/src/handlers/introduce_variable.rs b/crates/ra_assists/src/handlers/introduce_variable.rs
index 39c656305..9c2c20b22 100644
--- a/crates/ra_assists/src/handlers/introduce_variable.rs
+++ b/crates/ra_assists/src/handlers/introduce_variable.rs
@@ -136,7 +136,7 @@ fn anchor_stmt(expr: ast::Expr) -> Option<(SyntaxNode, bool)> {
136mod tests { 136mod tests {
137 use test_utils::covers; 137 use test_utils::covers;
138 138
139 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target}; 139 use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target};
140 140
141 use super::*; 141 use super::*;
142 142
diff --git a/crates/ra_assists/src/handlers/invert_if.rs b/crates/ra_assists/src/handlers/invert_if.rs
index 682e08512..303c1806d 100644
--- a/crates/ra_assists/src/handlers/invert_if.rs
+++ b/crates/ra_assists/src/handlers/invert_if.rs
@@ -62,7 +62,7 @@ pub(crate) fn invert_if(ctx: AssistCtx) -> Option<Assist> {
62mod tests { 62mod tests {
63 use super::*; 63 use super::*;
64 64
65 use crate::helpers::{check_assist, check_assist_not_applicable}; 65 use crate::tests::{check_assist, check_assist_not_applicable};
66 66
67 #[test] 67 #[test]
68 fn invert_if_remove_inequality() { 68 fn invert_if_remove_inequality() {
diff --git a/crates/ra_assists/src/handlers/merge_imports.rs b/crates/ra_assists/src/handlers/merge_imports.rs
index 4be1238f1..9a2083609 100644
--- a/crates/ra_assists/src/handlers/merge_imports.rs
+++ b/crates/ra_assists/src/handlers/merge_imports.rs
@@ -125,7 +125,7 @@ fn first_path(path: &ast::Path) -> ast::Path {
125 125
126#[cfg(test)] 126#[cfg(test)]
127mod tests { 127mod tests {
128 use crate::helpers::check_assist; 128 use crate::tests::check_assist;
129 129
130 use super::*; 130 use super::*;
131 131
diff --git a/crates/ra_assists/src/handlers/merge_match_arms.rs b/crates/ra_assists/src/handlers/merge_match_arms.rs
index 5a77d3dbc..9ae099b41 100644
--- a/crates/ra_assists/src/handlers/merge_match_arms.rs
+++ b/crates/ra_assists/src/handlers/merge_match_arms.rs
@@ -105,7 +105,7 @@ fn contains_placeholder(a: &ast::MatchArm) -> bool {
105 105
106#[cfg(test)] 106#[cfg(test)]
107mod tests { 107mod tests {
108 use crate::helpers::{check_assist, check_assist_not_applicable}; 108 use crate::tests::{check_assist, check_assist_not_applicable};
109 109
110 use super::*; 110 use super::*;
111 111
diff --git a/crates/ra_assists/src/handlers/move_bounds.rs b/crates/ra_assists/src/handlers/move_bounds.rs
index 0f26884dc..89956aea9 100644
--- a/crates/ra_assists/src/handlers/move_bounds.rs
+++ b/crates/ra_assists/src/handlers/move_bounds.rs
@@ -89,7 +89,7 @@ fn build_predicate(param: ast::TypeParam) -> Option<ast::WherePred> {
89mod tests { 89mod tests {
90 use super::*; 90 use super::*;
91 91
92 use crate::helpers::check_assist; 92 use crate::tests::check_assist;
93 93
94 #[test] 94 #[test]
95 fn move_bounds_to_where_clause_fn() { 95 fn move_bounds_to_where_clause_fn() {
diff --git a/crates/ra_assists/src/handlers/move_guard.rs b/crates/ra_assists/src/handlers/move_guard.rs
index b084dd9ee..f2aa7e594 100644
--- a/crates/ra_assists/src/handlers/move_guard.rs
+++ b/crates/ra_assists/src/handlers/move_guard.rs
@@ -132,7 +132,7 @@ pub(crate) fn move_arm_cond_to_match_guard(ctx: AssistCtx) -> Option<Assist> {
132mod tests { 132mod tests {
133 use super::*; 133 use super::*;
134 134
135 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target}; 135 use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target};
136 136
137 #[test] 137 #[test]
138 fn move_guard_to_arm_body_target() { 138 fn move_guard_to_arm_body_target() {
diff --git a/crates/ra_assists/src/handlers/raw_string.rs b/crates/ra_assists/src/handlers/raw_string.rs
index 567400b9c..542f7a637 100644
--- a/crates/ra_assists/src/handlers/raw_string.rs
+++ b/crates/ra_assists/src/handlers/raw_string.rs
@@ -138,7 +138,7 @@ fn count_hashes(s: &str) -> usize {
138#[cfg(test)] 138#[cfg(test)]
139mod test { 139mod test {
140 use super::*; 140 use super::*;
141 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target}; 141 use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target};
142 142
143 #[test] 143 #[test]
144 fn make_raw_string_target() { 144 fn make_raw_string_target() {
diff --git a/crates/ra_assists/src/handlers/remove_dbg.rs b/crates/ra_assists/src/handlers/remove_dbg.rs
index 4e5eb4350..ddfb21a7e 100644
--- a/crates/ra_assists/src/handlers/remove_dbg.rs
+++ b/crates/ra_assists/src/handlers/remove_dbg.rs
@@ -90,7 +90,7 @@ fn is_valid_macrocall(macro_call: &ast::MacroCall, macro_name: &str) -> Option<b
90#[cfg(test)] 90#[cfg(test)]
91mod tests { 91mod tests {
92 use super::*; 92 use super::*;
93 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target}; 93 use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target};
94 94
95 #[test] 95 #[test]
96 fn test_remove_dbg() { 96 fn test_remove_dbg() {
diff --git a/crates/ra_assists/src/handlers/reorder_fields.rs b/crates/ra_assists/src/handlers/reorder_fields.rs
index 5cbb98d73..a57e327b8 100644
--- a/crates/ra_assists/src/handlers/reorder_fields.rs
+++ b/crates/ra_assists/src/handlers/reorder_fields.rs
@@ -109,7 +109,7 @@ fn compute_fields_ranks(path: &Path, ctx: &AssistCtx) -> Option<HashMap<String,
109 109
110#[cfg(test)] 110#[cfg(test)]
111mod tests { 111mod tests {
112 use crate::helpers::{check_assist, check_assist_not_applicable}; 112 use crate::tests::{check_assist, check_assist_not_applicable};
113 113
114 use super::*; 114 use super::*;
115 115
diff --git a/crates/ra_assists/src/handlers/replace_if_let_with_match.rs b/crates/ra_assists/src/handlers/replace_if_let_with_match.rs
index 9841f6980..d0df3b84e 100644
--- a/crates/ra_assists/src/handlers/replace_if_let_with_match.rs
+++ b/crates/ra_assists/src/handlers/replace_if_let_with_match.rs
@@ -74,7 +74,7 @@ pub(crate) fn replace_if_let_with_match(ctx: AssistCtx) -> Option<Assist> {
74mod tests { 74mod tests {
75 use super::*; 75 use super::*;
76 76
77 use crate::helpers::{check_assist, check_assist_target}; 77 use crate::tests::{check_assist, check_assist_target};
78 78
79 #[test] 79 #[test]
80 fn test_replace_if_let_with_match_unwraps_simple_expressions() { 80 fn test_replace_if_let_with_match_unwraps_simple_expressions() {
diff --git a/crates/ra_assists/src/handlers/replace_let_with_if_let.rs b/crates/ra_assists/src/handlers/replace_let_with_if_let.rs
index 0cf23b754..dc4d16055 100644
--- a/crates/ra_assists/src/handlers/replace_let_with_if_let.rs
+++ b/crates/ra_assists/src/handlers/replace_let_with_if_let.rs
@@ -74,7 +74,7 @@ pub(crate) fn replace_let_with_if_let(ctx: AssistCtx) -> Option<Assist> {
74 74
75#[cfg(test)] 75#[cfg(test)]
76mod tests { 76mod tests {
77 use crate::helpers::check_assist; 77 use crate::tests::check_assist;
78 78
79 use super::*; 79 use super::*;
80 80
diff --git a/crates/ra_assists/src/handlers/replace_qualified_name_with_use.rs b/crates/ra_assists/src/handlers/replace_qualified_name_with_use.rs
index ff2463c77..624178924 100644
--- a/crates/ra_assists/src/handlers/replace_qualified_name_with_use.rs
+++ b/crates/ra_assists/src/handlers/replace_qualified_name_with_use.rs
@@ -74,7 +74,7 @@ fn collect_hir_path_segments(path: &hir::Path) -> Option<Vec<SmolStr>> {
74 74
75#[cfg(test)] 75#[cfg(test)]
76mod tests { 76mod tests {
77 use crate::helpers::{check_assist, check_assist_not_applicable}; 77 use crate::tests::{check_assist, check_assist_not_applicable};
78 78
79 use super::*; 79 use super::*;
80 80
diff --git a/crates/ra_assists/src/handlers/replace_unwrap_with_match.rs b/crates/ra_assists/src/handlers/replace_unwrap_with_match.rs
index 62d4ea522..dcb471edb 100644
--- a/crates/ra_assists/src/handlers/replace_unwrap_with_match.rs
+++ b/crates/ra_assists/src/handlers/replace_unwrap_with_match.rs
@@ -63,7 +63,7 @@ pub(crate) fn replace_unwrap_with_match(ctx: AssistCtx) -> Option<Assist> {
63#[cfg(test)] 63#[cfg(test)]
64mod tests { 64mod tests {
65 use super::*; 65 use super::*;
66 use crate::helpers::{check_assist, check_assist_target}; 66 use crate::tests::{check_assist, check_assist_target};
67 67
68 #[test] 68 #[test]
69 fn test_replace_result_unwrap_with_match() { 69 fn test_replace_result_unwrap_with_match() {
diff --git a/crates/ra_assists/src/handlers/split_import.rs b/crates/ra_assists/src/handlers/split_import.rs
index f25826796..a59f2f76f 100644
--- a/crates/ra_assists/src/handlers/split_import.rs
+++ b/crates/ra_assists/src/handlers/split_import.rs
@@ -37,7 +37,7 @@ pub(crate) fn split_import(ctx: AssistCtx) -> Option<Assist> {
37 37
38#[cfg(test)] 38#[cfg(test)]
39mod tests { 39mod tests {
40 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target}; 40 use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target};
41 41
42 use super::*; 42 use super::*;
43 43
diff --git a/crates/ra_assists/src/handlers/unwrap_block.rs b/crates/ra_assists/src/handlers/unwrap_block.rs
index 859c70ad8..89992117d 100644
--- a/crates/ra_assists/src/handlers/unwrap_block.rs
+++ b/crates/ra_assists/src/handlers/unwrap_block.rs
@@ -89,7 +89,7 @@ fn extract_expr(cursor_range: TextRange, block: ast::BlockExpr) -> Option<ast::E
89 89
90#[cfg(test)] 90#[cfg(test)]
91mod tests { 91mod tests {
92 use crate::helpers::{check_assist, check_assist_not_applicable}; 92 use crate::tests::{check_assist, check_assist_not_applicable};
93 93
94 use super::*; 94 use super::*;
95 95
diff --git a/crates/ra_assists/src/lib.rs b/crates/ra_assists/src/lib.rs
index 0f94f5ee8..b84d60c77 100644
--- a/crates/ra_assists/src/lib.rs
+++ b/crates/ra_assists/src/lib.rs
@@ -14,6 +14,8 @@ mod assist_ctx;
14mod marks; 14mod marks;
15#[cfg(test)] 15#[cfg(test)]
16mod doc_tests; 16mod doc_tests;
17#[cfg(test)]
18mod tests;
17pub mod utils; 19pub mod utils;
18pub mod ast_transform; 20pub mod ast_transform;
19 21
@@ -194,150 +196,3 @@ mod handlers {
194 ] 196 ]
195 } 197 }
196} 198}
197
198#[cfg(test)]
199mod helpers {
200 use std::sync::Arc;
201
202 use hir::Semantics;
203 use ra_db::{fixture::WithFixture, FileId, FileRange, SourceDatabaseExt};
204 use ra_ide_db::{symbol_index::SymbolsDatabase, RootDatabase};
205 use test_utils::{add_cursor, assert_eq_text, extract_range_or_offset, RangeOrOffset};
206
207 use crate::{handlers::Handler, AssistCtx, AssistFile};
208
209 pub(crate) fn with_single_file(text: &str) -> (RootDatabase, FileId) {
210 let (mut db, file_id) = RootDatabase::with_single_file(text);
211 // FIXME: ideally, this should be done by the above `RootDatabase::with_single_file`,
212 // but it looks like this might need specialization? :(
213 db.set_local_roots(Arc::new(vec![db.file_source_root(file_id)]));
214 (db, file_id)
215 }
216
217 pub(crate) fn check_assist(assist: Handler, ra_fixture_before: &str, ra_fixture_after: &str) {
218 check(assist, ra_fixture_before, ExpectedResult::After(ra_fixture_after));
219 }
220
221 // FIXME: instead of having a separate function here, maybe use
222 // `extract_ranges` and mark the target as `<target> </target>` in the
223 // fixuture?
224 pub(crate) fn check_assist_target(assist: Handler, ra_fixture: &str, target: &str) {
225 check(assist, ra_fixture, ExpectedResult::Target(target));
226 }
227
228 pub(crate) fn check_assist_not_applicable(assist: Handler, ra_fixture: &str) {
229 check(assist, ra_fixture, ExpectedResult::NotApplicable);
230 }
231
232 enum ExpectedResult<'a> {
233 NotApplicable,
234 After(&'a str),
235 Target(&'a str),
236 }
237
238 fn check(assist: Handler, before: &str, expected: ExpectedResult) {
239 let (text_without_caret, file_with_caret_id, range_or_offset, db) =
240 if before.contains("//-") {
241 let (mut db, position) = RootDatabase::with_position(before);
242 db.set_local_roots(Arc::new(vec![db.file_source_root(position.file_id)]));
243 (
244 db.file_text(position.file_id).as_ref().to_owned(),
245 position.file_id,
246 RangeOrOffset::Offset(position.offset),
247 db,
248 )
249 } else {
250 let (range_or_offset, text_without_caret) = extract_range_or_offset(before);
251 let (db, file_id) = with_single_file(&text_without_caret);
252 (text_without_caret, file_id, range_or_offset, db)
253 };
254
255 let frange = FileRange { file_id: file_with_caret_id, range: range_or_offset.into() };
256
257 let sema = Semantics::new(&db);
258 let assist_ctx = AssistCtx::new(&sema, frange, true);
259
260 match (assist(assist_ctx), expected) {
261 (Some(assist), ExpectedResult::After(after)) => {
262 let action = assist.0[0].action.clone().unwrap();
263
264 let mut actual = if let AssistFile::TargetFile(file_id) = action.file {
265 db.file_text(file_id).as_ref().to_owned()
266 } else {
267 text_without_caret
268 };
269 action.edit.apply(&mut actual);
270
271 match action.cursor_position {
272 None => {
273 if let RangeOrOffset::Offset(before_cursor_pos) = range_or_offset {
274 let off = action
275 .edit
276 .apply_to_offset(before_cursor_pos)
277 .expect("cursor position is affected by the edit");
278 actual = add_cursor(&actual, off)
279 }
280 }
281 Some(off) => actual = add_cursor(&actual, off),
282 };
283
284 assert_eq_text!(after, &actual);
285 }
286 (Some(assist), ExpectedResult::Target(target)) => {
287 let action = assist.0[0].action.clone().unwrap();
288 let range = action.target.expect("expected target on action");
289 assert_eq_text!(&text_without_caret[range], target);
290 }
291 (Some(_), ExpectedResult::NotApplicable) => panic!("assist should not be applicable!"),
292 (None, ExpectedResult::After(_)) | (None, ExpectedResult::Target(_)) => {
293 panic!("code action is not applicable")
294 }
295 (None, ExpectedResult::NotApplicable) => (),
296 };
297 }
298}
299
300#[cfg(test)]
301mod tests {
302 use ra_db::FileRange;
303 use ra_syntax::TextRange;
304 use test_utils::{extract_offset, extract_range};
305
306 use crate::{helpers, resolved_assists};
307
308 #[test]
309 fn assist_order_field_struct() {
310 let before = "struct Foo { <|>bar: u32 }";
311 let (before_cursor_pos, before) = extract_offset(before);
312 let (db, file_id) = helpers::with_single_file(&before);
313 let frange = FileRange { file_id, range: TextRange::empty(before_cursor_pos) };
314 let assists = resolved_assists(&db, frange);
315 let mut assists = assists.iter();
316
317 assert_eq!(
318 assists.next().expect("expected assist").label.label,
319 "Change visibility to pub(crate)"
320 );
321 assert_eq!(assists.next().expect("expected assist").label.label, "Add `#[derive]`");
322 }
323
324 #[test]
325 fn assist_order_if_expr() {
326 let before = "
327 pub fn test_some_range(a: int) -> bool {
328 if let 2..6 = <|>5<|> {
329 true
330 } else {
331 false
332 }
333 }";
334 let (range, before) = extract_range(before);
335 let (db, file_id) = helpers::with_single_file(&before);
336 let frange = FileRange { file_id, range };
337 let assists = resolved_assists(&db, frange);
338 let mut assists = assists.iter();
339
340 assert_eq!(assists.next().expect("expected assist").label.label, "Extract into variable");
341 assert_eq!(assists.next().expect("expected assist").label.label, "Replace with match");
342 }
343}
diff --git a/crates/ra_assists/src/tests.rs b/crates/ra_assists/src/tests.rs
new file mode 100644
index 000000000..ca3096a43
--- /dev/null
+++ b/crates/ra_assists/src/tests.rs
@@ -0,0 +1,137 @@
1use std::sync::Arc;
2
3use hir::Semantics;
4use ra_db::{fixture::WithFixture, FileId, FileRange, SourceDatabaseExt};
5use ra_ide_db::{symbol_index::SymbolsDatabase, RootDatabase};
6use ra_syntax::TextRange;
7use test_utils::{
8 add_cursor, assert_eq_text, extract_offset, extract_range, extract_range_or_offset,
9 RangeOrOffset,
10};
11
12use crate::{handlers::Handler, resolved_assists, AssistCtx, AssistFile};
13
14pub(crate) fn with_single_file(text: &str) -> (RootDatabase, FileId) {
15 let (mut db, file_id) = RootDatabase::with_single_file(text);
16 // FIXME: ideally, this should be done by the above `RootDatabase::with_single_file`,
17 // but it looks like this might need specialization? :(
18 db.set_local_roots(Arc::new(vec![db.file_source_root(file_id)]));
19 (db, file_id)
20}
21
22pub(crate) fn check_assist(assist: Handler, ra_fixture_before: &str, ra_fixture_after: &str) {
23 check(assist, ra_fixture_before, ExpectedResult::After(ra_fixture_after));
24}
25
26// FIXME: instead of having a separate function here, maybe use
27// `extract_ranges` and mark the target as `<target> </target>` in the
28// fixuture?
29pub(crate) fn check_assist_target(assist: Handler, ra_fixture: &str, target: &str) {
30 check(assist, ra_fixture, ExpectedResult::Target(target));
31}
32
33pub(crate) fn check_assist_not_applicable(assist: Handler, ra_fixture: &str) {
34 check(assist, ra_fixture, ExpectedResult::NotApplicable);
35}
36
37enum ExpectedResult<'a> {
38 NotApplicable,
39 After(&'a str),
40 Target(&'a str),
41}
42
43fn check(assist: Handler, before: &str, expected: ExpectedResult) {
44 let (text_without_caret, file_with_caret_id, range_or_offset, db) = if before.contains("//-") {
45 let (mut db, position) = RootDatabase::with_position(before);
46 db.set_local_roots(Arc::new(vec![db.file_source_root(position.file_id)]));
47 (
48 db.file_text(position.file_id).as_ref().to_owned(),
49 position.file_id,
50 RangeOrOffset::Offset(position.offset),
51 db,
52 )
53 } else {
54 let (range_or_offset, text_without_caret) = extract_range_or_offset(before);
55 let (db, file_id) = with_single_file(&text_without_caret);
56 (text_without_caret, file_id, range_or_offset, db)
57 };
58
59 let frange = FileRange { file_id: file_with_caret_id, range: range_or_offset.into() };
60
61 let sema = Semantics::new(&db);
62 let assist_ctx = AssistCtx::new(&sema, frange, true);
63
64 match (assist(assist_ctx), expected) {
65 (Some(assist), ExpectedResult::After(after)) => {
66 let action = assist.0[0].action.clone().unwrap();
67
68 let mut actual = if let AssistFile::TargetFile(file_id) = action.file {
69 db.file_text(file_id).as_ref().to_owned()
70 } else {
71 text_without_caret
72 };
73 action.edit.apply(&mut actual);
74
75 match action.cursor_position {
76 None => {
77 if let RangeOrOffset::Offset(before_cursor_pos) = range_or_offset {
78 let off = action
79 .edit
80 .apply_to_offset(before_cursor_pos)
81 .expect("cursor position is affected by the edit");
82 actual = add_cursor(&actual, off)
83 }
84 }
85 Some(off) => actual = add_cursor(&actual, off),
86 };
87
88 assert_eq_text!(after, &actual);
89 }
90 (Some(assist), ExpectedResult::Target(target)) => {
91 let action = assist.0[0].action.clone().unwrap();
92 let range = action.target.expect("expected target on action");
93 assert_eq_text!(&text_without_caret[range], target);
94 }
95 (Some(_), ExpectedResult::NotApplicable) => panic!("assist should not be applicable!"),
96 (None, ExpectedResult::After(_)) | (None, ExpectedResult::Target(_)) => {
97 panic!("code action is not applicable")
98 }
99 (None, ExpectedResult::NotApplicable) => (),
100 };
101}
102
103#[test]
104fn assist_order_field_struct() {
105 let before = "struct Foo { <|>bar: u32 }";
106 let (before_cursor_pos, before) = extract_offset(before);
107 let (db, file_id) = with_single_file(&before);
108 let frange = FileRange { file_id, range: TextRange::empty(before_cursor_pos) };
109 let assists = resolved_assists(&db, frange);
110 let mut assists = assists.iter();
111
112 assert_eq!(
113 assists.next().expect("expected assist").label.label,
114 "Change visibility to pub(crate)"
115 );
116 assert_eq!(assists.next().expect("expected assist").label.label, "Add `#[derive]`");
117}
118
119#[test]
120fn assist_order_if_expr() {
121 let before = "
122 pub fn test_some_range(a: int) -> bool {
123 if let 2..6 = <|>5<|> {
124 true
125 } else {
126 false
127 }
128 }";
129 let (range, before) = extract_range(before);
130 let (db, file_id) = with_single_file(&before);
131 let frange = FileRange { file_id, range };
132 let assists = resolved_assists(&db, frange);
133 let mut assists = assists.iter();
134
135 assert_eq!(assists.next().expect("expected assist").label.label, "Extract into variable");
136 assert_eq!(assists.next().expect("expected assist").label.label, "Replace with match");
137}