diff --git a/metagpt/utils/dependency_file.py b/metagpt/utils/dependency_file.py index c8b3bc4a4..65ccd118d 100644 --- a/metagpt/utils/dependency_file.py +++ b/metagpt/utils/dependency_file.py @@ -93,7 +93,7 @@ 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 return set(self._dependencies.get(str(key), {})) diff --git a/tests/metagpt/test_incremental_dev.py b/tests/metagpt/test_incremental_dev.py index 964d4c757..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 @@ -45,6 +46,7 @@ PROJECT_NAMES = [ ] +@pytest.mark.skip def test_simple_add_calculator(): result = get_incremental_dev_result(IDEAS[0], PROJECT_NAMES[0]) log_and_check_result(result) @@ -115,10 +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: - # Use the tar command to extract the .zip file - subprocess.run(["tar", "-xf", f"{project_path}.zip", "-C", str(project_path.parent)], check=True) + 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)