()
| 143 | |
| 144 | #[test] |
| 145 | fn smoke_test() { |
| 146 | let stderr_log = fmt::layer().with_writer(io::stderr).with_filter(LevelFilter::TRACE); |
| 147 | struct TestHandler { |
| 148 | initialized: AtomicBool, |
| 149 | } |
| 150 | impl Handler for TestHandler { |
| 151 | fn initialized(&self) -> bool { |
| 152 | self.initialized.load(Ordering::SeqCst) |
| 153 | } |
| 154 | fn initialize(&self, _req: InitializeParams) -> Result<InitializeResult, ErrorCode> { |
| 155 | self.initialized.swap(true, Ordering::SeqCst); |
| 156 | Ok(InitializeResult { ..Default::default() }) |
| 157 | } |
| 158 | } |
| 159 | |
| 160 | let server = Server::new(TestHandler { initialized: AtomicBool::new(false) }); |
| 161 | registry().with(stderr_log).with(server.tracer()).init(); |
| 162 | let (sender, receiver) = server.raw_channels(); |
| 163 | sender |
| 164 | .send(Message::Request(Request { |
| 165 | id: 1.into(), |
| 166 | method: Initialize::METHOD.into(), |
| 167 | params: to_value(InitializeParams { ..Default::default() }).unwrap(), |
| 168 | })) |
| 169 | .unwrap(); |
| 170 | assert_eq!(receiver.recv(), Ok(Message::Response(Response::Ok(1.into(), json!({"capabilities": {}}))))); |
| 171 | sender |
| 172 | .send(Message::Request(Request { |
| 173 | id: 1.into(), |
| 174 | method: GotoDeclaration::METHOD.into(), |
| 175 | params: json!({ |
| 176 | "textDocument": { |
| 177 | "uri": "foo/bar", |
| 178 | }, |
| 179 | "position": { |
| 180 | "line": 1, |
| 181 | "character": 1 |
| 182 | } |
| 183 | }), |
| 184 | })) |
| 185 | .unwrap(); |
| 186 | assert_eq!( |
| 187 | receiver.recv(), |
| 188 | Ok(Message::Response(Response::Err(1.into(), ErrorCode::MethodNotFound, "".into(), Value::Null))) |
| 189 | ); |
| 190 | sender.send(Message::Notification(Notification { method: "exit".into(), params: Value::Null })).unwrap(); |
| 191 | } |
| 192 | } |
nothing calls this directly
no test coverage detected