refactor(adapter): set diagnostic severity explicitly

This commit is contained in:
kbwo 2024-07-15 19:10:02 +09:00
parent 5ac623bb69
commit 4782784122
5 changed files with 16 additions and 8 deletions

View file

@ -52,6 +52,7 @@ fn handle(commands: AdapterCommands) -> Result<(), LSError> {
fn main() {
let _guard = Log::init().expect("Failed to initialize logger");
let args = AdapterCommands::parse();
tracing::info!("adapter args={:#?}", args);
if let Err(error) = handle(args) {
io::stderr()
.write_all(format!("{:#?}", error).as_bytes())

View file

@ -1,5 +1,6 @@
use crate::runner::cargo_test::CargoTestRunner;
use crate::runner::go::GoTestRunner;
use crate::runner::vitest::VitestRunner;
use std::str::FromStr;
use testing_language_server::error::LSError;
use testing_language_server::spec::DetectWorkspaceArgs;
@ -12,6 +13,7 @@ use crate::runner::jest::JestRunner;
pub enum AvailableTestKind {
CargoTest(CargoTestRunner),
Jest(JestRunner),
Vitest(VitestRunner),
GoTest(GoTestRunner),
}
impl Runner for AvailableTestKind {
@ -20,6 +22,7 @@ impl Runner for AvailableTestKind {
AvailableTestKind::CargoTest(runner) => runner.disover(args),
AvailableTestKind::Jest(runner) => runner.disover(args),
AvailableTestKind::GoTest(runner) => runner.disover(args),
AvailableTestKind::Vitest(runner) => runner.disover(args),
}
}
@ -28,6 +31,7 @@ impl Runner for AvailableTestKind {
AvailableTestKind::CargoTest(runner) => runner.run_file_test(args),
AvailableTestKind::Jest(runner) => runner.run_file_test(args),
AvailableTestKind::GoTest(runner) => runner.run_file_test(args),
AvailableTestKind::Vitest(runner) => runner.run_file_test(args),
}
}
@ -36,6 +40,7 @@ impl Runner for AvailableTestKind {
AvailableTestKind::CargoTest(runner) => runner.detect_workspaces(args),
AvailableTestKind::Jest(runner) => runner.detect_workspaces(args),
AvailableTestKind::GoTest(runner) => runner.detect_workspaces(args),
AvailableTestKind::Vitest(runner) => runner.detect_workspaces(args),
}
}
}
@ -48,6 +53,7 @@ impl FromStr for AvailableTestKind {
"cargo-test" => Ok(AvailableTestKind::CargoTest(CargoTestRunner)),
"jest" => Ok(AvailableTestKind::Jest(JestRunner)),
"go-test" => Ok(AvailableTestKind::GoTest(GoTestRunner)),
"vitest" => Ok(AvailableTestKind::Vitest(VitestRunner)),
_ => Err(anyhow::anyhow!("Unknown test kind: {}", s)),
}
}

View file

@ -1,4 +1,5 @@
use crate::runner::util::send_stdout;
use lsp_types::DiagnosticSeverity;
use std::collections::HashMap;
use std::path::PathBuf;
use std::process::Output;
@ -62,6 +63,7 @@ fn parse_diagnostics(
},
},
message,
severity: Some(DiagnosticSeverity::ERROR),
..Diagnostic::default()
};
result_map
@ -339,7 +341,7 @@ note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
let workspaces = detect_workspaces(&file_paths);
assert_eq!(workspaces.len(), 2);
assert!(workspaces.contains_key(&absolute_path_of_test_proj.to_str().unwrap().to_string()));
assert!(workspaces.contains_key(&current_dir.to_str().unwrap().to_string()));
assert!(workspaces.contains_key(absolute_path_of_test_proj.to_str().unwrap()));
assert!(workspaces.contains_key(current_dir.to_str().unwrap()));
}
}

View file

@ -2,6 +2,7 @@ use crate::model::Runner;
use crate::runner::util::send_stdout;
use anyhow::anyhow;
use lsp_types::Diagnostic;
use lsp_types::DiagnosticSeverity;
use lsp_types::Position;
use lsp_types::Range;
use regex::Regex;
@ -116,6 +117,7 @@ fn parse_diagnostics(
},
},
message: message.clone(),
severity: Some(DiagnosticSeverity::ERROR),
..Diagnostic::default()
};
let file_path = workspace_root

View file

@ -1,8 +1,8 @@
use crate::runner::util::send_stdout;
use lsp_types::Diagnostic;
use lsp_types::DiagnosticSeverity;
use lsp_types::Position;
use lsp_types::Range;
use regex::Regex;
use serde_json::Value;
use std::collections::HashMap;
use std::fs;
@ -21,16 +21,12 @@ use tree_sitter::QueryCursor;
use crate::model::Runner;
use super::util::clean_ansi;
use super::util::detect_workspaces_from_file_paths;
// If the character value is greater than the line length it defaults back to the line length.
const MAX_CHAR_LENGTH: u32 = 10000;
fn clean_ansi(input: &str) -> String {
let re = Regex::new(r"\x1B\[([0-9]{1,2}(;[0-9]{1,2})*)?[m|K]").unwrap();
re.replace_all(input, "").to_string()
}
fn parse_diagnostics(
test_result: &str,
file_paths: Vec<String>,
@ -67,6 +63,7 @@ fn parse_diagnostics(
},
},
message,
severity: Some(DiagnosticSeverity::ERROR),
..Diagnostic::default()
};
result_map