From cc5bb42df0cb32b69b5af7a27a03be836a626198 Mon Sep 17 00:00:00 2001 From: GENTILHOMME Thomas Date: Sun, 1 Feb 2026 23:10:38 +0100 Subject: [PATCH] test(tree-walker): add new workspaces with devDependencies for LocalDependencyTreeLoader UT --- .../tree-loader-virtual/package-lock.json | 92 ++++++++++++++++++- .../fixtures/tree-loader-virtual/package.json | 3 + .../fixtures/workspaces/package-lock.json | 63 +++++++++++++ .../test/fixtures/workspaces/package.json | 11 +++ .../fixtures/workspaces/src/A/package.json | 6 ++ .../fixtures/workspaces/src/B/package.json | 3 + .../npm/LocalDependencyTreeLoader.spec.ts | 17 ++++ 7 files changed, 194 insertions(+), 1 deletion(-) create mode 100644 workspaces/tree-walker/test/fixtures/workspaces/package-lock.json create mode 100644 workspaces/tree-walker/test/fixtures/workspaces/package.json create mode 100644 workspaces/tree-walker/test/fixtures/workspaces/src/A/package.json create mode 100644 workspaces/tree-walker/test/fixtures/workspaces/src/B/package.json diff --git a/workspaces/tree-walker/test/fixtures/tree-loader-virtual/package-lock.json b/workspaces/tree-walker/test/fixtures/tree-loader-virtual/package-lock.json index ae648268..4a805213 100644 --- a/workspaces/tree-walker/test/fixtures/tree-loader-virtual/package-lock.json +++ b/workspaces/tree-walker/test/fixtures/tree-loader-virtual/package-lock.json @@ -7,11 +7,66 @@ "": { "name": "tree-loader-virtual", "version": "1.0.0", - "license": "ISC", "dependencies": { "@types/node": "^24.10.1" + }, + "devDependencies": { + "@types/express": "^5.0.6" } }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", + "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "^2" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { "version": "24.10.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", @@ -21,6 +76,41 @@ "undici-types": "~7.16.0" } }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*" + } + }, "node_modules/undici-types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", diff --git a/workspaces/tree-walker/test/fixtures/tree-loader-virtual/package.json b/workspaces/tree-walker/test/fixtures/tree-loader-virtual/package.json index 10af09d8..530f5b6a 100644 --- a/workspaces/tree-walker/test/fixtures/tree-loader-virtual/package.json +++ b/workspaces/tree-walker/test/fixtures/tree-loader-virtual/package.json @@ -10,5 +10,8 @@ "type": "commonjs", "dependencies": { "@types/node": "^24.10.1" + }, + "devDependencies": { + "@types/express": "^5.0.6" } } diff --git a/workspaces/tree-walker/test/fixtures/workspaces/package-lock.json b/workspaces/tree-walker/test/fixtures/workspaces/package-lock.json new file mode 100644 index 00000000..9e48a32d --- /dev/null +++ b/workspaces/tree-walker/test/fixtures/workspaces/package-lock.json @@ -0,0 +1,63 @@ +{ + "name": "workspaces", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "workspaces", + "version": "1.0.0", + "workspaces": [ + "src/A", + "src/B" + ], + "devDependencies": { + "@types/node": "^25.2.0" + } + }, + "node_modules/@types/node": { + "version": "25.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.0.tgz", + "integrity": "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/undici": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.20.0.tgz", + "integrity": "sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, + "node_modules/workspace_v1": { + "resolved": "src/A", + "link": true + }, + "node_modules/workspace_v2": { + "resolved": "src/B", + "link": true + }, + "src/A": { + "name": "workspace_v1", + "devDependencies": { + "undici": "^7.20.0" + } + }, + "src/B": { + "name": "workspace_v2" + } + } +} diff --git a/workspaces/tree-walker/test/fixtures/workspaces/package.json b/workspaces/tree-walker/test/fixtures/workspaces/package.json new file mode 100644 index 00000000..d995ae23 --- /dev/null +++ b/workspaces/tree-walker/test/fixtures/workspaces/package.json @@ -0,0 +1,11 @@ +{ + "name": "workspaces", + "version": "1.0.0", + "workspaces": [ + "src/A", + "src/B" + ], + "devDependencies": { + "@types/node": "^25.2.0" + } +} diff --git a/workspaces/tree-walker/test/fixtures/workspaces/src/A/package.json b/workspaces/tree-walker/test/fixtures/workspaces/src/A/package.json new file mode 100644 index 00000000..27ffd2dd --- /dev/null +++ b/workspaces/tree-walker/test/fixtures/workspaces/src/A/package.json @@ -0,0 +1,6 @@ +{ + "name": "workspace_v1", + "devDependencies": { + "undici": "^7.20.0" + } +} diff --git a/workspaces/tree-walker/test/fixtures/workspaces/src/B/package.json b/workspaces/tree-walker/test/fixtures/workspaces/src/B/package.json new file mode 100644 index 00000000..01837bae --- /dev/null +++ b/workspaces/tree-walker/test/fixtures/workspaces/src/B/package.json @@ -0,0 +1,3 @@ +{ + "name": "workspace_v2" +} diff --git a/workspaces/tree-walker/test/npm/LocalDependencyTreeLoader.spec.ts b/workspaces/tree-walker/test/npm/LocalDependencyTreeLoader.spec.ts index a65c4207..d5dea65d 100644 --- a/workspaces/tree-walker/test/npm/LocalDependencyTreeLoader.spec.ts +++ b/workspaces/tree-walker/test/npm/LocalDependencyTreeLoader.spec.ts @@ -31,6 +31,23 @@ describe("LocalDependencyTreeLoader", () => { ["@types/node"] ); }); + + it("should load and return workspaces as dependencies without devDependencies", async() => { + const treeLoader = new LocalDependencyTreeLoader(); + + const { dependencies } = await treeLoader.load( + path.join(kFixturesDir, "workspaces") + ); + + const dependenciesName = Array.from(dependencies.keys()); + assert.deepEqual( + dependenciesName, + [ + "workspace_v1", + "workspace_v2" + ] + ); + }); }); describe("arborist.loadActual()", () => {