summaryrefslogtreecommitdiff
path: root/support/texlab/tests/integration/lsp/text_document/document_link.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/tests/integration/lsp/text_document/document_link.rs')
-rw-r--r--support/texlab/tests/integration/lsp/text_document/document_link.rs73
1 files changed, 73 insertions, 0 deletions
diff --git a/support/texlab/tests/integration/lsp/text_document/document_link.rs b/support/texlab/tests/integration/lsp/text_document/document_link.rs
new file mode 100644
index 0000000000..1a773fd478
--- /dev/null
+++ b/support/texlab/tests/integration/lsp/text_document/document_link.rs
@@ -0,0 +1,73 @@
+use anyhow::Result;
+use assert_unordered::assert_eq_unordered;
+use lsp_types::{
+ request::DocumentLinkRequest, ClientCapabilities, DocumentLink, DocumentLinkParams,
+ TextDocumentIdentifier,
+};
+
+use crate::lsp::{client::Client, fixture};
+
+fn check(fixture: &str) -> Result<()> {
+ let mut client = Client::spawn()?;
+ client.initialize(ClientCapabilities::default(), None)?;
+
+ let fixture = fixture::parse(fixture);
+ for file in fixture.files {
+ client.open(file.name, file.lang, file.text)?;
+ }
+
+ let mut expected_links = Vec::new();
+ for ranges in fixture.ranges.values() {
+ expected_links.push(DocumentLink {
+ range: ranges[&1].range,
+ target: Some(client.uri(ranges[&2].name)?),
+ tooltip: None,
+ data: None,
+ });
+ }
+
+ let actual_links = client
+ .request::<DocumentLinkRequest>(DocumentLinkParams {
+ text_document: TextDocumentIdentifier::new(client.uri(fixture.cursor.unwrap().name)?),
+ work_done_progress_params: Default::default(),
+ partial_result_params: Default::default(),
+ })?
+ .unwrap_or_default();
+
+ client.shutdown()?;
+
+ assert_eq_unordered!(actual_links, expected_links);
+ Ok(())
+}
+
+#[test]
+fn document_include() -> Result<()> {
+ check(
+ r#"
+%TEX foo.tex
+%SRC \input{bar.tex}
+%1.1 ^^^^^^^
+%CUR ^
+
+%TEX bar.tex
+%SRC
+%1.2
+"#,
+ )
+}
+
+#[test]
+fn document_import() -> Result<()> {
+ check(
+ r#"
+%TEX foo.tex
+%SRC \import{bar/}{baz}
+%1.1 ^^^
+%CUR ^
+
+%TEX bar/baz.tex
+%SRC
+%1.2
+"#,
+ )
+}