mirror of
https://github.com/kbwo/testing-language-server.git
synced 2025-07-24 11:23:42 +00:00
parent
d2f262056a
commit
607f43aa39
3 changed files with 137 additions and 32 deletions
|
@ -1,7 +1,10 @@
|
|||
use crate::model::AvailableTestKind;
|
||||
use crate::model::Runner;
|
||||
use clap::Parser;
|
||||
use std::io;
|
||||
use std::io::Write;
|
||||
use std::str::FromStr;
|
||||
use testing_language_server::error::LSError;
|
||||
use testing_language_server::spec::AdapterCommands;
|
||||
use testing_language_server::spec::DetectWorkspaceRootArgs;
|
||||
use testing_language_server::spec::DiscoverArgs;
|
||||
|
@ -24,25 +27,32 @@ fn pick_test_from_extra(
|
|||
Ok((extra, AvailableTestKind::from_str(&language)?))
|
||||
}
|
||||
|
||||
fn handle(commands: AdapterCommands) -> Result<(), LSError> {
|
||||
match commands {
|
||||
AdapterCommands::Discover(mut commands) => {
|
||||
let (extra, test_kind) = pick_test_from_extra(&mut commands.extra).unwrap();
|
||||
test_kind.disover(DiscoverArgs { extra, ..commands })?;
|
||||
Ok(())
|
||||
}
|
||||
AdapterCommands::RunFileTest(mut commands) => {
|
||||
let (extra, test_kind) = pick_test_from_extra(&mut commands.extra)?;
|
||||
test_kind.run_file_test(RunFileTestArgs { extra, ..commands })?;
|
||||
Ok(())
|
||||
}
|
||||
AdapterCommands::DetectWorkspaceRoot(mut commands) => {
|
||||
let (extra, test_kind) = pick_test_from_extra(&mut commands.extra)?;
|
||||
test_kind.detect_workspaces_root(DetectWorkspaceRootArgs { extra, ..commands })?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let args = AdapterCommands::parse();
|
||||
match args {
|
||||
AdapterCommands::Discover(mut args) => {
|
||||
let (extra, test_kind) = pick_test_from_extra(&mut args.extra).unwrap();
|
||||
test_kind.disover(DiscoverArgs { extra, ..args }).unwrap();
|
||||
}
|
||||
AdapterCommands::RunFileTest(mut args) => {
|
||||
let (extra, test_kind) = pick_test_from_extra(&mut args.extra).unwrap();
|
||||
test_kind
|
||||
.run_file_test(RunFileTestArgs { extra, ..args })
|
||||
.unwrap();
|
||||
}
|
||||
AdapterCommands::DetectWorkspaceRoot(mut args) => {
|
||||
let (extra, test_kind) = pick_test_from_extra(&mut args.extra).unwrap();
|
||||
test_kind
|
||||
.detect_workspaces_root(DetectWorkspaceRootArgs { extra, ..args })
|
||||
.unwrap();
|
||||
}
|
||||
if let Err(error) = handle(args) {
|
||||
io::stderr()
|
||||
.write_all(format!("{:#?}", error).as_bytes())
|
||||
.unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
use std::collections::HashMap;
|
||||
use std::path::PathBuf;
|
||||
use std::process::Output;
|
||||
use std::str::FromStr;
|
||||
use testing_language_server::error::LSError;
|
||||
use testing_language_server::spec::DetectWorkspaceRootResult;
|
||||
|
@ -248,7 +249,11 @@ impl Runner for CargoTestRunner {
|
|||
.args(args.extra)
|
||||
.output()
|
||||
.unwrap();
|
||||
let test_result = String::from_utf8(test_result.stdout)?;
|
||||
let Output { stdout, stderr, .. } = test_result;
|
||||
if !stderr.is_empty() {
|
||||
return Err(LSError::Adapter(String::from_utf8(stderr).unwrap()));
|
||||
}
|
||||
let test_result = String::from_utf8(stdout)?;
|
||||
let diagnostics: RunFileTestResult = parse_diagnostics(
|
||||
&test_result,
|
||||
PathBuf::from_str(&workspace_root).unwrap(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue