From 0f201701b90dae97f447ed6dad84e569eab3ebf8 Mon Sep 17 00:00:00 2001 From: "Victor M. Alvarez" Date: Thu, 12 Feb 2026 16:18:23 +0100 Subject: [PATCH] fix(ls): the `go to definition` feature now works properly with included files. (#559) When some YARA file was using a rule declared in an imported files, the "go to definition" feature was not working properly. Now it is able to find the definition even if it is in an external file that was included. --- ls/src/document.rs | 10 +++ ls/src/features/goto.rs | 72 ++++++++++++++-- ls/src/server.rs | 5 +- ls/src/tests/mod.rs | 86 +++++++++++++++---- .../tests/testdata/code_action.request.json | 2 +- .../tests/testdata/code_action.response.json | 2 +- .../tests/testdata/completion1.request.json | 2 +- .../tests/testdata/completion10.request.json | 2 +- .../tests/testdata/completion11.request.json | 2 +- .../tests/testdata/completion12.request.json | 2 +- .../tests/testdata/completion13.request.json | 2 +- .../tests/testdata/completion2.request.json | 2 +- .../tests/testdata/completion3.request.json | 2 +- .../tests/testdata/completion4.request.json | 2 +- .../tests/testdata/completion5.request.json | 2 +- .../tests/testdata/completion6.request.json | 2 +- .../tests/testdata/completion7.request.json | 2 +- .../tests/testdata/completion8.request.json | 2 +- .../tests/testdata/completion9.request.json | 2 +- .../tests/testdata/diagnostics1.request.json | 2 +- .../tests/testdata/diagnostics2.request.json | 2 +- .../tests/testdata/diagnostics2.response.json | 2 +- .../tests/testdata/diagnostics3.request.json | 2 +- .../tests/testdata/diagnostics3.response.json | 2 +- .../tests/testdata/diagnostics4.request.json | 2 +- .../tests/testdata/diagnostics4.response.json | 4 +- .../tests/testdata/diagnostics5.request.json | 2 +- .../tests/testdata/diagnostics5.response.json | 4 +- .../tests/testdata/diagnostics6.request.json | 2 +- .../tests/testdata/diagnostics6.response.json | 6 +- .../tests/testdata/diagnostics7.request.json | 2 +- .../tests/testdata/diagnostics7.response.json | 2 +- .../tests/testdata/diagnostics8.request.json | 2 +- .../tests/testdata/diagnostics8.response.json | 2 +- .../tests/testdata/formatting1.request.json | 2 +- ls/src/tests/testdata/goto1.request.json | 2 +- ls/src/tests/testdata/goto1.response.json | 2 +- ls/src/tests/testdata/goto2.request.json | 2 +- ls/src/tests/testdata/goto2.response.json | 2 +- ls/src/tests/testdata/goto3.request.json | 2 +- ls/src/tests/testdata/goto3.response.json | 2 +- ls/src/tests/testdata/goto4.request.json | 2 +- ls/src/tests/testdata/goto4.response.json | 2 +- ls/src/tests/testdata/goto5.request.json | 2 +- ls/src/tests/testdata/goto6.request.json | 9 ++ ls/src/tests/testdata/goto6.response.json | 13 +++ ls/src/tests/testdata/goto6.yar | 6 ++ .../tests/testdata/highlights1.request.json | 2 +- .../tests/testdata/highlights2.request.json | 2 +- .../tests/testdata/highlights3.request.json | 2 +- .../tests/testdata/highlights4.request.json | 2 +- .../tests/testdata/highlights5.request.json | 2 +- ls/src/tests/testdata/hover1.request.json | 2 +- ls/src/tests/testdata/hover2.request.json | 2 +- ls/src/tests/testdata/hover3.request.json | 2 +- ls/src/tests/testdata/hover4.request.json | 2 +- ls/src/tests/testdata/hover5.request.json | 2 +- ls/src/tests/testdata/hover6.request.json | 2 +- ls/src/tests/testdata/hover7.request.json | 2 +- .../tests/testdata/references1.request.json | 2 +- .../tests/testdata/references1.response.json | 4 +- .../tests/testdata/references2.request.json | 2 +- .../tests/testdata/references2.response.json | 8 +- .../tests/testdata/references3.request.json | 2 +- .../tests/testdata/references3.response.json | 4 +- .../tests/testdata/references4.request.json | 2 +- .../tests/testdata/references4.response.json | 6 +- .../tests/testdata/references5.request.json | 2 +- .../tests/testdata/references5.response.json | 4 +- ls/src/tests/testdata/rename1.request.json | 2 +- ls/src/tests/testdata/rename1.response.json | 2 +- ls/src/tests/testdata/rename2.request.json | 2 +- ls/src/tests/testdata/rename2.response.json | 2 +- ls/src/tests/testdata/rename3.request.json | 2 +- ls/src/tests/testdata/rename3.response.json | 2 +- ls/src/tests/testdata/rename4.request.json | 2 +- ls/src/tests/testdata/rename4.response.json | 2 +- ls/src/tests/testdata/rename5.request.json | 2 +- .../testdata/selectionrange1.request.json | 2 +- .../testdata/selectionrange2.request.json | 2 +- .../testdata/selectionrange3.request.json | 2 +- .../testdata/selectionrange4.request.json | 2 +- .../testdata/selectionrange5.request.json | 2 +- .../testdata/selectionrange6.request.json | 2 +- .../testdata/selectionrange7.request.json | 2 +- .../testdata/semantic_tokens1.request.json | 2 +- .../testdata/semantic_tokens2.request.json | 2 +- .../semantic_tokens_range.request.json | 2 +- ls/src/tests/testdata/symbols1.request.json | 2 +- ls/src/tests/testdata/symbols2.request.json | 2 +- ls/src/tests/testdata/symbols3.request.json | 2 +- ls/src/tests/testdata/symbols4.request.json | 2 +- ls/src/tests/testdata/symbols5.request.json | 2 +- ls/src/tests/testdata/symbols6.request.json | 2 +- ls/src/tests/testdata/symbols7.request.json | 2 +- 95 files changed, 276 insertions(+), 125 deletions(-) create mode 100644 ls/src/tests/testdata/goto6.request.json create mode 100644 ls/src/tests/testdata/goto6.response.json create mode 100644 ls/src/tests/testdata/goto6.yar diff --git a/ls/src/document.rs b/ls/src/document.rs index 0b7194e95..7092737c3 100644 --- a/ls/src/document.rs +++ b/ls/src/document.rs @@ -1,3 +1,6 @@ +use std::fs; +use std::io::Error; + use async_lsp::lsp_types::Url; use yara_x_parser::cst::CST; @@ -23,4 +26,11 @@ impl Document { let line_index = LineIndex::new(text.as_str()); Self { uri, text, cst, line_index } } + + /// Reads a document from a uri. + pub fn read(uri: Url) -> Result { + let path = + uri.to_file_path().map_err(|_| Error::other("invalid path"))?; + Ok(Self::new(uri, fs::read_to_string(path)?)) + } } diff --git a/ls/src/features/goto.rs b/ls/src/features/goto.rs index 5f6792bf5..cd87f6828 100644 --- a/ls/src/features/goto.rs +++ b/ls/src/features/goto.rs @@ -1,4 +1,6 @@ -use async_lsp::lsp_types::{Position, Range}; +use std::path::PathBuf; + +use async_lsp::lsp_types::{Location, Position, Url}; use yara_x_parser::cst::SyntaxKind; use crate::document::Document; @@ -10,7 +12,10 @@ use crate::utils::position::node_to_range; /// Given a position that points some identifier, returns the range /// of source code that contains the definition of that identifier. -pub fn go_to_definition(document: &Document, pos: Position) -> Option { +pub fn go_to_definition( + document: &Document, + pos: Position, +) -> Option { let token = ident_at_position(&document.cst, pos)?; #[allow(irrefutable_let_patterns)] @@ -23,13 +28,66 @@ pub fn go_to_definition(document: &Document, pos: Position) -> Option { | SyntaxKind::PATTERN_LENGTH => { let rule = rule_containing_token(&token)?; let pattern = pattern_from_ident(&rule, token.text())?; - node_to_range(&pattern) + let range = node_to_range(&pattern)?; + Some(Location { uri: document.uri.clone(), range }) } // Rule identifiers - SyntaxKind::IDENT => { - let rule = rule_from_ident(&document.cst, token.text())?; - node_to_range(&rule) - } + SyntaxKind::IDENT => go_to_rule_definition(document, token.text()), _ => None, } } + +fn go_to_rule_definition( + document: &Document, + ident: &str, +) -> Option { + // Check if the rule is defined in the current document + if let Some(rule) = rule_from_ident(&document.cst, ident) { + return Some(Location { + uri: document.uri.clone(), + range: node_to_range(&rule)?, + }); + } + + // If the rule is not declared in the current document, we need to look + // into any included document. + let included_paths = document + .cst + .root() + .children() + .filter(|node| node.kind() == SyntaxKind::INCLUDE_STMT) + .filter_map(|include_stmt| { + include_stmt + .children_with_tokens() + .find(|t| t.kind() == SyntaxKind::STRING_LIT) + .and_then(|n| n.into_token()) + }); + + let document_path = document.uri.to_file_path().unwrap(); + let document_dir = document_path.parent().unwrap(); + + for included_path in included_paths { + let included_path = included_path.text(); + + // Remove the quotes surrounding the included path. + let included_path = + PathBuf::from(&included_path[1..included_path.len() - 1]); + + // If the included path is already absolute, use it as is, + // join it to the current document directory if otherwise. + let abs_included_path = if included_path.is_absolute() { + included_path + } else { + document_dir.join(included_path) + }; + + let uri = Url::from_file_path(abs_included_path).ok()?; + let document = Document::read(uri).ok()?; + + if let Some(location) = go_to_rule_definition(&document, ident) { + return Some(location); + } + } + + None +} diff --git a/ls/src/server.rs b/ls/src/server.rs index b63ed2f12..fbf6afc58 100644 --- a/ls/src/server.rs +++ b/ls/src/server.rs @@ -224,9 +224,8 @@ impl LanguageServer for YARALanguageServer { None => return Box::pin(async { Ok(None) }), }; - let definition = go_to_definition(document, position).map(|range| { - GotoDefinitionResponse::Scalar(Location { uri, range }) - }); + let definition = go_to_definition(document, position) + .map(GotoDefinitionResponse::Scalar); Box::pin(async move { Ok(definition) }) } diff --git a/ls/src/tests/mod.rs b/ls/src/tests/mod.rs index 26eeb3918..d9249e06b 100644 --- a/ls/src/tests/mod.rs +++ b/ls/src/tests/mod.rs @@ -1,6 +1,5 @@ use std::fmt::Debug; use std::fs; -use std::fs::File; use std::future::Future; use std::path::{Path, PathBuf}; @@ -19,12 +18,13 @@ use async_lsp::lsp_types::{ ClientCapabilities, DiagnosticClientCapabilities, DidCloseTextDocumentParams, DidOpenTextDocumentParams, InitializeParams, InitializedParams, TextDocumentClientCapabilities, TextDocumentIdentifier, - TextDocumentItem, Url, + TextDocumentItem, Url, WorkspaceFolder, }; use async_lsp::router::Router; use async_lsp::server::LifecycleLayer; use async_lsp::{LanguageServer, ServerSocket}; use futures::AsyncReadExt; +use serde_json::Value; use tokio_util::compat::TokioAsyncReadCompatExt; use tower::ServiceBuilder; @@ -59,9 +59,18 @@ where _ = server.run_buffered(server_rx, server_tx) => {} _ = client.run_buffered(client_rx, client_tx) => {} _ = async { + let root_path = PathBuf::from("src/tests/testdata"); + let root_uri = Url::from_file_path( + root_path.canonicalize().unwrap() + ).unwrap(); + // Send request to initialize the server. server_socket .initialize(InitializeParams{ + workspace_folders: Some(vec![WorkspaceFolder{ + uri: root_uri, + name: "testdata".to_string(), + }]), capabilities: ClientCapabilities { text_document: Some(TextDocumentClientCapabilities { diagnostic: Some(DiagnosticClientCapabilities { @@ -90,13 +99,12 @@ where async fn open_document>(s: &ServerSocket, path: P) { let path = path.as_ref(); - let filename = path.file_name().unwrap().to_str().unwrap(); let rule = fs::read_to_string(path) .unwrap_or_else(|_| panic!("failed to read file {path:?}")); s.notify::(DidOpenTextDocumentParams { text_document: TextDocumentItem { - uri: Url::parse(format!("file:///{filename}").as_str()).unwrap(), + uri: Url::from_file_path(path).unwrap(), language_id: "yara".to_string(), version: 1, text: rule, @@ -107,11 +115,10 @@ async fn open_document>(s: &ServerSocket, path: P) { async fn close_document>(s: &ServerSocket, path: P) { let path = path.as_ref(); - let filename = path.file_name().unwrap().to_str().unwrap(); s.notify::(DidCloseTextDocumentParams { text_document: TextDocumentIdentifier { - uri: Url::parse(format!("file:///{filename}").as_str()).unwrap(), + uri: Url::from_file_path(path).unwrap(), }, }) .expect("DidOpenTextDocument notification failed"); @@ -122,35 +129,83 @@ where R::Result: serde::Serialize + serde::de::DeserializeOwned + Debug, { let path = PathBuf::from("src/tests/testdata").join(path); + let abs_path = path.canonicalize().unwrap(); + let test_dir = Url::from_file_path(abs_path.parent().unwrap()).unwrap(); lsp_test(async |server_socket| { - open_document(&server_socket, path.as_path()).await; + open_document(&server_socket, &abs_path).await; let mut mint = goldenfile::Mint::new("."); let request_path = path.with_extension("request.json"); - let request_file = File::open(request_path.as_path()) - .unwrap_or_else(|_| panic!("can't read {request_path:?}")); + let request_str = fs::read_to_string(request_path.as_path()) + .unwrap_or_else(|_| panic!("can't read {request_path:?}")) + .replace("${test_dir}", test_dir.as_str()); + + let request = serde_json::from_str::(&request_str) + .unwrap_or_else(|_| { + panic!("failed to parse request: {}", request_str) + }); let response_path = path.with_extension("response.json"); let response_file = mint .new_goldenfile(response_path.as_path()) .unwrap_or_else(|_| panic!("can't read {request_path:?}")); - let request = - serde_json::from_reader::<_, R::Params>(request_file).unwrap(); + let actual_response = match server_socket.request::(request).await { + Ok(response) => response, + Err(err) => { + panic!("request failed: {:?}", err) + } + }; - let actual_response = - server_socket.request::(request).await.unwrap(); + close_document(&server_socket, &abs_path).await; - close_document(&server_socket, path.as_path()).await; + let mut response_json = serde_json::to_value(actual_response).unwrap(); - serde_json::to_writer_pretty(response_file, &actual_response).unwrap(); + replace_in_json(&mut response_json, test_dir.as_str(), "${test_dir}"); + serde_json::to_writer_pretty(response_file, &response_json).unwrap(); server_socket }) .await; } +/// Replaces all occurrences of `from` with `to` in a JSON value. +/// +/// This function recursively traverses the JSON value and performs the +/// replacement in string values and in object keys. +fn replace_in_json(value: &mut Value, from: &str, to: &str) { + match value { + Value::Object(map) => { + let keys_to_modify: Vec<(String, String)> = map + .keys() + .filter(|k| k.contains(from)) + .map(|k| (k.clone(), k.replace(from, to))) + .collect(); + + for (old_key, new_key) in keys_to_modify { + if let Some(mut val) = map.remove(&old_key) { + replace_in_json(&mut val, from, to); + map.insert(new_key, val); + } + } + + for (_, val) in map.iter_mut() { + replace_in_json(val, from, to); + } + } + Value::Array(arr) => { + for v in arr { + replace_in_json(v, from, to); + } + } + Value::String(s) => { + *s = s.replace(from, to); + } + _ => {} + } +} + #[tokio::test] async fn selection_range() { test_lsp_request::<_, SelectionRangeRequest>("selectionrange1.yar").await; @@ -187,6 +242,7 @@ async fn goto_definition() { test_lsp_request::<_, GotoDefinition>("goto3.yar").await; test_lsp_request::<_, GotoDefinition>("goto4.yar").await; test_lsp_request::<_, GotoDefinition>("goto5.yar").await; + test_lsp_request::<_, GotoDefinition>("goto6.yar").await; } #[tokio::test] diff --git a/ls/src/tests/testdata/code_action.request.json b/ls/src/tests/testdata/code_action.request.json index f744af782..147bfc325 100644 --- a/ls/src/tests/testdata/code_action.request.json +++ b/ls/src/tests/testdata/code_action.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///code_action.yar" + "uri": "${test_dir}/code_action.yar" }, "range": { "start": { diff --git a/ls/src/tests/testdata/code_action.response.json b/ls/src/tests/testdata/code_action.response.json index ba8458848..240e0f0ae 100644 --- a/ls/src/tests/testdata/code_action.response.json +++ b/ls/src/tests/testdata/code_action.response.json @@ -4,7 +4,7 @@ "kind": "quickfix", "edit": { "changes": { - "file:///code_action.yar": [ + "${test_dir}/code_action.yar": [ { "range": { "start": { diff --git a/ls/src/tests/testdata/completion1.request.json b/ls/src/tests/testdata/completion1.request.json index f25d788eb..71efcce3f 100644 --- a/ls/src/tests/testdata/completion1.request.json +++ b/ls/src/tests/testdata/completion1.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///completion1.yar" + "uri": "${test_dir}/completion1.yar" }, "position": { "line": 0, diff --git a/ls/src/tests/testdata/completion10.request.json b/ls/src/tests/testdata/completion10.request.json index 4cc811714..db8642b6b 100644 --- a/ls/src/tests/testdata/completion10.request.json +++ b/ls/src/tests/testdata/completion10.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///completion10.yar" + "uri": "${test_dir}/completion10.yar" }, "position": { "line": 0, diff --git a/ls/src/tests/testdata/completion11.request.json b/ls/src/tests/testdata/completion11.request.json index ae5253f33..409c9e8d0 100644 --- a/ls/src/tests/testdata/completion11.request.json +++ b/ls/src/tests/testdata/completion11.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///completion11.yar" + "uri": "${test_dir}/completion11.yar" }, "position": { "line": 0, diff --git a/ls/src/tests/testdata/completion12.request.json b/ls/src/tests/testdata/completion12.request.json index 5377e8c19..baec75f9e 100644 --- a/ls/src/tests/testdata/completion12.request.json +++ b/ls/src/tests/testdata/completion12.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///completion12.yar" + "uri": "${test_dir}/completion12.yar" }, "position": { "line": 2, diff --git a/ls/src/tests/testdata/completion13.request.json b/ls/src/tests/testdata/completion13.request.json index b3f14a967..7bce72737 100644 --- a/ls/src/tests/testdata/completion13.request.json +++ b/ls/src/tests/testdata/completion13.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///completion13.yar" + "uri": "${test_dir}/completion13.yar" }, "position": { "line": 3, diff --git a/ls/src/tests/testdata/completion2.request.json b/ls/src/tests/testdata/completion2.request.json index f4f7629a0..e98431aca 100644 --- a/ls/src/tests/testdata/completion2.request.json +++ b/ls/src/tests/testdata/completion2.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///completion2.yar" + "uri": "${test_dir}/completion2.yar" }, "position": { "line": 2, diff --git a/ls/src/tests/testdata/completion3.request.json b/ls/src/tests/testdata/completion3.request.json index aa088f1f9..ab701061f 100644 --- a/ls/src/tests/testdata/completion3.request.json +++ b/ls/src/tests/testdata/completion3.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///completion3.yar" + "uri": "${test_dir}/completion3.yar" }, "position": { "line": 4, diff --git a/ls/src/tests/testdata/completion4.request.json b/ls/src/tests/testdata/completion4.request.json index 60be64a9a..8ae86e6f8 100644 --- a/ls/src/tests/testdata/completion4.request.json +++ b/ls/src/tests/testdata/completion4.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///completion4.yar" + "uri": "${test_dir}/completion4.yar" }, "position": { "line": 2, diff --git a/ls/src/tests/testdata/completion5.request.json b/ls/src/tests/testdata/completion5.request.json index 6b0c4e7b5..670174092 100644 --- a/ls/src/tests/testdata/completion5.request.json +++ b/ls/src/tests/testdata/completion5.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///completion5.yar" + "uri": "${test_dir}/completion5.yar" }, "position": { "line": 2, diff --git a/ls/src/tests/testdata/completion6.request.json b/ls/src/tests/testdata/completion6.request.json index 3863568a6..c1fdbb1bb 100644 --- a/ls/src/tests/testdata/completion6.request.json +++ b/ls/src/tests/testdata/completion6.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///completion6.yar" + "uri": "${test_dir}/completion6.yar" }, "position": { "line": 1, diff --git a/ls/src/tests/testdata/completion7.request.json b/ls/src/tests/testdata/completion7.request.json index c6f1b59d8..07c526529 100644 --- a/ls/src/tests/testdata/completion7.request.json +++ b/ls/src/tests/testdata/completion7.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///completion7.yar" + "uri": "${test_dir}/completion7.yar" }, "position": { "line": 8, diff --git a/ls/src/tests/testdata/completion8.request.json b/ls/src/tests/testdata/completion8.request.json index 2a9d35a36..f7f740cbf 100644 --- a/ls/src/tests/testdata/completion8.request.json +++ b/ls/src/tests/testdata/completion8.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///completion8.yar" + "uri": "${test_dir}/completion8.yar" }, "position": { "line": 1, diff --git a/ls/src/tests/testdata/completion9.request.json b/ls/src/tests/testdata/completion9.request.json index 57c0a92b0..8b0e1365b 100644 --- a/ls/src/tests/testdata/completion9.request.json +++ b/ls/src/tests/testdata/completion9.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///completion9.yar" + "uri": "${test_dir}/completion9.yar" }, "position": { "line": 4, diff --git a/ls/src/tests/testdata/diagnostics1.request.json b/ls/src/tests/testdata/diagnostics1.request.json index 3fac37225..705e5c54f 100644 --- a/ls/src/tests/testdata/diagnostics1.request.json +++ b/ls/src/tests/testdata/diagnostics1.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///diagnostics1.yar" + "uri": "${test_dir}/diagnostics1.yar" } } diff --git a/ls/src/tests/testdata/diagnostics2.request.json b/ls/src/tests/testdata/diagnostics2.request.json index 74796e251..5f6a61272 100644 --- a/ls/src/tests/testdata/diagnostics2.request.json +++ b/ls/src/tests/testdata/diagnostics2.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///diagnostics2.yar" + "uri": "${test_dir}/diagnostics2.yar" } } diff --git a/ls/src/tests/testdata/diagnostics2.response.json b/ls/src/tests/testdata/diagnostics2.response.json index 0a00ec744..8d8ccd4cf 100644 --- a/ls/src/tests/testdata/diagnostics2.response.json +++ b/ls/src/tests/testdata/diagnostics2.response.json @@ -18,7 +18,7 @@ "relatedInformation": [ { "location": { - "uri": "file:///diagnostics2.yar", + "uri": "${test_dir}/diagnostics2.yar", "range": { "start": { "line": 0, diff --git a/ls/src/tests/testdata/diagnostics3.request.json b/ls/src/tests/testdata/diagnostics3.request.json index 286398175..613770e0e 100644 --- a/ls/src/tests/testdata/diagnostics3.request.json +++ b/ls/src/tests/testdata/diagnostics3.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///diagnostics3.yar" + "uri": "${test_dir}/diagnostics3.yar" } } diff --git a/ls/src/tests/testdata/diagnostics3.response.json b/ls/src/tests/testdata/diagnostics3.response.json index 7916dfbfd..9067f80ca 100644 --- a/ls/src/tests/testdata/diagnostics3.response.json +++ b/ls/src/tests/testdata/diagnostics3.response.json @@ -18,7 +18,7 @@ "relatedInformation": [ { "location": { - "uri": "file:///diagnostics3.yar", + "uri": "${test_dir}/diagnostics3.yar", "range": { "start": { "line": 4, diff --git a/ls/src/tests/testdata/diagnostics4.request.json b/ls/src/tests/testdata/diagnostics4.request.json index c12a5d0c7..7c6102c46 100644 --- a/ls/src/tests/testdata/diagnostics4.request.json +++ b/ls/src/tests/testdata/diagnostics4.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///diagnostics4.yar" + "uri": "${test_dir}/diagnostics4.yar" } } diff --git a/ls/src/tests/testdata/diagnostics4.response.json b/ls/src/tests/testdata/diagnostics4.response.json index 534faa1e3..409fb5417 100644 --- a/ls/src/tests/testdata/diagnostics4.response.json +++ b/ls/src/tests/testdata/diagnostics4.response.json @@ -18,7 +18,7 @@ "relatedInformation": [ { "location": { - "uri": "file:///diagnostics4.yar", + "uri": "${test_dir}/diagnostics4.yar", "range": { "start": { "line": 2, @@ -54,7 +54,7 @@ "relatedInformation": [ { "location": { - "uri": "file:///diagnostics4.yar", + "uri": "${test_dir}/diagnostics4.yar", "range": { "start": { "line": 4, diff --git a/ls/src/tests/testdata/diagnostics5.request.json b/ls/src/tests/testdata/diagnostics5.request.json index 7b9b8573f..246ba5cac 100644 --- a/ls/src/tests/testdata/diagnostics5.request.json +++ b/ls/src/tests/testdata/diagnostics5.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///diagnostics5.yar" + "uri": "${test_dir}/diagnostics5.yar" } } diff --git a/ls/src/tests/testdata/diagnostics5.response.json b/ls/src/tests/testdata/diagnostics5.response.json index d018da97b..e0f6f0eba 100644 --- a/ls/src/tests/testdata/diagnostics5.response.json +++ b/ls/src/tests/testdata/diagnostics5.response.json @@ -18,7 +18,7 @@ "relatedInformation": [ { "location": { - "uri": "file:///diagnostics5.yar", + "uri": "${test_dir}/diagnostics5.yar", "range": { "start": { "line": 3, @@ -54,7 +54,7 @@ "relatedInformation": [ { "location": { - "uri": "file:///diagnostics5.yar", + "uri": "${test_dir}/diagnostics5.yar", "range": { "start": { "line": 2, diff --git a/ls/src/tests/testdata/diagnostics6.request.json b/ls/src/tests/testdata/diagnostics6.request.json index 11a9b05ec..0dba85735 100644 --- a/ls/src/tests/testdata/diagnostics6.request.json +++ b/ls/src/tests/testdata/diagnostics6.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///diagnostics6.yar" + "uri": "${test_dir}/diagnostics6.yar" } } \ No newline at end of file diff --git a/ls/src/tests/testdata/diagnostics6.response.json b/ls/src/tests/testdata/diagnostics6.response.json index 135435a22..308e30f21 100644 --- a/ls/src/tests/testdata/diagnostics6.response.json +++ b/ls/src/tests/testdata/diagnostics6.response.json @@ -18,7 +18,7 @@ "relatedInformation": [ { "location": { - "uri": "file:///diagnostics6.yar", + "uri": "${test_dir}/diagnostics6.yar", "range": { "start": { "line": 1, @@ -68,7 +68,7 @@ "relatedInformation": [ { "location": { - "uri": "file:///diagnostics6.yar", + "uri": "${test_dir}/diagnostics6.yar", "range": { "start": { "line": 0, @@ -118,7 +118,7 @@ "relatedInformation": [ { "location": { - "uri": "file:///diagnostics6.yar", + "uri": "${test_dir}/diagnostics6.yar", "range": { "start": { "line": 4, diff --git a/ls/src/tests/testdata/diagnostics7.request.json b/ls/src/tests/testdata/diagnostics7.request.json index f21f91ca3..b563c1244 100644 --- a/ls/src/tests/testdata/diagnostics7.request.json +++ b/ls/src/tests/testdata/diagnostics7.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///diagnostics7.yar" + "uri": "${test_dir}/diagnostics7.yar" } } \ No newline at end of file diff --git a/ls/src/tests/testdata/diagnostics7.response.json b/ls/src/tests/testdata/diagnostics7.response.json index c58d8035d..dad43be3e 100644 --- a/ls/src/tests/testdata/diagnostics7.response.json +++ b/ls/src/tests/testdata/diagnostics7.response.json @@ -18,7 +18,7 @@ "relatedInformation": [ { "location": { - "uri": "file:///diagnostics7.yar", + "uri": "${test_dir}/diagnostics7.yar", "range": { "start": { "line": 3, diff --git a/ls/src/tests/testdata/diagnostics8.request.json b/ls/src/tests/testdata/diagnostics8.request.json index bf8c1d785..965f71a10 100644 --- a/ls/src/tests/testdata/diagnostics8.request.json +++ b/ls/src/tests/testdata/diagnostics8.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///diagnostics8.yar" + "uri": "${test_dir}/diagnostics8.yar" } } \ No newline at end of file diff --git a/ls/src/tests/testdata/diagnostics8.response.json b/ls/src/tests/testdata/diagnostics8.response.json index c9269b263..e33fa5e29 100644 --- a/ls/src/tests/testdata/diagnostics8.response.json +++ b/ls/src/tests/testdata/diagnostics8.response.json @@ -18,7 +18,7 @@ "relatedInformation": [ { "location": { - "uri": "file:///diagnostics8.yar", + "uri": "${test_dir}/diagnostics8.yar", "range": { "start": { "line": 0, diff --git a/ls/src/tests/testdata/formatting1.request.json b/ls/src/tests/testdata/formatting1.request.json index 085e3dcbe..e3bf57de5 100644 --- a/ls/src/tests/testdata/formatting1.request.json +++ b/ls/src/tests/testdata/formatting1.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///formatting1.yar" + "uri": "${test_dir}/formatting1.yar" }, "options": { "tabSize": 4, diff --git a/ls/src/tests/testdata/goto1.request.json b/ls/src/tests/testdata/goto1.request.json index 9c7c37e27..ae5f4a8fa 100644 --- a/ls/src/tests/testdata/goto1.request.json +++ b/ls/src/tests/testdata/goto1.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///goto1.yar" + "uri": "${test_dir}/goto1.yar" }, "position": { "line": 4, diff --git a/ls/src/tests/testdata/goto1.response.json b/ls/src/tests/testdata/goto1.response.json index 60a954c83..04ef9eced 100644 --- a/ls/src/tests/testdata/goto1.response.json +++ b/ls/src/tests/testdata/goto1.response.json @@ -1,5 +1,5 @@ { - "uri": "file:///goto1.yar", + "uri": "${test_dir}/goto1.yar", "range": { "start": { "line": 2, diff --git a/ls/src/tests/testdata/goto2.request.json b/ls/src/tests/testdata/goto2.request.json index 7f1d9cd32..da78d160e 100644 --- a/ls/src/tests/testdata/goto2.request.json +++ b/ls/src/tests/testdata/goto2.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///goto2.yar" + "uri": "${test_dir}/goto2.yar" }, "position": { "line": 5, diff --git a/ls/src/tests/testdata/goto2.response.json b/ls/src/tests/testdata/goto2.response.json index 63f559b0c..f56a6ec9c 100644 --- a/ls/src/tests/testdata/goto2.response.json +++ b/ls/src/tests/testdata/goto2.response.json @@ -1,5 +1,5 @@ { - "uri": "file:///goto2.yar", + "uri": "${test_dir}/goto2.yar", "range": { "start": { "line": 0, diff --git a/ls/src/tests/testdata/goto3.request.json b/ls/src/tests/testdata/goto3.request.json index 047a6a57d..f7d2bf510 100644 --- a/ls/src/tests/testdata/goto3.request.json +++ b/ls/src/tests/testdata/goto3.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///goto3.yar" + "uri": "${test_dir}/goto3.yar" }, "position": { "line": 11, diff --git a/ls/src/tests/testdata/goto3.response.json b/ls/src/tests/testdata/goto3.response.json index c916631da..78a105059 100644 --- a/ls/src/tests/testdata/goto3.response.json +++ b/ls/src/tests/testdata/goto3.response.json @@ -1,5 +1,5 @@ { - "uri": "file:///goto3.yar", + "uri": "${test_dir}/goto3.yar", "range": { "start": { "line": 9, diff --git a/ls/src/tests/testdata/goto4.request.json b/ls/src/tests/testdata/goto4.request.json index c334d63f8..863e41f8a 100644 --- a/ls/src/tests/testdata/goto4.request.json +++ b/ls/src/tests/testdata/goto4.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///goto4.yar" + "uri": "${test_dir}/goto4.yar" }, "position": { "line": 4, diff --git a/ls/src/tests/testdata/goto4.response.json b/ls/src/tests/testdata/goto4.response.json index 175962187..7ab59fe72 100644 --- a/ls/src/tests/testdata/goto4.response.json +++ b/ls/src/tests/testdata/goto4.response.json @@ -1,5 +1,5 @@ { - "uri": "file:///goto4.yar", + "uri": "${test_dir}/goto4.yar", "range": { "start": { "line": 2, diff --git a/ls/src/tests/testdata/goto5.request.json b/ls/src/tests/testdata/goto5.request.json index 36b3a29f8..478e8ab8b 100644 --- a/ls/src/tests/testdata/goto5.request.json +++ b/ls/src/tests/testdata/goto5.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///goto5.yar" + "uri": "${test_dir}/goto5.yar" }, "position": { "line": 4, diff --git a/ls/src/tests/testdata/goto6.request.json b/ls/src/tests/testdata/goto6.request.json new file mode 100644 index 000000000..b79e57d76 --- /dev/null +++ b/ls/src/tests/testdata/goto6.request.json @@ -0,0 +1,9 @@ +{ + "textDocument": { + "uri": "${test_dir}/goto6.yar" + }, + "position": { + "line": 4, + "character": 6 + } +} diff --git a/ls/src/tests/testdata/goto6.response.json b/ls/src/tests/testdata/goto6.response.json new file mode 100644 index 000000000..5ada08c18 --- /dev/null +++ b/ls/src/tests/testdata/goto6.response.json @@ -0,0 +1,13 @@ +{ + "uri": "${test_dir}/goto5.yar", + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 5, + "character": 1 + } + } +} \ No newline at end of file diff --git a/ls/src/tests/testdata/goto6.yar b/ls/src/tests/testdata/goto6.yar new file mode 100644 index 000000000..bd9882fab --- /dev/null +++ b/ls/src/tests/testdata/goto6.yar @@ -0,0 +1,6 @@ +include "goto5.yar" + +rule test_2 { + condition: + test_1 +} \ No newline at end of file diff --git a/ls/src/tests/testdata/highlights1.request.json b/ls/src/tests/testdata/highlights1.request.json index 454a133a0..bdb498941 100644 --- a/ls/src/tests/testdata/highlights1.request.json +++ b/ls/src/tests/testdata/highlights1.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///documenthighlights1.yar" + "uri": "${test_dir}/documenthighlights1.yar" }, "position": { "line": 7, diff --git a/ls/src/tests/testdata/highlights2.request.json b/ls/src/tests/testdata/highlights2.request.json index 5ab8c6427..cab7d979c 100644 --- a/ls/src/tests/testdata/highlights2.request.json +++ b/ls/src/tests/testdata/highlights2.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///documenthighlights2.yar" + "uri": "${test_dir}/documenthighlights2.yar" }, "position": { "line": 7, diff --git a/ls/src/tests/testdata/highlights3.request.json b/ls/src/tests/testdata/highlights3.request.json index 3e05eb40b..fdc6101fb 100644 --- a/ls/src/tests/testdata/highlights3.request.json +++ b/ls/src/tests/testdata/highlights3.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///documenthighlights3.yar" + "uri": "${test_dir}/documenthighlights3.yar" }, "position": { "line": 4, diff --git a/ls/src/tests/testdata/highlights4.request.json b/ls/src/tests/testdata/highlights4.request.json index 42a93c10a..d10178045 100644 --- a/ls/src/tests/testdata/highlights4.request.json +++ b/ls/src/tests/testdata/highlights4.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///documenthighlights4.yar" + "uri": "${test_dir}/documenthighlights4.yar" }, "position": { "line": 4, diff --git a/ls/src/tests/testdata/highlights5.request.json b/ls/src/tests/testdata/highlights5.request.json index de3869023..ad54e852e 100644 --- a/ls/src/tests/testdata/highlights5.request.json +++ b/ls/src/tests/testdata/highlights5.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///documenthighlights5.yar" + "uri": "${test_dir}/documenthighlights5.yar" }, "position": { "line": 11, diff --git a/ls/src/tests/testdata/hover1.request.json b/ls/src/tests/testdata/hover1.request.json index 4d10ce3cc..8cf4aa43c 100644 --- a/ls/src/tests/testdata/hover1.request.json +++ b/ls/src/tests/testdata/hover1.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///hover1.yar" + "uri": "${test_dir}/hover1.yar" }, "position": { "line": 4, diff --git a/ls/src/tests/testdata/hover2.request.json b/ls/src/tests/testdata/hover2.request.json index 0904cc02b..d6d492bfe 100644 --- a/ls/src/tests/testdata/hover2.request.json +++ b/ls/src/tests/testdata/hover2.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///hover2.yar" + "uri": "${test_dir}/hover2.yar" }, "position": { "line": 4, diff --git a/ls/src/tests/testdata/hover3.request.json b/ls/src/tests/testdata/hover3.request.json index 68f346f93..595d51d11 100644 --- a/ls/src/tests/testdata/hover3.request.json +++ b/ls/src/tests/testdata/hover3.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///hover3.yar" + "uri": "${test_dir}/hover3.yar" }, "position": { "line": 5, diff --git a/ls/src/tests/testdata/hover4.request.json b/ls/src/tests/testdata/hover4.request.json index 79622f33f..cc0e7dd17 100644 --- a/ls/src/tests/testdata/hover4.request.json +++ b/ls/src/tests/testdata/hover4.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///hover4.yar" + "uri": "${test_dir}/hover4.yar" }, "position": { "line": 0, diff --git a/ls/src/tests/testdata/hover5.request.json b/ls/src/tests/testdata/hover5.request.json index 37723ff66..5c63da3bd 100644 --- a/ls/src/tests/testdata/hover5.request.json +++ b/ls/src/tests/testdata/hover5.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///hover5.yar" + "uri": "${test_dir}/hover5.yar" }, "position": { "line": 4, diff --git a/ls/src/tests/testdata/hover6.request.json b/ls/src/tests/testdata/hover6.request.json index d0358a70d..ff6671bb1 100644 --- a/ls/src/tests/testdata/hover6.request.json +++ b/ls/src/tests/testdata/hover6.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///hover6.yar" + "uri": "${test_dir}/hover6.yar" }, "position": { "line": 17, diff --git a/ls/src/tests/testdata/hover7.request.json b/ls/src/tests/testdata/hover7.request.json index 0fd6b65a8..ecf4c4b67 100644 --- a/ls/src/tests/testdata/hover7.request.json +++ b/ls/src/tests/testdata/hover7.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///hover7.yar" + "uri": "${test_dir}/hover7.yar" }, "position": { "line": 3, diff --git a/ls/src/tests/testdata/references1.request.json b/ls/src/tests/testdata/references1.request.json index b57f35362..4b3fb88d7 100644 --- a/ls/src/tests/testdata/references1.request.json +++ b/ls/src/tests/testdata/references1.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///references1.yar" + "uri": "${test_dir}/references1.yar" }, "position": { "line": 4, diff --git a/ls/src/tests/testdata/references1.response.json b/ls/src/tests/testdata/references1.response.json index 73008ea41..c60eb3247 100644 --- a/ls/src/tests/testdata/references1.response.json +++ b/ls/src/tests/testdata/references1.response.json @@ -1,6 +1,6 @@ [ { - "uri": "file:///references1.yar", + "uri": "${test_dir}/references1.yar", "range": { "start": { "line": 2, @@ -13,7 +13,7 @@ } }, { - "uri": "file:///references1.yar", + "uri": "${test_dir}/references1.yar", "range": { "start": { "line": 4, diff --git a/ls/src/tests/testdata/references2.request.json b/ls/src/tests/testdata/references2.request.json index 5300a94d7..916780f09 100644 --- a/ls/src/tests/testdata/references2.request.json +++ b/ls/src/tests/testdata/references2.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///references2.yar" + "uri": "${test_dir}/references2.yar" }, "position": { "line": 4, diff --git a/ls/src/tests/testdata/references2.response.json b/ls/src/tests/testdata/references2.response.json index 0b0cb7b7f..ea3a8a649 100644 --- a/ls/src/tests/testdata/references2.response.json +++ b/ls/src/tests/testdata/references2.response.json @@ -1,6 +1,6 @@ [ { - "uri": "file:///references2.yar", + "uri": "${test_dir}/references2.yar", "range": { "start": { "line": 2, @@ -13,7 +13,7 @@ } }, { - "uri": "file:///references2.yar", + "uri": "${test_dir}/references2.yar", "range": { "start": { "line": 4, @@ -26,7 +26,7 @@ } }, { - "uri": "file:///references2.yar", + "uri": "${test_dir}/references2.yar", "range": { "start": { "line": 4, @@ -39,7 +39,7 @@ } }, { - "uri": "file:///references2.yar", + "uri": "${test_dir}/references2.yar", "range": { "start": { "line": 4, diff --git a/ls/src/tests/testdata/references3.request.json b/ls/src/tests/testdata/references3.request.json index 742be0dfc..594ff9a44 100644 --- a/ls/src/tests/testdata/references3.request.json +++ b/ls/src/tests/testdata/references3.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///references3.yar" + "uri": "${test_dir}/references3.yar" }, "position": { "line": 7, diff --git a/ls/src/tests/testdata/references3.response.json b/ls/src/tests/testdata/references3.response.json index 0d08e2243..6c0500889 100644 --- a/ls/src/tests/testdata/references3.response.json +++ b/ls/src/tests/testdata/references3.response.json @@ -1,6 +1,6 @@ [ { - "uri": "file:///references3.yar", + "uri": "${test_dir}/references3.yar", "range": { "start": { "line": 0, @@ -13,7 +13,7 @@ } }, { - "uri": "file:///references3.yar", + "uri": "${test_dir}/references3.yar", "range": { "start": { "line": 7, diff --git a/ls/src/tests/testdata/references4.request.json b/ls/src/tests/testdata/references4.request.json index c3a418643..ca324aa15 100644 --- a/ls/src/tests/testdata/references4.request.json +++ b/ls/src/tests/testdata/references4.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///references4.yar" + "uri": "${test_dir}/references4.yar" }, "position": { "line": 7, diff --git a/ls/src/tests/testdata/references4.response.json b/ls/src/tests/testdata/references4.response.json index 7e4a2aa38..4bd917cf8 100644 --- a/ls/src/tests/testdata/references4.response.json +++ b/ls/src/tests/testdata/references4.response.json @@ -1,6 +1,6 @@ [ { - "uri": "file:///references4.yar", + "uri": "${test_dir}/references4.yar", "range": { "start": { "line": 0, @@ -13,7 +13,7 @@ } }, { - "uri": "file:///references4.yar", + "uri": "${test_dir}/references4.yar", "range": { "start": { "line": 7, @@ -26,7 +26,7 @@ } }, { - "uri": "file:///references4.yar", + "uri": "${test_dir}/references4.yar", "range": { "start": { "line": 12, diff --git a/ls/src/tests/testdata/references5.request.json b/ls/src/tests/testdata/references5.request.json index b31f579a0..69bc0e534 100644 --- a/ls/src/tests/testdata/references5.request.json +++ b/ls/src/tests/testdata/references5.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///references5.yar" + "uri": "${test_dir}/references5.yar" }, "position": { "line": 11, diff --git a/ls/src/tests/testdata/references5.response.json b/ls/src/tests/testdata/references5.response.json index 247037ddb..be1da7fb8 100644 --- a/ls/src/tests/testdata/references5.response.json +++ b/ls/src/tests/testdata/references5.response.json @@ -1,6 +1,6 @@ [ { - "uri": "file:///references5.yar", + "uri": "${test_dir}/references5.yar", "range": { "start": { "line": 9, @@ -13,7 +13,7 @@ } }, { - "uri": "file:///references5.yar", + "uri": "${test_dir}/references5.yar", "range": { "start": { "line": 11, diff --git a/ls/src/tests/testdata/rename1.request.json b/ls/src/tests/testdata/rename1.request.json index cae0d1c9d..85419c1c5 100644 --- a/ls/src/tests/testdata/rename1.request.json +++ b/ls/src/tests/testdata/rename1.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///rename1.yar" + "uri": "${test_dir}/rename1.yar" }, "position": { "line": 4, diff --git a/ls/src/tests/testdata/rename1.response.json b/ls/src/tests/testdata/rename1.response.json index 6b337da42..91ae202d9 100644 --- a/ls/src/tests/testdata/rename1.response.json +++ b/ls/src/tests/testdata/rename1.response.json @@ -1,6 +1,6 @@ { "changes": { - "file:///rename1.yar": [ + "${test_dir}/rename1.yar": [ { "range": { "start": { diff --git a/ls/src/tests/testdata/rename2.request.json b/ls/src/tests/testdata/rename2.request.json index b9ddeb48e..332ddf97b 100644 --- a/ls/src/tests/testdata/rename2.request.json +++ b/ls/src/tests/testdata/rename2.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///rename2.yar" + "uri": "${test_dir}/rename2.yar" }, "position": { "line": 4, diff --git a/ls/src/tests/testdata/rename2.response.json b/ls/src/tests/testdata/rename2.response.json index f07ff4a56..4f4703976 100644 --- a/ls/src/tests/testdata/rename2.response.json +++ b/ls/src/tests/testdata/rename2.response.json @@ -1,6 +1,6 @@ { "changes": { - "file:///rename2.yar": [ + "${test_dir}/rename2.yar": [ { "range": { "start": { diff --git a/ls/src/tests/testdata/rename3.request.json b/ls/src/tests/testdata/rename3.request.json index d3c31e554..9e1e274eb 100644 --- a/ls/src/tests/testdata/rename3.request.json +++ b/ls/src/tests/testdata/rename3.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///rename3.yar" + "uri": "${test_dir}/rename3.yar" }, "position": { "line": 9, diff --git a/ls/src/tests/testdata/rename3.response.json b/ls/src/tests/testdata/rename3.response.json index 91974fefe..2029a7644 100644 --- a/ls/src/tests/testdata/rename3.response.json +++ b/ls/src/tests/testdata/rename3.response.json @@ -1,6 +1,6 @@ { "changes": { - "file:///rename3.yar": [ + "${test_dir}/rename3.yar": [ { "range": { "start": { diff --git a/ls/src/tests/testdata/rename4.request.json b/ls/src/tests/testdata/rename4.request.json index d7b60d53f..db78753b6 100644 --- a/ls/src/tests/testdata/rename4.request.json +++ b/ls/src/tests/testdata/rename4.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///rename4.yar" + "uri": "${test_dir}/rename4.yar" }, "position": { "line": 9, diff --git a/ls/src/tests/testdata/rename4.response.json b/ls/src/tests/testdata/rename4.response.json index dfd62db91..20407d0e0 100644 --- a/ls/src/tests/testdata/rename4.response.json +++ b/ls/src/tests/testdata/rename4.response.json @@ -1,6 +1,6 @@ { "changes": { - "file:///rename4.yar": [ + "${test_dir}/rename4.yar": [ { "range": { "start": { diff --git a/ls/src/tests/testdata/rename5.request.json b/ls/src/tests/testdata/rename5.request.json index ca67855d5..0519a5e2a 100644 --- a/ls/src/tests/testdata/rename5.request.json +++ b/ls/src/tests/testdata/rename5.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///rename5.yar" + "uri": "${test_dir}/rename5.yar" }, "position": { "line": 3, diff --git a/ls/src/tests/testdata/selectionrange1.request.json b/ls/src/tests/testdata/selectionrange1.request.json index b5e9f0631..292c2d15c 100644 --- a/ls/src/tests/testdata/selectionrange1.request.json +++ b/ls/src/tests/testdata/selectionrange1.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///selectionrange1.yar" + "uri": "${test_dir}/selectionrange1.yar" }, "positions": [ { diff --git a/ls/src/tests/testdata/selectionrange2.request.json b/ls/src/tests/testdata/selectionrange2.request.json index 22f9284df..4c8856f7f 100644 --- a/ls/src/tests/testdata/selectionrange2.request.json +++ b/ls/src/tests/testdata/selectionrange2.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///selectionrange2.yar" + "uri": "${test_dir}/selectionrange2.yar" }, "positions": [ { diff --git a/ls/src/tests/testdata/selectionrange3.request.json b/ls/src/tests/testdata/selectionrange3.request.json index ac198cee8..0fb406206 100644 --- a/ls/src/tests/testdata/selectionrange3.request.json +++ b/ls/src/tests/testdata/selectionrange3.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///selectionrange3.yar" + "uri": "${test_dir}/selectionrange3.yar" }, "positions": [ { diff --git a/ls/src/tests/testdata/selectionrange4.request.json b/ls/src/tests/testdata/selectionrange4.request.json index 1698327ab..759fda491 100644 --- a/ls/src/tests/testdata/selectionrange4.request.json +++ b/ls/src/tests/testdata/selectionrange4.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///selectionrange4.yar" + "uri": "${test_dir}/selectionrange4.yar" }, "positions": [ { diff --git a/ls/src/tests/testdata/selectionrange5.request.json b/ls/src/tests/testdata/selectionrange5.request.json index 6368f89fd..5ed03895c 100644 --- a/ls/src/tests/testdata/selectionrange5.request.json +++ b/ls/src/tests/testdata/selectionrange5.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///selectionrange5.yar" + "uri": "${test_dir}/selectionrange5.yar" }, "positions": [ { diff --git a/ls/src/tests/testdata/selectionrange6.request.json b/ls/src/tests/testdata/selectionrange6.request.json index 6312e5f97..9d5368c37 100644 --- a/ls/src/tests/testdata/selectionrange6.request.json +++ b/ls/src/tests/testdata/selectionrange6.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///selectionrange6.yar" + "uri": "${test_dir}/selectionrange6.yar" }, "positions": [ { diff --git a/ls/src/tests/testdata/selectionrange7.request.json b/ls/src/tests/testdata/selectionrange7.request.json index 19a15763f..989f675f0 100644 --- a/ls/src/tests/testdata/selectionrange7.request.json +++ b/ls/src/tests/testdata/selectionrange7.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///selectionrange7.yar" + "uri": "${test_dir}/selectionrange7.yar" }, "positions": [ { diff --git a/ls/src/tests/testdata/semantic_tokens1.request.json b/ls/src/tests/testdata/semantic_tokens1.request.json index 17a6fc120..9cbd1e8b8 100644 --- a/ls/src/tests/testdata/semantic_tokens1.request.json +++ b/ls/src/tests/testdata/semantic_tokens1.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///semantic_tokens1.yar" + "uri": "${test_dir}/semantic_tokens1.yar" } } diff --git a/ls/src/tests/testdata/semantic_tokens2.request.json b/ls/src/tests/testdata/semantic_tokens2.request.json index a589818d6..8db1c2f33 100644 --- a/ls/src/tests/testdata/semantic_tokens2.request.json +++ b/ls/src/tests/testdata/semantic_tokens2.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///semantic_tokens2.yar" + "uri": "${test_dir}/semantic_tokens2.yar" } } diff --git a/ls/src/tests/testdata/semantic_tokens_range.request.json b/ls/src/tests/testdata/semantic_tokens_range.request.json index a7b80864b..832d43d1e 100644 --- a/ls/src/tests/testdata/semantic_tokens_range.request.json +++ b/ls/src/tests/testdata/semantic_tokens_range.request.json @@ -1,6 +1,6 @@ { "textDocument": { - "uri": "file:///semantic_tokens_range.yar" + "uri": "${test_dir}/semantic_tokens_range.yar" }, "range": { "start": { diff --git a/ls/src/tests/testdata/symbols1.request.json b/ls/src/tests/testdata/symbols1.request.json index 91fa1344b..93b3b85c7 100644 --- a/ls/src/tests/testdata/symbols1.request.json +++ b/ls/src/tests/testdata/symbols1.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///symbols1.yar" + "uri": "${test_dir}/symbols1.yar" } } diff --git a/ls/src/tests/testdata/symbols2.request.json b/ls/src/tests/testdata/symbols2.request.json index 21bddd467..174168e73 100644 --- a/ls/src/tests/testdata/symbols2.request.json +++ b/ls/src/tests/testdata/symbols2.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///symbols2.yar" + "uri": "${test_dir}/symbols2.yar" } } diff --git a/ls/src/tests/testdata/symbols3.request.json b/ls/src/tests/testdata/symbols3.request.json index 640fcff99..4b8e37f34 100644 --- a/ls/src/tests/testdata/symbols3.request.json +++ b/ls/src/tests/testdata/symbols3.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///symbols3.yar" + "uri": "${test_dir}/symbols3.yar" } } diff --git a/ls/src/tests/testdata/symbols4.request.json b/ls/src/tests/testdata/symbols4.request.json index 422458011..14d8a109c 100644 --- a/ls/src/tests/testdata/symbols4.request.json +++ b/ls/src/tests/testdata/symbols4.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///symbols4.yar" + "uri": "${test_dir}/symbols4.yar" } } diff --git a/ls/src/tests/testdata/symbols5.request.json b/ls/src/tests/testdata/symbols5.request.json index 4b53845ad..0c4fae5c1 100644 --- a/ls/src/tests/testdata/symbols5.request.json +++ b/ls/src/tests/testdata/symbols5.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///symbols5.yar" + "uri": "${test_dir}/symbols5.yar" } } diff --git a/ls/src/tests/testdata/symbols6.request.json b/ls/src/tests/testdata/symbols6.request.json index 3bfb9f045..b07d8aab6 100644 --- a/ls/src/tests/testdata/symbols6.request.json +++ b/ls/src/tests/testdata/symbols6.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///documentsymbols6.yar" + "uri": "${test_dir}/documentsymbols6.yar" } } diff --git a/ls/src/tests/testdata/symbols7.request.json b/ls/src/tests/testdata/symbols7.request.json index 3a44a8f1e..2ace4e1ec 100644 --- a/ls/src/tests/testdata/symbols7.request.json +++ b/ls/src/tests/testdata/symbols7.request.json @@ -1,5 +1,5 @@ { "textDocument": { - "uri": "file:///documentsymbols7.yar" + "uri": "${test_dir}/documentsymbols7.yar" } }