diff --git a/apps/backend/analysis/analyzers/framework_analyzer.py b/apps/backend/analysis/analyzers/framework_analyzer.py index 1f438ecd..dce09e11 100644 --- a/apps/backend/analysis/analyzers/framework_analyzer.py +++ b/apps/backend/analysis/analyzers/framework_analyzer.py @@ -408,6 +408,6 @@ class FrameworkAnalyzer(BaseAnalyzer): return "pnpm" elif self._exists("yarn.lock"): return "yarn" - elif self._exists("bun.lockb"): + elif self._exists("bun.lockb") or self._exists("bun.lock"): return "bun" return "npm" diff --git a/apps/backend/analysis/test_discovery.py b/apps/backend/analysis/test_discovery.py index 031b0217..a8ac6ca8 100644 --- a/apps/backend/analysis/test_discovery.py +++ b/apps/backend/analysis/test_discovery.py @@ -275,7 +275,7 @@ class TestDiscovery: return "yarn" if (project_dir / "package-lock.json").exists(): return "npm" - if (project_dir / "bun.lockb").exists(): + if (project_dir / "bun.lockb").exists() or (project_dir / "bun.lock").exists(): return "bun" if (project_dir / "uv.lock").exists(): return "uv" diff --git a/apps/backend/core/workspace/git_utils.py b/apps/backend/core/workspace/git_utils.py index d460dc97..c027c4a4 100644 --- a/apps/backend/core/workspace/git_utils.py +++ b/apps/backend/core/workspace/git_utils.py @@ -22,6 +22,7 @@ LOCK_FILES = { "pnpm-lock.yaml", "yarn.lock", "bun.lockb", + "bun.lock", "Pipfile.lock", "poetry.lock", "uv.lock", diff --git a/apps/backend/project/stack_detector.py b/apps/backend/project/stack_detector.py index d7fcbf23..051c685c 100644 --- a/apps/backend/project/stack_detector.py +++ b/apps/backend/project/stack_detector.py @@ -126,7 +126,7 @@ class StackDetector: self.stack.package_managers.append("yarn") if self.parser.file_exists("pnpm-lock.yaml"): self.stack.package_managers.append("pnpm") - if self.parser.file_exists("bun.lockb"): + if self.parser.file_exists("bun.lockb", "bun.lock"): self.stack.package_managers.append("bun") if self.parser.file_exists("deno.json", "deno.jsonc"): self.stack.package_managers.append("deno") diff --git a/tests/test_discovery.py b/tests/test_discovery.py index c83f4626..025cbe4a 100644 --- a/tests/test_discovery.py +++ b/tests/test_discovery.py @@ -80,6 +80,12 @@ class TestPackageManagerDetection: result = discovery.discover(temp_dir) assert result.package_manager == "bun" + def test_detect_bun_text_lockfile(self, discovery, temp_dir): + """Test bun detection via bun.lock (text format, Bun 1.2.0+).""" + (temp_dir / "bun.lock").write_text("") + result = discovery.discover(temp_dir) + assert result.package_manager == "bun" + def test_detect_uv(self, discovery, temp_dir): """Test uv detection via uv.lock.""" (temp_dir / "uv.lock").write_text("")