From 2176035a4ba8123a98db8c1be60a81850a3071ee Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 7 Nov 2025 15:27:00 +0000 Subject: [PATCH 1/3] Initial plan From 10ef75e6f48de568b4363e75897644096a545064 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 7 Nov 2025 15:41:15 +0000 Subject: [PATCH 2/3] Fix build and tests: resolve TypeScript error and add missing test file Co-authored-by: neilime <314088+neilime@users.noreply.github.com> --- .../core/src/services/PackageManagerService.spec.ts | 11 ++++++++++- packages/core/src/services/PackageManagerService.ts | 2 +- .../react/__tests__/test-project/package-lock.json | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 packages/react/__tests__/test-project/package-lock.json diff --git a/packages/core/src/services/PackageManagerService.spec.ts b/packages/core/src/services/PackageManagerService.spec.ts index 70f4f20a..f555af03 100644 --- a/packages/core/src/services/PackageManagerService.spec.ts +++ b/packages/core/src/services/PackageManagerService.spec.ts @@ -1,4 +1,4 @@ -import { existsSync, writeFileSync } from "fs"; +import { existsSync, unlinkSync, writeFileSync } from "fs"; import { safeExec } from "../tests/cli"; import { createProjectForTestFile, deleteTestProject } from "../tests/test-project"; import { PackageJson } from "./PackageJson"; @@ -33,6 +33,15 @@ describe("PackageManagerService", () => { }); it("should throws an error when no package manager is detectable", () => { + // Remove all lock files to ensure no package manager is detected + const lockFiles = ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml']; + lockFiles.forEach(lockFile => { + const lockFilePath = `${testProjectDir}/${lockFile}`; + if (existsSync(lockFilePath)) { + unlinkSync(lockFilePath); + } + }); + expect(() => { PackageManagerService.detectPackageManager(testProjectDir); }).toThrow(`Could not detect package manager in directory: ${testProjectDir}. No lock file found.`); diff --git a/packages/core/src/services/PackageManagerService.ts b/packages/core/src/services/PackageManagerService.ts index 5e6e78fd..30613eee 100644 --- a/packages/core/src/services/PackageManagerService.ts +++ b/packages/core/src/services/PackageManagerService.ts @@ -101,7 +101,7 @@ export class PackageManagerService { static async isPackageInstalled(packageName: string, dirPath: string): Promise { const packageManager = PackageManagerService.detectPackageManager(dirPath); - const args: string[] = [packageManager, "list", "--depth=1", "--json"]; + let args: string[] = [packageManager, "list", "--depth=1", "--json"]; switch (packageManager) { case PackageManagerType.yarn: diff --git a/packages/react/__tests__/test-project/package-lock.json b/packages/react/__tests__/test-project/package-lock.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/packages/react/__tests__/test-project/package-lock.json @@ -0,0 +1 @@ +{} From 3800f8b2fb482ee9901d234d584de737f0fc7f59 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 7 Nov 2025 15:43:53 +0000 Subject: [PATCH 3/3] Improve test package-lock.json files with minimal valid structure Co-authored-by: neilime <314088+neilime@users.noreply.github.com> --- packages/core/__tests__/test-project/package-lock.json | 5 ++++- packages/react/__tests__/test-project/package-lock.json | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/core/__tests__/test-project/package-lock.json b/packages/core/__tests__/test-project/package-lock.json index 0967ef42..48050f9e 100644 --- a/packages/core/__tests__/test-project/package-lock.json +++ b/packages/core/__tests__/test-project/package-lock.json @@ -1 +1,4 @@ -{} +{ + "name": "test-project", + "lockfileVersion": 2 +} diff --git a/packages/react/__tests__/test-project/package-lock.json b/packages/react/__tests__/test-project/package-lock.json index 0967ef42..48050f9e 100644 --- a/packages/react/__tests__/test-project/package-lock.json +++ b/packages/react/__tests__/test-project/package-lock.json @@ -1 +1,4 @@ -{} +{ + "name": "test-project", + "lockfileVersion": 2 +}