fix chdir

This commit is contained in:
Michael Ingvarsson
2026-07-16 12:27:04 +02:00
parent e54b5f1848
commit b47a3b3146
2 changed files with 35 additions and 49 deletions
+34 -46
View File
@@ -2,7 +2,6 @@
import logging import logging
import re import re
import os
import subprocess import subprocess
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from typing import Any, Callable from typing import Any, Callable
@@ -677,55 +676,44 @@ class AgentDispatcher:
workspace = WorkspaceManager() workspace = WorkspaceManager()
repo_path = workspace.get_repo_path(repo) repo_path = workspace.get_repo_path(repo)
original_cwd = os.getcwd()
changed_dir = False
if os.path.isdir(str(repo_path)):
os.chdir(str(repo_path))
changed_dir = True
results: list[str] = [] results: list[str] = []
# Get authenticated username for reviewer filter
ai_username = "meeks-ai"
try: try:
# Get authenticated username for reviewer filter user = self._client.get_authenticated_user()
ai_username = "meeks-ai" if user:
try: ai_username = user.login
user = self._client.get_authenticated_user() except Exception:
if user: pass
ai_username = user.login
except Exception:
pass
for item in work_items: for item in work_items:
processor: TaskProcessor processor: TaskProcessor
if item.task_type == "pr": if item.task_type == "pr":
processor = PRTaskProcessor( processor = PRTaskProcessor(
client=self._client, client=self._client,
tools=self._tools, tools=self._tools,
model_name=self._model_name, model_name=self._model_name,
repo=repo, repo=repo,
item=item, item=item,
ai_username=ai_username, ai_username=ai_username,
) )
elif item.task_type == "issue": elif item.task_type == "issue":
processor = IssueTaskProcessor( processor = IssueTaskProcessor(
client=self._client, client=self._client,
tools=self._tools, tools=self._tools,
model_name=self._model_name, model_name=self._model_name,
repo=repo, repo=repo,
item=item, item=item,
ai_username=ai_username, ai_username=ai_username,
) )
else: else:
logger.warning(f"Unknown task type: {item.task_type}") logger.warning(f"Unknown task type: {item.task_type}")
results.append(f"SKIP: Unknown task type {item.task_type}") results.append(f"SKIP: Unknown task type {item.task_type}")
continue continue
logger.info(f"Processing {item.task_type} #{item.task_number} via {processor.__class__.__name__}") logger.info(f"Processing {item.task_type} #{item.task_number} via {processor.__class__.__name__}")
result = await processor.process(attempt_limit=self._max_retries) result = await processor.process(attempt_limit=self._max_retries)
results.append(result) results.append(result)
finally:
if changed_dir:
os.chdir(original_cwd)
return results return results
+1 -3
View File
@@ -137,9 +137,7 @@ async def test_dispatch_planning_and_coding_phases(mock_planning_class: MagicMoc
priority=0 priority=0
) )
# We mock os.path.isdir to return True so os.chdir won't fail or crash in test results = await dispatcher.dispatch("meeks/repo1", [work_item])
with patch("os.path.isdir", return_value=True), patch("os.chdir"):
results = await dispatcher.dispatch("meeks/repo1", [work_item])
assert len(results) == 1 assert len(results) == 1
assert results[0] == "PR #1 Created" assert results[0] == "PR #1 Created"