From f332d72f1653ec03b64a80d8d4949dce5564cc99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Tue, 12 Oct 2021 00:02:33 +0200 Subject: fix(lsp): lint diagnostics respect config file (#12338) This commit fixes problem with LSP where diagnostics coming from "deno lint" don't respect configuration file. LSP was changed to store "Option", "Option" and "Option" on "Inner"; as well as storing "Option" and "Option" on "StateSnapshot". Co-authored-by: Kitson Kelly --- cli/tests/integration/lsp_tests.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'cli/tests/integration') diff --git a/cli/tests/integration/lsp_tests.rs b/cli/tests/integration/lsp_tests.rs index 215ba1a24..3126eb31c 100644 --- a/cli/tests/integration/lsp_tests.rs +++ b/cli/tests/integration/lsp_tests.rs @@ -3560,3 +3560,39 @@ console.log(snake_case); ); shutdown(&mut client); } + +#[test] +fn lsp_lint_with_config() { + let temp_dir = TempDir::new().expect("could not create temp dir"); + let mut params: lsp::InitializeParams = + serde_json::from_value(load_fixture("initialize_params.json")).unwrap(); + let deno_lint_jsonc = + serde_json::to_vec_pretty(&load_fixture("deno.lint.jsonc")).unwrap(); + fs::write(temp_dir.path().join("deno.lint.jsonc"), deno_lint_jsonc).unwrap(); + + params.root_uri = Some(Url::from_file_path(temp_dir.path()).unwrap()); + if let Some(Value::Object(mut map)) = params.initialization_options { + map.insert("config".to_string(), json!("./deno.lint.jsonc")); + params.initialization_options = Some(Value::Object(map)); + } + + let deno_exe = deno_exe_path(); + let mut client = LspClient::new(&deno_exe).unwrap(); + client + .write_request::<_, _, Value>("initialize", params) + .unwrap(); + + let diagnostics = did_open(&mut client, load_fixture("did_open_lint.json")); + let diagnostics = diagnostics + .into_iter() + .flat_map(|x| x.diagnostics) + .collect::>(); + assert_eq!(diagnostics.len(), 3); + for diagnostic in diagnostics { + assert_eq!( + diagnostic.code, + Some(lsp::NumberOrString::String("ban-untagged-todo".to_string())) + ); + } + shutdown(&mut client); +} -- cgit v1.2.3