Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 27 additions & 54 deletions src/test/python_tests/test_get_cwd.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import types

import lsp_server
import pytest

WORKSPACE = "/home/user/myproject"

Expand Down Expand Up @@ -69,60 +70,32 @@ def test_relative_file_variable_no_document_falls_back_to_workspace():
DOC = _make_doc(DOC_PATH)


def test_file_resolved():
"""${file} resolves to the full document path."""
settings = _make_settings(cwd="${file}")
assert lsp_server.get_cwd(settings, DOC) == DOC_PATH


def test_file_basename_resolved():
"""${fileBasename} resolves to just the file name."""
settings = _make_settings(cwd="${fileBasename}")
assert lsp_server.get_cwd(settings, DOC) == "foo.py"


def test_file_basename_no_extension_resolved():
"""${fileBasenameNoExtension} resolves to the file name without extension."""
settings = _make_settings(cwd="${fileBasenameNoExtension}")
assert lsp_server.get_cwd(settings, DOC) == "foo"


def test_file_extname_resolved():
"""${fileExtname} resolves to the file extension."""
settings = _make_settings(cwd="${fileExtname}")
assert lsp_server.get_cwd(settings, DOC) == ".py"


def test_file_dirname_resolved():
"""${fileDirname} resolves to the directory containing the file."""
settings = _make_settings(cwd="${fileDirname}")
assert lsp_server.get_cwd(settings, DOC) == "/home/user/myproject/src"


def test_file_dirname_basename_resolved():
"""${fileDirnameBasename} resolves to the name of the parent directory."""
settings = _make_settings(cwd="${fileDirnameBasename}")
assert lsp_server.get_cwd(settings, DOC) == "src"


def test_relative_file_resolved():
"""${relativeFile} resolves to the workspace-relative file path."""
settings = _make_settings(cwd="${relativeFile}")
assert lsp_server.get_cwd(settings, DOC) == os.path.relpath(DOC_PATH, WORKSPACE)


def test_relative_file_dirname_resolved():
"""${relativeFileDirname} resolves to the workspace-relative directory."""
settings = _make_settings(cwd="${relativeFileDirname}")
assert lsp_server.get_cwd(settings, DOC) == os.path.relpath(
"/home/user/myproject/src", WORKSPACE
)


def test_file_workspace_folder_resolved():
"""${fileWorkspaceFolder} resolves to the workspace root."""
settings = _make_settings(cwd="${fileWorkspaceFolder}")
assert lsp_server.get_cwd(settings, DOC) == WORKSPACE
@pytest.mark.parametrize(
"token, expected",
[
pytest.param("${file}", DOC_PATH, id="file"),
pytest.param("${fileBasename}", "foo.py", id="fileBasename"),
pytest.param("${fileBasenameNoExtension}", "foo", id="fileBasenameNoExtension"),
pytest.param("${fileExtname}", ".py", id="fileExtname"),
pytest.param("${fileDirname}", "/home/user/myproject/src", id="fileDirname"),
pytest.param("${fileDirnameBasename}", "src", id="fileDirnameBasename"),
pytest.param(
"${relativeFile}",
os.path.relpath(DOC_PATH, WORKSPACE),
id="relativeFile",
),
pytest.param(
"${relativeFileDirname}",
os.path.relpath("/home/user/myproject/src", WORKSPACE),
id="relativeFileDirname",
),
pytest.param("${fileWorkspaceFolder}", WORKSPACE, id="fileWorkspaceFolder"),
],
)
def test_single_variable_resolved(token, expected):
"""Each VS Code variable token resolves to its expected value."""
settings = _make_settings(cwd=token)
assert lsp_server.get_cwd(settings, DOC) == expected


def test_composite_pattern_resolved():
Expand Down
Loading