summaryrefslogtreecommitdiff
path: root/support/texlab/tests/integration/issues.rs
blob: b991d185d3d8f527418e74cf2d4fec58c2d736f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
use std::{fs, thread, time::Duration};

use anyhow::Result;
use lsp_types::ClientCapabilities;

use crate::common::ServerTester;

#[test]
#[cfg(feature = "completion")]
fn test_408_parent_expansion() -> Result<()> {
    let server = ServerTester::launch_new_instance()?;
    server.initialize(ClientCapabilities::default(), None)?;
    let root = server.directory.path();

    let level1 = root.join("level1");
    let level2 = level1.join("level2");
    let level3 = level2.join("level3");
    fs::create_dir_all(&level3)?;
    fs::write(level3.join("d.tex"), "d")?;
    fs::write(
        level2.join("c.tex"),
        r#"\documentclass{subfiles}\begin{document}\include{level3/d}\end{document}"#,
    )?;
    fs::write(
        level1.join("b.tex"),
        r#"\documentclass{article}\begin{document}\include{level2/c}\end{document}"#,
    )?;
    fs::write(root.join("a.tex"), "}")?;

    thread::sleep(Duration::from_millis(300));

    let uri = server.open("level1/level2/level3/d.tex", "d", "latex", false)?;
    server.complete(uri, 0, 0)?;

    let diagnostics_by_uri = server.diagnostics_by_uri.lock().unwrap();
    assert!(diagnostics_by_uri
        .iter()
        .all(|(uri, _)| !uri.as_str().ends_with("a.tex")));

    Ok(())
}

#[test]
#[cfg(feature = "completion")]
fn test_510_completion_with_unmatched_braces() -> Result<()> {
    use insta::assert_debug_snapshot;

    let server = ServerTester::launch_new_instance()?;
    server.initialize(ClientCapabilities::default(), None)?;

    let uri = server.open(
        "main.tex",
        "\\label{eq:foo}\n\\ref{eq is a \\emph{useful} identity.",
        "latex",
        false,
    )?;

    assert_debug_snapshot!(server.complete(uri, 1, 7)?);

    Ok(())
}