fix(opencode): tests drop XDG_DATA_HOME, status reads the adapter's db, the version probe runs in a home of its own (Issue #60, review 2)
- Review 8a485fa0 B1 / c9d06e85 / c4e96018 (blocking): the adapter now follows the caller's XDG_DATA_HOME for its own home, but the tests did not drop it: a sandbox that sets HOME resolved the runner's real data dir. XDG_DATA_HOME joins _agent_home_guard.DROPPED_VARS (dropped per test), and the session guard watches <XDG_DATA_HOME>/opencode when it is set. Checked with XDG_DATA_HOME set to a separate dir: the opencode modules pass and nothing is written there. - status.sh asks the adapter for the db (`debug paths`, XDG-aware) instead of a fixed ~/.local/share/opencode (8a485fa0 N1). - The opt-in test's `opencode --version` probe ran with the real HOME at import and appended to the real opencode log; it runs in a temporary home now (8a485fa0 N2). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VCgu9Fa9iT7TbJUSzdq4Ff
This commit is contained in:
1 parent
cb5f439cce
commit
0e05b1b677
3 files changed
+17
-31
No files matched your search
@@ -105,20 +105,10 @@ def resume_on_disk(s):
|
||||
if agent == 'opencode':
|
||||
u = s.get('opencode_session_id_own')
|
||||
if u:
|
||||
base_dir = f"{home}/.local/share/opencode"
|
||||
odb = None
|
||||
for cand in [f"{base_dir}/opencode.db", f"{base_dir}/storage.db"]:
|
||||
if os.path.exists(cand):
|
||||
odb = cand
|
||||
break
|
||||
if not odb and os.path.isdir(f"{base_dir}/project"):
|
||||
for root, _, files in os.walk(f"{base_dir}/project"):
|
||||
for f in files:
|
||||
if f.endswith(".db"):
|
||||
odb = os.path.join(root, f)
|
||||
break
|
||||
if odb:
|
||||
break
|
||||
# the adapter's db: `opencode debug paths`, which follows XDG_DATA_HOME (Issue #60)
|
||||
from lib_py.agents.registry import get_adapter
|
||||
from lib_py.agents.base import DiscoveryContext
|
||||
odb = get_adapter('opencode')._resolve_db(DiscoveryContext(workspace=cwd, agent_name='opencode', home_dir=home))
|
||||
if not odb or not os.path.exists(odb):
|
||||
return 'MISSING'
|
||||
try:
|
||||
@@ -315,20 +305,10 @@ def resume_on_disk(s):
|
||||
if agent == 'opencode':
|
||||
u = s.get('opencode_session_id_own')
|
||||
if u:
|
||||
base_dir = f"{home}/.local/share/opencode"
|
||||
odb = None
|
||||
for cand in [f"{base_dir}/opencode.db", f"{base_dir}/storage.db"]:
|
||||
if os.path.exists(cand):
|
||||
odb = cand
|
||||
break
|
||||
if not odb and os.path.isdir(f"{base_dir}/project"):
|
||||
for root, _, files in os.walk(f"{base_dir}/project"):
|
||||
for f in files:
|
||||
if f.endswith(".db"):
|
||||
odb = os.path.join(root, f)
|
||||
break
|
||||
if odb:
|
||||
break
|
||||
# the adapter's db: `opencode debug paths`, which follows XDG_DATA_HOME (Issue #60)
|
||||
from lib_py.agents.registry import get_adapter
|
||||
from lib_py.agents.base import DiscoveryContext
|
||||
odb = get_adapter('opencode')._resolve_db(DiscoveryContext(workspace=cwd, agent_name='opencode', home_dir=home))
|
||||
if not odb or not os.path.exists(odb):
|
||||
return 'MISSING'
|
||||
try:
|
||||
|
||||
Reference in new issue
Block a user