Skip to content

Commit b44fdf6

Browse files
authored
fix(lsp): read self.context_state instead of stale local variable in _context_get_or_load (#5747)
Signed-off-by: jthurlburt <jthurlburt818@gmail.com>
1 parent 1ec216a commit b44fdf6

2 files changed

Lines changed: 32 additions & 2 deletions

File tree

sqlmesh/lsp/main.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1074,8 +1074,8 @@ def _context_get_or_load(self, document_uri: t.Optional[URI] = None) -> LSPConte
10741074
loaded_sqlmesh_message(self.server)
10751075
else:
10761076
self._ensure_context_for_document(document_uri)
1077-
if isinstance(state, ContextLoaded):
1078-
return state.lsp_context
1077+
if isinstance(self.context_state, ContextLoaded):
1078+
return self.context_state.lsp_context
10791079
raise RuntimeError("Context failed to load")
10801080

10811081
def _ensure_context_for_document(

tests/lsp/test_context.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from sqlmesh.core.context import Context
44
from sqlmesh.lsp.context import LSPContext, ModelTarget
5+
from sqlmesh.lsp.main import ContextLoaded, NoContext, SQLMeshLanguageServer
56
from sqlmesh.lsp.uri import URI
67

78

@@ -61,3 +62,32 @@ def test_lsp_context_run_test():
6162
# Check that the result is not None and has the expected properties
6263
assert result is not None
6364
assert result.success is True
65+
66+
67+
def test_context_get_or_load_from_no_context_with_specified_paths():
68+
server = SQLMeshLanguageServer(context_class=Context)
69+
server.server.show_message = lambda *args, **kwargs: None
70+
server.specified_paths = [Path("examples/sushi")]
71+
72+
assert isinstance(server.context_state, NoContext)
73+
74+
lsp_context = server._context_get_or_load()
75+
76+
assert isinstance(lsp_context, LSPContext)
77+
assert isinstance(server.context_state, ContextLoaded)
78+
assert server.context_state.lsp_context is lsp_context
79+
80+
81+
def test_context_get_or_load_from_no_context_via_workspace_folder():
82+
server = SQLMeshLanguageServer(context_class=Context)
83+
server.server.show_message = lambda *args, **kwargs: None
84+
server.specified_paths = None
85+
server.workspace_folders = [Path.cwd() / "examples" / "sushi"]
86+
87+
assert isinstance(server.context_state, NoContext)
88+
89+
lsp_context = server._context_get_or_load()
90+
91+
assert isinstance(lsp_context, LSPContext)
92+
assert isinstance(server.context_state, ContextLoaded)
93+
assert server.context_state.lsp_context is lsp_context

0 commit comments

Comments
 (0)