Show compilation progress in test explorer

This commit is contained in:
hkalbasi
2024-03-15 16:28:59 +03:30
parent 9029c51ae4
commit eeff20d172
6 changed files with 32 additions and 5 deletions
+5 -4
View File
@@ -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> {
+7
View File
@@ -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 {
+3
View File
@@ -799,6 +799,9 @@ fn handle_cargo_test_msg(&mut self, message: flycheck::CargoTestMessage) {
self.send_notification::<lsp_ext::EndRunTest>(());
self.test_run_session = None;
}
flycheck::CargoTestMessage::Custom { text } => {
self.send_notification::<lsp_ext::AppendOutputToRunTest>(text);
}
}
}
+8 -1
View File
@@ -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.
+3
View File
@@ -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",
);
+6
View File
@@ -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)!;