diff --git a/metagpt/utils/dependency_file.py b/metagpt/utils/dependency_file.py index 9ecead244..65ccd118d 100644 --- a/metagpt/utils/dependency_file.py +++ b/metagpt/utils/dependency_file.py @@ -93,11 +93,10 @@ class DependencyFile: root = self._filename.parent try: - key = Path(filename).relative_to(root) + key = Path(filename).relative_to(root).as_posix() except ValueError: key = filename - key = re.sub(r"\\+", "/", str(key)) - return set(self._dependencies.get(key, {})) + return set(self._dependencies.get(str(key), {})) def delete_file(self): """Delete the dependency file.""" diff --git a/tests/metagpt/test_incremental_dev.py b/tests/metagpt/test_incremental_dev.py index 92001a5d1..c47397dd7 100644 --- a/tests/metagpt/test_incremental_dev.py +++ b/tests/metagpt/test_incremental_dev.py @@ -6,6 +6,7 @@ @File : test_incremental_dev.py """ import os +import shutil import subprocess import time @@ -116,13 +117,14 @@ def get_incremental_dev_result(idea, project_name, use_review=True): if not project_path.exists(): # If the project does not exist, extract the project file try: - if os.name == "nt": - subprocess.run(["tar", "-xf", f"{project_path}.zip", "-C", str(project_path.parent)], check=True) - else: + if shutil.which("unzip"): subprocess.run(["unzip", f"{project_path}.zip", "-d", str(project_path.parent)], check=True) + elif shutil.which("tar"): + subprocess.run(["tar", "-xf", f"{project_path}.zip", "-C", str(project_path.parent)], check=True) logger.info(f"Extracted project {project_name} successfully.") + except FileNotFoundError as e: + raise FileNotFoundError(f"Neither 'unzip' nor 'tar' command found. Error: {e}") except subprocess.CalledProcessError as e: - # If the extraction fails, throw an exception raise Exception(f"Failed to extract project {project_name}. Error: {e}") check_or_create_base_tag(project_path)