Skip to content

Commit d14ad1f

Browse files
committed
fix: nit pack comments
1 parent 14ddb43 commit d14ad1f

2 files changed

Lines changed: 80 additions & 3 deletions

File tree

services/workspace_context.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,18 @@ def resolve_workspace_context_cached(
9595
)
9696

9797

98-
def resolve_workspace_context_minimal(workspace_path: str) -> WorkspaceContext:
99-
"""Entries, project-name, and composer maps only (HTTP export)."""
100-
entries = collect_workspace_entries(workspace_path)
98+
def resolve_workspace_context_minimal(
99+
workspace_path: str,
100+
*,
101+
workspace_entries: list[dict] | None = None,
102+
) -> WorkspaceContext:
103+
"""Entries, project-name, and composer maps only (HTTP export).
104+
105+
Args:
106+
workspace_path: Cursor ``workspaceStorage`` root.
107+
workspace_entries: Pre-collected entries; when ``None``, scanned from disk.
108+
"""
109+
entries = _entries(workspace_path, workspace_entries)
101110
return _assemble_context(
102111
entries,
103112
invalid_workspace_ids=set(),

tests/test_workspace_context.py

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,18 @@ def test_resolve_workspace_context_populates_invalid_workspace_ids():
7878
assert "abc123workspace" not in ctx.invalid_workspace_ids
7979

8080

81+
def test_resolve_workspace_context_cached_passes_nocache():
82+
with tempfile.TemporaryDirectory() as tmp:
83+
ws_root = _make_workspace_root(tmp)
84+
with patch(
85+
"services.workspace_context.build_composer_id_to_workspace_id_cached",
86+
return_value={},
87+
) as mock_cached:
88+
resolve_workspace_context_cached(ws_root, [], nocache=True)
89+
mock_cached.assert_called_once()
90+
assert mock_cached.call_args.kwargs["nocache"] is True
91+
92+
8193
def test_resolve_workspace_context_cached_uses_cached_composer_map():
8294
with tempfile.TemporaryDirectory() as tmp:
8395
ws_root = _make_workspace_root(tmp)
@@ -130,6 +142,19 @@ def test_resolve_workspace_context_accepts_pre_collected_entries():
130142
assert ctx.workspace_entries is entries
131143

132144

145+
def test_resolve_workspace_context_minimal_accepts_pre_collected_entries():
146+
with tempfile.TemporaryDirectory() as tmp:
147+
ws_root = _make_workspace_root(tmp)
148+
entries = [{"name": "x", "workspaceJsonPath": "/fake/workspace.json"}]
149+
with patch(
150+
"services.workspace_context.collect_workspace_entries",
151+
return_value=entries,
152+
) as mock_collect:
153+
ctx = resolve_workspace_context_minimal(ws_root, workspace_entries=entries)
154+
mock_collect.assert_not_called()
155+
assert ctx.workspace_entries is entries
156+
157+
133158
def test_enrich_populates_bubble_map():
134159
with tempfile.TemporaryDirectory() as tmp:
135160
ctx = resolve_workspace_context(_make_workspace_root(tmp))
@@ -169,3 +194,46 @@ def test_enrich_populates_project_layouts_map():
169194
conn.close()
170195
assert enriched.project_layouts_map["composer-1"] == ["/tmp/myproject"]
171196
assert ctx.project_layouts_map == {}
197+
198+
199+
def test_enrich_populates_both_global_maps():
200+
with tempfile.TemporaryDirectory() as tmp:
201+
ctx = resolve_workspace_context(_make_workspace_root(tmp))
202+
conn = _open_global_db(tmp)
203+
mrc = {
204+
"projectLayouts": [json.dumps({"rootPath": "/tmp/myproject"})],
205+
}
206+
conn.execute(
207+
"INSERT INTO cursorDiskKV VALUES (?, ?)",
208+
("messageRequestContext:composer-1:ctx1", json.dumps(mrc)),
209+
)
210+
conn.execute(
211+
"INSERT INTO cursorDiskKV VALUES (?, ?)",
212+
("bubbleId:cid1:bid1", json.dumps({"type": 1, "text": "hi"})),
213+
)
214+
conn.commit()
215+
try:
216+
enriched = enrich_workspace_context_from_global_db(
217+
ctx,
218+
conn,
219+
populate_project_layouts=True,
220+
populate_bubble_map=True,
221+
)
222+
finally:
223+
conn.close()
224+
assert enriched.project_layouts_map["composer-1"] == ["/tmp/myproject"]
225+
assert enriched.bubble_map.get("bid1") is not None
226+
assert ctx.project_layouts_map == {}
227+
assert ctx.bubble_map == {}
228+
229+
230+
def test_enrich_with_no_flags_returns_unchanged_context():
231+
with tempfile.TemporaryDirectory() as tmp:
232+
ctx = resolve_workspace_context(_make_workspace_root(tmp))
233+
conn = _open_global_db(tmp)
234+
conn.commit()
235+
try:
236+
result = enrich_workspace_context_from_global_db(ctx, conn)
237+
finally:
238+
conn.close()
239+
assert result is ctx

0 commit comments

Comments
 (0)