mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-10 15:14:32 +00:00
Show compilation progress in test explorer
This commit is contained in:
parent
9029c51ae4
commit
eeff20d172
6 changed files with 32 additions and 5 deletions
|
@ -28,19 +28,20 @@ pub enum CargoTestMessage {
|
|||
},
|
||||
Suite,
|
||||
Finished,
|
||||
Custom {
|
||||
text: String,
|
||||
},
|
||||
}
|
||||
|
||||
impl ParseFromLine for CargoTestMessage {
|
||||
fn from_line(line: &str, error: &mut String) -> Option<Self> {
|
||||
fn from_line(line: &str, _: &mut String) -> Option<Self> {
|
||||
let mut deserializer = serde_json::Deserializer::from_str(line);
|
||||
deserializer.disable_recursion_limit();
|
||||
if let Ok(message) = CargoTestMessage::deserialize(&mut deserializer) {
|
||||
return Some(message);
|
||||
}
|
||||
|
||||
error.push_str(line);
|
||||
error.push('\n');
|
||||
None
|
||||
Some(CargoTestMessage::Custom { text: line.to_owned() })
|
||||
}
|
||||
|
||||
fn from_eof() -> Option<Self> {
|
||||
|
|
|
@ -234,6 +234,13 @@ impl Notification for EndRunTest {
|
|||
const METHOD: &'static str = "experimental/endRunTest";
|
||||
}
|
||||
|
||||
pub enum AppendOutputToRunTest {}
|
||||
|
||||
impl Notification for AppendOutputToRunTest {
|
||||
type Params = String;
|
||||
const METHOD: &'static str = "experimental/appendOutputToRunTest";
|
||||
}
|
||||
|
||||
pub enum AbortRunTest {}
|
||||
|
||||
impl Notification for AbortRunTest {
|
||||
|
|
|
@ -799,6 +799,9 @@ impl GlobalState {
|
|||
self.send_notification::<lsp_ext::EndRunTest>(());
|
||||
self.test_run_session = None;
|
||||
}
|
||||
flycheck::CargoTestMessage::Custom { text } => {
|
||||
self.send_notification::<lsp_ext::AppendOutputToRunTest>(text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!---
|
||||
lsp/ext.rs hash: 6bc140531b403717
|
||||
lsp/ext.rs hash: 61f485497d6e8e88
|
||||
|
||||
If you need to change the above hash to make the test pass, please check if you
|
||||
need to adjust this doc as well and ping this issue:
|
||||
|
@ -509,6 +509,13 @@ interface ChangeTestStateParams {
|
|||
}
|
||||
```
|
||||
|
||||
**Method:** `experimental/appendOutputToRunTest`
|
||||
|
||||
**Notification:** `string`
|
||||
|
||||
This notification is used for reporting messages independent of any single test and related to the run session
|
||||
in general, e.g. cargo compiling progress messages or warnings.
|
||||
|
||||
## Open External Documentation
|
||||
|
||||
This request is sent from the client to the server to obtain web and local URL(s) for documentation related to the symbol under the cursor, if available.
|
||||
|
|
|
@ -100,6 +100,9 @@ export const discoveredTests = new lc.NotificationType<DiscoverTestResults>(
|
|||
export const runTest = new lc.RequestType<RunTestParams, void, void>("experimental/runTest");
|
||||
export const abortRunTest = new lc.NotificationType0("experimental/abortRunTest");
|
||||
export const endRunTest = new lc.NotificationType0("experimental/endRunTest");
|
||||
export const appendOutputToRunTest = new lc.NotificationType<string>(
|
||||
"experimental/appendOutputToRunTest",
|
||||
);
|
||||
export const changeTestState = new lc.NotificationType<ChangeTestStateParams>(
|
||||
"experimental/changeTestState",
|
||||
);
|
||||
|
|
|
@ -141,6 +141,12 @@ export const prepareTestExplorer = (
|
|||
}),
|
||||
);
|
||||
|
||||
ctx.pushClientCleanup(
|
||||
client.onNotification(ra.appendOutputToRunTest, (output) => {
|
||||
currentTestRun!.appendOutput(`${output}\r\n`);
|
||||
}),
|
||||
);
|
||||
|
||||
ctx.pushClientCleanup(
|
||||
client.onNotification(ra.changeTestState, (results) => {
|
||||
const test = idToTestMap.get(results.testId)!;
|
||||
|
|
Loading…
Reference in a new issue