Skip to content

Commit

Permalink
Auto merge of #16845 - HKalbasi:test-explorer, r=HKalbasi
Browse files Browse the repository at this point in the history
Show compilation progress in test explorer

Fix part of #16827
  • Loading branch information
bors committed Mar 15, 2024
2 parents d763e05 + eeff20d commit f9a4d05
Showing 6 changed files with 32 additions and 5 deletions.
9 changes: 5 additions & 4 deletions crates/flycheck/src/test_runner.rs
Original file line number Diff line number Diff line change
@@ -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 changes: 7 additions & 0 deletions crates/rust-analyzer/src/lsp/ext.rs
Original file line number Diff line number Diff line change
@@ -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 changes: 3 additions & 0 deletions crates/rust-analyzer/src/main_loop.rs
Original file line number Diff line number Diff line change
@@ -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);
}
}
}

9 changes: 8 additions & 1 deletion docs/dev/lsp-extensions.md
Original file line number Diff line number Diff line change
@@ -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 changes: 3 additions & 0 deletions editors/code/src/lsp_ext.ts
Original file line number Diff line number Diff line change
@@ -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 changes: 6 additions & 0 deletions editors/code/src/test_explorer.ts
Original file line number Diff line number Diff line change
@@ -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)!;

0 comments on commit f9a4d05

Please sign in to comment.