diff options
Diffstat (limited to 'crates')
-rw-r--r-- | crates/ra_lsp_server/tests/heavy_tests/main.rs | 61 |
1 files changed, 60 insertions, 1 deletions
diff --git a/crates/ra_lsp_server/tests/heavy_tests/main.rs b/crates/ra_lsp_server/tests/heavy_tests/main.rs index 63d53fb01..26f5e3f20 100644 --- a/crates/ra_lsp_server/tests/heavy_tests/main.rs +++ b/crates/ra_lsp_server/tests/heavy_tests/main.rs | |||
@@ -2,7 +2,9 @@ mod support; | |||
2 | 2 | ||
3 | use serde_json::json; | 3 | use serde_json::json; |
4 | 4 | ||
5 | use ra_lsp_server::req::{Runnables, RunnablesParams}; | 5 | use ra_lsp_server::req::{Runnables, RunnablesParams, CodeActionRequest, CodeActionParams}; |
6 | |||
7 | use languageserver_types::{Position, Range, CodeActionContext}; | ||
6 | 8 | ||
7 | use crate::support::project; | 9 | use crate::support::project; |
8 | 10 | ||
@@ -116,3 +118,60 @@ fn test_eggs() {} | |||
116 | ]) | 118 | ]) |
117 | ); | 119 | ); |
118 | } | 120 | } |
121 | |||
122 | #[test] | ||
123 | fn test_missing_module_code_action() { | ||
124 | let server = project( | ||
125 | r#" | ||
126 | //- Cargo.toml | ||
127 | [package] | ||
128 | name = "foo" | ||
129 | version = "0.0.0" | ||
130 | |||
131 | //- src/lib.rs | ||
132 | mod bar; | ||
133 | |||
134 | fn main() {} | ||
135 | "#, | ||
136 | ); | ||
137 | server.wait_for_feedback("workspace loaded"); | ||
138 | let empty_context = || CodeActionContext { | ||
139 | diagnostics: Vec::new(), | ||
140 | only: None, | ||
141 | }; | ||
142 | server.request::<CodeActionRequest>( | ||
143 | CodeActionParams { | ||
144 | text_document: server.doc_id("src/lib.rs"), | ||
145 | range: Range::new(Position::new(0, 0), Position::new(0, 7)), | ||
146 | context: empty_context(), | ||
147 | }, | ||
148 | json!([ | ||
149 | { | ||
150 | "arguments": [ | ||
151 | { | ||
152 | "cursorPosition": null, | ||
153 | "fileSystemEdits": [ | ||
154 | { | ||
155 | "type": "createFile", | ||
156 | "uri": "file:///[..]/src/bar.rs" | ||
157 | } | ||
158 | ], | ||
159 | "label": "create module", | ||
160 | "sourceFileEdits": [] | ||
161 | } | ||
162 | ], | ||
163 | "command": "ra-lsp.applySourceChange", | ||
164 | "title": "create module" | ||
165 | } | ||
166 | ]), | ||
167 | ); | ||
168 | |||
169 | server.request::<CodeActionRequest>( | ||
170 | CodeActionParams { | ||
171 | text_document: server.doc_id("src/lib.rs"), | ||
172 | range: Range::new(Position::new(2, 0), Position::new(2, 7)), | ||
173 | context: empty_context(), | ||
174 | }, | ||
175 | json!([]), | ||
176 | ); | ||
177 | } | ||