intershell 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +301 -0
- package/dist/commands/ci/act.d.ts +13 -0
- package/dist/commands/ci/act.d.ts.map +1 -0
- package/dist/commands/ci/act.js +89 -0
- package/dist/commands/ci/act.js.map +1 -0
- package/dist/commands/ci/attach-affected.d.ts +12 -0
- package/dist/commands/ci/attach-affected.d.ts.map +1 -0
- package/dist/commands/ci/attach-affected.js +83 -0
- package/dist/commands/ci/attach-affected.js.map +1 -0
- package/dist/commands/ci/attach-service-ports.d.ts +10 -0
- package/dist/commands/ci/attach-service-ports.d.ts.map +1 -0
- package/dist/commands/ci/attach-service-ports.js +25 -0
- package/dist/commands/ci/attach-service-ports.js.map +1 -0
- package/dist/commands/commit-check.d.ts +13 -0
- package/dist/commands/commit-check.d.ts.map +1 -0
- package/dist/commands/commit-check.js +110 -0
- package/dist/commands/commit-check.js.map +1 -0
- package/dist/commands/commit.d.ts +16 -0
- package/dist/commands/commit.d.ts.map +1 -0
- package/dist/commands/commit.js +91 -0
- package/dist/commands/commit.js.map +1 -0
- package/dist/commands/dev/check.d.ts +13 -0
- package/dist/commands/dev/check.d.ts.map +1 -0
- package/dist/commands/dev/check.js +91 -0
- package/dist/commands/dev/check.js.map +1 -0
- package/dist/commands/dev/cleanup.d.ts +10 -0
- package/dist/commands/dev/cleanup.d.ts.map +1 -0
- package/dist/commands/dev/cleanup.js +28 -0
- package/dist/commands/dev/cleanup.js.map +1 -0
- package/dist/commands/dev/rm.d.ts +12 -0
- package/dist/commands/dev/rm.d.ts.map +1 -0
- package/dist/commands/dev/rm.js +49 -0
- package/dist/commands/dev/rm.js.map +1 -0
- package/dist/commands/dev/setup.d.ts +10 -0
- package/dist/commands/dev/setup.d.ts.map +1 -0
- package/dist/commands/dev/setup.js +40 -0
- package/dist/commands/dev/setup.js.map +1 -0
- package/dist/commands/local/cleanup.d.ts +12 -0
- package/dist/commands/local/cleanup.d.ts.map +1 -0
- package/dist/commands/local/cleanup.js +62 -0
- package/dist/commands/local/cleanup.js.map +1 -0
- package/dist/commands/local/setup.d.ts +11 -0
- package/dist/commands/local/setup.d.ts.map +1 -0
- package/dist/commands/local/setup.js +55 -0
- package/dist/commands/local/setup.js.map +1 -0
- package/dist/commands/local/vscode.d.ts +17 -0
- package/dist/commands/local/vscode.d.ts.map +1 -0
- package/dist/commands/local/vscode.js +94 -0
- package/dist/commands/local/vscode.js.map +1 -0
- package/dist/commands/update-package-json.d.ts +12 -0
- package/dist/commands/update-package-json.d.ts.map +1 -0
- package/dist/commands/update-package-json.js +82 -0
- package/dist/commands/update-package-json.js.map +1 -0
- package/dist/commands/version/apply.d.ts +16 -0
- package/dist/commands/version/apply.d.ts.map +1 -0
- package/dist/commands/version/apply.js +120 -0
- package/dist/commands/version/apply.js.map +1 -0
- package/dist/commands/version/ci.d.ts +12 -0
- package/dist/commands/version/ci.d.ts.map +1 -0
- package/dist/commands/version/ci.js +67 -0
- package/dist/commands/version/ci.js.map +1 -0
- package/dist/commands/version/prepare.d.ts +19 -0
- package/dist/commands/version/prepare.d.ts.map +1 -0
- package/dist/commands/version/prepare.js +153 -0
- package/dist/commands/version/prepare.js.map +1 -0
- package/dist/core/colorify.d.ts +21 -0
- package/dist/core/colorify.d.ts.map +1 -0
- package/dist/core/colorify.js +56 -0
- package/dist/core/colorify.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/types.d.ts +181 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +5 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/wrapshell.d.ts +19 -0
- package/dist/core/wrapshell.d.ts.map +1 -0
- package/dist/core/wrapshell.js +323 -0
- package/dist/core/wrapshell.js.map +1 -0
- package/dist/entities/affected/affected.d.ts +4 -0
- package/dist/entities/affected/affected.d.ts.map +1 -0
- package/dist/entities/affected/affected.js +20 -0
- package/dist/entities/affected/affected.js.map +1 -0
- package/dist/entities/affected/affected.test.d.ts +2 -0
- package/dist/entities/affected/affected.test.d.ts.map +1 -0
- package/dist/entities/affected/affected.test.js +305 -0
- package/dist/entities/affected/affected.test.js.map +1 -0
- package/dist/entities/affected/index.d.ts +2 -0
- package/dist/entities/affected/index.d.ts.map +1 -0
- package/dist/entities/affected/index.js +2 -0
- package/dist/entities/affected/index.js.map +1 -0
- package/dist/entities/branch/branch.d.ts +8 -0
- package/dist/entities/branch/branch.d.ts.map +1 -0
- package/dist/entities/branch/branch.js +74 -0
- package/dist/entities/branch/branch.js.map +1 -0
- package/dist/entities/branch/branch.test.d.ts +2 -0
- package/dist/entities/branch/branch.test.d.ts.map +1 -0
- package/dist/entities/branch/branch.test.js +316 -0
- package/dist/entities/branch/branch.test.js.map +1 -0
- package/dist/entities/branch/branch.types.d.ts +6 -0
- package/dist/entities/branch/branch.types.d.ts.map +1 -0
- package/dist/entities/branch/branch.types.js +2 -0
- package/dist/entities/branch/branch.types.js.map +1 -0
- package/dist/entities/branch/index.d.ts +3 -0
- package/dist/entities/branch/index.d.ts.map +1 -0
- package/dist/entities/branch/index.js +3 -0
- package/dist/entities/branch/index.js.map +1 -0
- package/dist/entities/commit/commit.d.ts +15 -0
- package/dist/entities/commit/commit.d.ts.map +1 -0
- package/dist/entities/commit/commit.js +196 -0
- package/dist/entities/commit/commit.js.map +1 -0
- package/dist/entities/commit/commit.test.d.ts +26 -0
- package/dist/entities/commit/commit.test.d.ts.map +1 -0
- package/dist/entities/commit/commit.test.js +550 -0
- package/dist/entities/commit/commit.test.js.map +1 -0
- package/dist/entities/commit/commit.types.d.ts +49 -0
- package/dist/entities/commit/commit.types.d.ts.map +1 -0
- package/dist/entities/commit/commit.types.js +31 -0
- package/dist/entities/commit/commit.types.js.map +1 -0
- package/dist/entities/commit/index.d.ts +3 -0
- package/dist/entities/commit/index.d.ts.map +1 -0
- package/dist/entities/commit/index.js +3 -0
- package/dist/entities/commit/index.js.map +1 -0
- package/dist/entities/commit/pr.d.ts +11 -0
- package/dist/entities/commit/pr.d.ts.map +1 -0
- package/dist/entities/commit/pr.js +201 -0
- package/dist/entities/commit/pr.js.map +1 -0
- package/dist/entities/commit/pr.test.d.ts +2 -0
- package/dist/entities/commit/pr.test.d.ts.map +1 -0
- package/dist/entities/commit/pr.test.js +782 -0
- package/dist/entities/commit/pr.test.js.map +1 -0
- package/dist/entities/compose/compose.d.ts +18 -0
- package/dist/entities/compose/compose.d.ts.map +1 -0
- package/dist/entities/compose/compose.js +197 -0
- package/dist/entities/compose/compose.js.map +1 -0
- package/dist/entities/compose/compose.test.d.ts +2 -0
- package/dist/entities/compose/compose.test.d.ts.map +1 -0
- package/dist/entities/compose/compose.test.js +406 -0
- package/dist/entities/compose/compose.test.js.map +1 -0
- package/dist/entities/compose/compose.types.d.ts +77 -0
- package/dist/entities/compose/compose.types.d.ts.map +1 -0
- package/dist/entities/compose/compose.types.js +2 -0
- package/dist/entities/compose/compose.types.js.map +1 -0
- package/dist/entities/compose/index.d.ts +3 -0
- package/dist/entities/compose/index.d.ts.map +1 -0
- package/dist/entities/compose/index.js +3 -0
- package/dist/entities/compose/index.js.map +1 -0
- package/dist/entities/entities.shell.d.ts +29 -0
- package/dist/entities/entities.shell.d.ts.map +1 -0
- package/dist/entities/entities.shell.js +27 -0
- package/dist/entities/entities.shell.js.map +1 -0
- package/dist/entities/entities.shell.test.d.ts +2 -0
- package/dist/entities/entities.shell.test.d.ts.map +1 -0
- package/dist/entities/entities.shell.test.js +23 -0
- package/dist/entities/entities.shell.test.js.map +1 -0
- package/dist/entities/index.d.ts +12 -0
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +12 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/intershell-config/intershell-config.d.ts +11 -0
- package/dist/entities/intershell-config/intershell-config.d.ts.map +1 -0
- package/dist/entities/intershell-config/intershell-config.default.d.ts +188 -0
- package/dist/entities/intershell-config/intershell-config.default.d.ts.map +1 -0
- package/dist/entities/intershell-config/intershell-config.default.js +225 -0
- package/dist/entities/intershell-config/intershell-config.default.js.map +1 -0
- package/dist/entities/intershell-config/intershell-config.js +132 -0
- package/dist/entities/intershell-config/intershell-config.js.map +1 -0
- package/dist/entities/intershell-config/intershell-config.test.d.ts +2 -0
- package/dist/entities/intershell-config/intershell-config.test.d.ts.map +1 -0
- package/dist/entities/intershell-config/intershell-config.test.js +102 -0
- package/dist/entities/intershell-config/intershell-config.test.js.map +1 -0
- package/dist/entities/intershell-config/intershell-config.types.d.ts +103 -0
- package/dist/entities/intershell-config/intershell-config.types.d.ts.map +1 -0
- package/dist/entities/intershell-config/intershell-config.types.js +2 -0
- package/dist/entities/intershell-config/intershell-config.types.js.map +1 -0
- package/dist/entities/package/index.d.ts +4 -0
- package/dist/entities/package/index.d.ts.map +1 -0
- package/dist/entities/package/index.js +4 -0
- package/dist/entities/package/index.js.map +1 -0
- package/dist/entities/package/package.d.ts +49 -0
- package/dist/entities/package/package.d.ts.map +1 -0
- package/dist/entities/package/package.js +234 -0
- package/dist/entities/package/package.js.map +1 -0
- package/dist/entities/package/package.shell.d.ts +48 -0
- package/dist/entities/package/package.shell.d.ts.map +1 -0
- package/dist/entities/package/package.shell.js +118 -0
- package/dist/entities/package/package.shell.js.map +1 -0
- package/dist/entities/package/package.test.d.ts +23 -0
- package/dist/entities/package/package.test.d.ts.map +1 -0
- package/dist/entities/package/package.test.js +637 -0
- package/dist/entities/package/package.test.js.map +1 -0
- package/dist/entities/package/package.types.d.ts +48 -0
- package/dist/entities/package/package.types.d.ts.map +1 -0
- package/dist/entities/package/package.types.js +2 -0
- package/dist/entities/package/package.types.js.map +1 -0
- package/dist/entities/package-changelog/index.d.ts +4 -0
- package/dist/entities/package-changelog/index.d.ts.map +1 -0
- package/dist/entities/package-changelog/index.js +4 -0
- package/dist/entities/package-changelog/index.js.map +1 -0
- package/dist/entities/package-changelog/package-changelog.d.ts +20 -0
- package/dist/entities/package-changelog/package-changelog.d.ts.map +1 -0
- package/dist/entities/package-changelog/package-changelog.js +59 -0
- package/dist/entities/package-changelog/package-changelog.js.map +1 -0
- package/dist/entities/package-changelog/package-changelog.types.d.ts +25 -0
- package/dist/entities/package-changelog/package-changelog.types.d.ts.map +1 -0
- package/dist/entities/package-changelog/package-changelog.types.js +2 -0
- package/dist/entities/package-changelog/package-changelog.types.js.map +1 -0
- package/dist/entities/package-changelog/template.d.ts +20 -0
- package/dist/entities/package-changelog/template.d.ts.map +1 -0
- package/dist/entities/package-changelog/template.default.d.ts +10 -0
- package/dist/entities/package-changelog/template.default.d.ts.map +1 -0
- package/dist/entities/package-changelog/template.default.js +85 -0
- package/dist/entities/package-changelog/template.default.js.map +1 -0
- package/dist/entities/package-changelog/template.js +90 -0
- package/dist/entities/package-changelog/template.js.map +1 -0
- package/dist/entities/package-commits/dependency-analyzer.d.ts +35 -0
- package/dist/entities/package-commits/dependency-analyzer.d.ts.map +1 -0
- package/dist/entities/package-commits/dependency-analyzer.js +169 -0
- package/dist/entities/package-commits/dependency-analyzer.js.map +1 -0
- package/dist/entities/package-commits/dependency-analyzer.test.d.ts +2 -0
- package/dist/entities/package-commits/dependency-analyzer.test.d.ts.map +1 -0
- package/dist/entities/package-commits/dependency-analyzer.test.js +25 -0
- package/dist/entities/package-commits/dependency-analyzer.test.js.map +1 -0
- package/dist/entities/package-commits/index.d.ts +3 -0
- package/dist/entities/package-commits/index.d.ts.map +1 -0
- package/dist/entities/package-commits/index.js +3 -0
- package/dist/entities/package-commits/index.js.map +1 -0
- package/dist/entities/package-commits/package-commits.d.ts +33 -0
- package/dist/entities/package-commits/package-commits.d.ts.map +1 -0
- package/dist/entities/package-commits/package-commits.js +149 -0
- package/dist/entities/package-commits/package-commits.js.map +1 -0
- package/dist/entities/package-commits/package-commits.test.d.ts +2 -0
- package/dist/entities/package-commits/package-commits.test.d.ts.map +1 -0
- package/dist/entities/package-commits/package-commits.test.js +40 -0
- package/dist/entities/package-commits/package-commits.test.js.map +1 -0
- package/dist/entities/package-tags/index.d.ts +2 -0
- package/dist/entities/package-tags/index.d.ts.map +1 -0
- package/dist/entities/package-tags/index.js +2 -0
- package/dist/entities/package-tags/index.js.map +1 -0
- package/dist/entities/package-tags/package-tags.d.ts +24 -0
- package/dist/entities/package-tags/package-tags.d.ts.map +1 -0
- package/dist/entities/package-tags/package-tags.js +197 -0
- package/dist/entities/package-tags/package-tags.js.map +1 -0
- package/dist/entities/package-tags/package-tags.test.d.ts +2 -0
- package/dist/entities/package-tags/package-tags.test.d.ts.map +1 -0
- package/dist/entities/package-tags/package-tags.test.js +60 -0
- package/dist/entities/package-tags/package-tags.test.js.map +1 -0
- package/dist/entities/package-version/index.d.ts +3 -0
- package/dist/entities/package-version/index.d.ts.map +1 -0
- package/dist/entities/package-version/index.js +3 -0
- package/dist/entities/package-version/index.js.map +1 -0
- package/dist/entities/package-version/package-version.d.ts +16 -0
- package/dist/entities/package-version/package-version.d.ts.map +1 -0
- package/dist/entities/package-version/package-version.js +166 -0
- package/dist/entities/package-version/package-version.js.map +1 -0
- package/dist/entities/package-version/package-version.test.d.ts +2 -0
- package/dist/entities/package-version/package-version.test.d.ts.map +1 -0
- package/dist/entities/package-version/package-version.test.js +113 -0
- package/dist/entities/package-version/package-version.test.js.map +1 -0
- package/dist/entities/package-version/package-version.types.d.ts +31 -0
- package/dist/entities/package-version/package-version.types.d.ts.map +1 -0
- package/dist/entities/package-version/package-version.types.js +2 -0
- package/dist/entities/package-version/package-version.types.js.map +1 -0
- package/dist/entities/tag/index.d.ts +3 -0
- package/dist/entities/tag/index.d.ts.map +1 -0
- package/dist/entities/tag/index.js +3 -0
- package/dist/entities/tag/index.js.map +1 -0
- package/dist/entities/tag/tag.d.ts +24 -0
- package/dist/entities/tag/tag.d.ts.map +1 -0
- package/dist/entities/tag/tag.js +168 -0
- package/dist/entities/tag/tag.js.map +1 -0
- package/dist/entities/tag/tag.test.d.ts +2 -0
- package/dist/entities/tag/tag.test.d.ts.map +1 -0
- package/dist/entities/tag/tag.test.js +638 -0
- package/dist/entities/tag/tag.test.js.map +1 -0
- package/dist/entities/tag/tag.types.d.ts +35 -0
- package/dist/entities/tag/tag.types.d.ts.map +1 -0
- package/dist/entities/tag/tag.types.js +2 -0
- package/dist/entities/tag/tag.types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/package.json +73 -0
- package/src/commands/ci/act.ts +95 -0
- package/src/commands/ci/attach-affected.ts +93 -0
- package/src/commands/ci/attach-service-ports.ts +31 -0
- package/src/commands/commit-check.ts +124 -0
- package/src/commands/commit.ts +103 -0
- package/src/commands/dev/check.ts +117 -0
- package/src/commands/dev/cleanup.ts +34 -0
- package/src/commands/dev/rm.ts +66 -0
- package/src/commands/dev/setup.ts +48 -0
- package/src/commands/local/cleanup.ts +74 -0
- package/src/commands/local/setup.ts +68 -0
- package/src/commands/local/vscode.ts +118 -0
- package/src/commands/update-package-json.ts +104 -0
- package/src/commands/version/apply.ts +156 -0
- package/src/commands/version/ci.ts +85 -0
- package/src/commands/version/prepare.ts +217 -0
- package/src/core/colorify.ts +61 -0
- package/src/core/index.ts +3 -0
- package/src/core/types.ts +262 -0
- package/src/core/wrapshell.ts +388 -0
- package/src/entities/affected/affected.test.ts +427 -0
- package/src/entities/affected/affected.ts +22 -0
- package/src/entities/affected/index.ts +1 -0
- package/src/entities/branch/branch.test.ts +348 -0
- package/src/entities/branch/branch.ts +89 -0
- package/src/entities/branch/branch.types.ts +5 -0
- package/src/entities/branch/index.ts +2 -0
- package/src/entities/commit/commit.test.ts +769 -0
- package/src/entities/commit/commit.ts +245 -0
- package/src/entities/commit/commit.types.ts +81 -0
- package/src/entities/commit/index.ts +2 -0
- package/src/entities/commit/pr.test.ts +860 -0
- package/src/entities/commit/pr.ts +241 -0
- package/src/entities/compose/compose.test.ts +496 -0
- package/src/entities/compose/compose.ts +251 -0
- package/src/entities/compose/compose.types.ts +88 -0
- package/src/entities/compose/index.ts +2 -0
- package/src/entities/entities.shell.test.ts +35 -0
- package/src/entities/entities.shell.ts +81 -0
- package/src/entities/index.ts +11 -0
- package/src/entities/intershell-config/intershell-config.default.ts +229 -0
- package/src/entities/intershell-config/intershell-config.test.ts +117 -0
- package/src/entities/intershell-config/intershell-config.ts +143 -0
- package/src/entities/intershell-config/intershell-config.types.ts +118 -0
- package/src/entities/package/index.ts +3 -0
- package/src/entities/package/package.shell.ts +124 -0
- package/src/entities/package/package.test.ts +830 -0
- package/src/entities/package/package.ts +267 -0
- package/src/entities/package/package.types.ts +49 -0
- package/src/entities/package-changelog/index.ts +3 -0
- package/src/entities/package-changelog/package-changelog.ts +81 -0
- package/src/entities/package-changelog/package-changelog.types.ts +30 -0
- package/src/entities/package-changelog/template.default.ts +109 -0
- package/src/entities/package-changelog/template.ts +118 -0
- package/src/entities/package-commits/dependency-analyzer.test.ts +29 -0
- package/src/entities/package-commits/dependency-analyzer.ts +194 -0
- package/src/entities/package-commits/index.ts +2 -0
- package/src/entities/package-commits/package-commits.test.ts +44 -0
- package/src/entities/package-commits/package-commits.ts +191 -0
- package/src/entities/package-tags/index.ts +1 -0
- package/src/entities/package-tags/package-tags.test.ts +73 -0
- package/src/entities/package-tags/package-tags.ts +234 -0
- package/src/entities/package-version/index.ts +2 -0
- package/src/entities/package-version/package-version.test.ts +141 -0
- package/src/entities/package-version/package-version.ts +234 -0
- package/src/entities/package-version/package-version.types.ts +35 -0
- package/src/entities/tag/index.ts +2 -0
- package/src/entities/tag/tag.test.ts +844 -0
- package/src/entities/tag/tag.ts +208 -0
- package/src/entities/tag/tag.types.ts +37 -0
- package/src/index.ts +7 -0
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, mock } from "bun:test";
|
|
2
|
+
import type { $ } from "bun";
|
|
3
|
+
|
|
4
|
+
describe("EntityAffected", async () => {
|
|
5
|
+
beforeEach(async () => {
|
|
6
|
+
// Import and mock entitiesShell methods directly
|
|
7
|
+
const { entitiesShell } = await import("../entities.shell");
|
|
8
|
+
|
|
9
|
+
// Mock turboRunBuild directly
|
|
10
|
+
entitiesShell.turboRunBuild = mock(
|
|
11
|
+
() =>
|
|
12
|
+
({
|
|
13
|
+
exitCode: 0,
|
|
14
|
+
json: () => Promise.resolve({ packages: ["package1", "package2"] }),
|
|
15
|
+
text: () => Promise.resolve('{"packages":["package1","package2"]}'),
|
|
16
|
+
}) as unknown as $.ShellPromise,
|
|
17
|
+
);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
describe("getAffectedPackages", () => {
|
|
21
|
+
it("should call EntityTag.getBaseCommitSha with correct parameters", async () => {
|
|
22
|
+
// Import and mock EntityTag first
|
|
23
|
+
const { EntityTag } = await import("../tag");
|
|
24
|
+
|
|
25
|
+
// Store original method
|
|
26
|
+
const originalGetBaseCommitSha = EntityTag.getBaseCommitSha;
|
|
27
|
+
|
|
28
|
+
// Mock EntityTag.getBaseCommitSha
|
|
29
|
+
const mockGetBaseTagSha = mock(() => Promise.resolve("resolved-sha"));
|
|
30
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
31
|
+
|
|
32
|
+
// Now import EntityAffected after mocking
|
|
33
|
+
const { EntityAffected } = await import("./affected");
|
|
34
|
+
|
|
35
|
+
// Act
|
|
36
|
+
await EntityAffected.getAffectedPackages("custom-sha").catch(() => undefined);
|
|
37
|
+
|
|
38
|
+
// Assert
|
|
39
|
+
expect(mockGetBaseTagSha).toHaveBeenCalledWith("custom-sha");
|
|
40
|
+
|
|
41
|
+
// Restore original method
|
|
42
|
+
EntityTag.getBaseCommitSha = originalGetBaseCommitSha;
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it("should call EntityTag.getBaseCommitSha with undefined when no baseSha provided", async () => {
|
|
46
|
+
// Import and mock EntityTag first
|
|
47
|
+
const { EntityTag } = await import("../tag");
|
|
48
|
+
|
|
49
|
+
// Store original method
|
|
50
|
+
const originalGetBaseCommitSha = EntityTag.getBaseCommitSha;
|
|
51
|
+
|
|
52
|
+
// Mock EntityTag.getBaseCommitSha
|
|
53
|
+
const mockGetBaseTagSha = mock(() => Promise.resolve("resolved-sha"));
|
|
54
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
55
|
+
|
|
56
|
+
// Now import EntityAffected after mocking
|
|
57
|
+
const { EntityAffected } = await import("./affected");
|
|
58
|
+
|
|
59
|
+
// Act
|
|
60
|
+
await EntityAffected.getAffectedPackages().catch(() => undefined);
|
|
61
|
+
|
|
62
|
+
// Assert
|
|
63
|
+
expect(mockGetBaseTagSha).toHaveBeenCalledWith(undefined);
|
|
64
|
+
|
|
65
|
+
// Restore original method
|
|
66
|
+
EntityTag.getBaseCommitSha = originalGetBaseCommitSha;
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it("should handle EntityTag.getBaseCommitSha throwing an error", async () => {
|
|
70
|
+
// Import and mock EntityTag first
|
|
71
|
+
const { EntityTag } = await import("../tag");
|
|
72
|
+
|
|
73
|
+
// Store original method
|
|
74
|
+
const originalGetBaseCommitSha = EntityTag.getBaseCommitSha;
|
|
75
|
+
|
|
76
|
+
// Mock EntityTag.getBaseCommitSha to throw error
|
|
77
|
+
const mockGetBaseTagSha = mock(() => Promise.reject(new Error("Failed to get base tag SHA")));
|
|
78
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
79
|
+
|
|
80
|
+
// Now import EntityAffected after mocking
|
|
81
|
+
const { EntityAffected } = await import("./affected");
|
|
82
|
+
|
|
83
|
+
// Act & Assert
|
|
84
|
+
expect(EntityAffected.getAffectedPackages()).rejects.toThrow("Failed to get base tag SHA");
|
|
85
|
+
|
|
86
|
+
// Restore original method
|
|
87
|
+
EntityTag.getBaseCommitSha = originalGetBaseCommitSha;
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
describe("function structure and behavior", () => {
|
|
92
|
+
it("should have getAffectedPackages function", async () => {
|
|
93
|
+
// Import fresh EntityAffected module
|
|
94
|
+
const { EntityAffected } = await import("./affected");
|
|
95
|
+
|
|
96
|
+
expect(EntityAffected.getAffectedPackages).toBeDefined();
|
|
97
|
+
expect(typeof EntityAffected.getAffectedPackages).toBe("function");
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it("should return a promise", async () => {
|
|
101
|
+
// Import and mock EntityTag first
|
|
102
|
+
const { EntityTag } = await import("../tag");
|
|
103
|
+
|
|
104
|
+
// Store original method
|
|
105
|
+
const originalGetBaseCommitSha = EntityTag.getBaseCommitSha;
|
|
106
|
+
|
|
107
|
+
// Mock the EntityTag to prevent actual execution
|
|
108
|
+
const mockGetBaseTagSha = mock(() => Promise.resolve("test-sha"));
|
|
109
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
110
|
+
|
|
111
|
+
// Now import EntityAffected after mocking
|
|
112
|
+
const { EntityAffected } = await import("./affected");
|
|
113
|
+
|
|
114
|
+
const result = EntityAffected.getAffectedPackages();
|
|
115
|
+
expect(result).toBeInstanceOf(Promise);
|
|
116
|
+
|
|
117
|
+
// Restore original method
|
|
118
|
+
EntityTag.getBaseCommitSha = originalGetBaseCommitSha;
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
it("should accept optional baseSha parameter", async () => {
|
|
122
|
+
// Import fresh EntityAffected module
|
|
123
|
+
const { EntityAffected } = await import("./affected");
|
|
124
|
+
|
|
125
|
+
// This test verifies the function signature
|
|
126
|
+
// The function has 2 parameters: baseSha (optional) and to (with default value)
|
|
127
|
+
// But function.length only counts parameters before the first default value, so it's 1
|
|
128
|
+
expect(EntityAffected.getAffectedPackages.length).toBe(1);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
it("should accept optional to parameter with default value", async () => {
|
|
132
|
+
// Import fresh EntityAffected module
|
|
133
|
+
const { EntityAffected } = await import("./affected");
|
|
134
|
+
|
|
135
|
+
// This test verifies the function signature
|
|
136
|
+
// The function has 2 parameters: baseSha (optional) and to (with default value)
|
|
137
|
+
// But function.length only counts parameters before the first default value, so it's 1
|
|
138
|
+
expect(EntityAffected.getAffectedPackages.length).toBe(1);
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
describe("parameter handling", () => {
|
|
143
|
+
it("should handle string baseSha parameter", async () => {
|
|
144
|
+
// Import EntityAffected first
|
|
145
|
+
const { EntityAffected } = await import("./affected");
|
|
146
|
+
|
|
147
|
+
// Now import EntityTag and mock its method
|
|
148
|
+
const { EntityTag } = await import("../tag");
|
|
149
|
+
const mockGetBaseTagSha = mock(() => Promise.resolve("resolved-sha"));
|
|
150
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
151
|
+
|
|
152
|
+
// Act
|
|
153
|
+
await EntityAffected.getAffectedPackages("test-sha").catch(() => undefined);
|
|
154
|
+
|
|
155
|
+
// Assert
|
|
156
|
+
expect(mockGetBaseTagSha).toHaveBeenCalledWith("test-sha");
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
it("should handle undefined baseSha parameter", async () => {
|
|
160
|
+
// Import EntityAffected first
|
|
161
|
+
const { EntityAffected } = await import("./affected");
|
|
162
|
+
|
|
163
|
+
// Now import EntityTag and mock its method
|
|
164
|
+
const { EntityTag } = await import("../tag");
|
|
165
|
+
const mockGetBaseTagSha = mock(() => Promise.resolve("resolved-sha"));
|
|
166
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
167
|
+
|
|
168
|
+
// Act
|
|
169
|
+
await EntityAffected.getAffectedPackages().catch(() => undefined);
|
|
170
|
+
|
|
171
|
+
// Assert
|
|
172
|
+
expect(mockGetBaseTagSha).toHaveBeenCalledWith(undefined);
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
it("should handle custom to parameter", async () => {
|
|
176
|
+
// Import EntityAffected first
|
|
177
|
+
const { EntityAffected } = await import("./affected");
|
|
178
|
+
|
|
179
|
+
// Now import EntityTag and mock its method
|
|
180
|
+
const { EntityTag } = await import("../tag");
|
|
181
|
+
const mockGetBaseTagSha = mock(() => Promise.resolve("resolved-sha"));
|
|
182
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
183
|
+
|
|
184
|
+
// Act
|
|
185
|
+
await EntityAffected.getAffectedPackages("test-sha", "custom-branch").catch(() => undefined);
|
|
186
|
+
|
|
187
|
+
// Assert
|
|
188
|
+
expect(mockGetBaseTagSha).toHaveBeenCalledWith("test-sha");
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
it("should use HEAD as default to parameter", async () => {
|
|
192
|
+
// Import EntityAffected first
|
|
193
|
+
const { EntityAffected } = await import("./affected");
|
|
194
|
+
|
|
195
|
+
// Now import EntityTag and mock its method
|
|
196
|
+
const { EntityTag } = await import("../tag");
|
|
197
|
+
const mockGetBaseTagSha = mock(() => Promise.resolve("resolved-sha"));
|
|
198
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
199
|
+
|
|
200
|
+
// Act
|
|
201
|
+
await EntityAffected.getAffectedPackages("test-sha").catch(() => undefined);
|
|
202
|
+
|
|
203
|
+
// Assert
|
|
204
|
+
expect(mockGetBaseTagSha).toHaveBeenCalledWith("test-sha");
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
describe("successful execution", () => {
|
|
209
|
+
it("should return affected packages from turbo output", async () => {
|
|
210
|
+
// Import and mock EntityTag first
|
|
211
|
+
const { EntityTag } = await import("../tag");
|
|
212
|
+
const mockGetBaseTagSha = mock(() => Promise.resolve("resolved-sha"));
|
|
213
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
214
|
+
|
|
215
|
+
// Import and mock entitiesShell
|
|
216
|
+
const { entitiesShell } = await import("../entities.shell");
|
|
217
|
+
const mockTurboRunBuild = mock(
|
|
218
|
+
() =>
|
|
219
|
+
({
|
|
220
|
+
text: () =>
|
|
221
|
+
Promise.resolve(
|
|
222
|
+
JSON.stringify({
|
|
223
|
+
tasks: [
|
|
224
|
+
{ package: "package1" },
|
|
225
|
+
{ package: "package2" },
|
|
226
|
+
{ package: "//" }, // root package should be filtered out
|
|
227
|
+
],
|
|
228
|
+
}),
|
|
229
|
+
),
|
|
230
|
+
}) as unknown as $.ShellPromise,
|
|
231
|
+
);
|
|
232
|
+
entitiesShell.turboRunBuild = mockTurboRunBuild as unknown as (
|
|
233
|
+
args: string[],
|
|
234
|
+
) => $.ShellPromise;
|
|
235
|
+
|
|
236
|
+
// Now import EntityAffected after mocking
|
|
237
|
+
const { EntityAffected } = await import("./affected");
|
|
238
|
+
|
|
239
|
+
// Act
|
|
240
|
+
const result = await EntityAffected.getAffectedPackages("test-sha");
|
|
241
|
+
|
|
242
|
+
// Assert
|
|
243
|
+
expect(result).toEqual(["package1", "package2"]);
|
|
244
|
+
expect(mockTurboRunBuild).toHaveBeenCalledWith(["--filter=...[resolved-sha...HEAD]"]);
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
it("should handle empty tasks array", async () => {
|
|
248
|
+
// Import and mock EntityTag first
|
|
249
|
+
const { EntityTag } = await import("../tag");
|
|
250
|
+
const mockGetBaseTagSha = mock(() => Promise.resolve("resolved-sha"));
|
|
251
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
252
|
+
|
|
253
|
+
// Import and mock entitiesShell
|
|
254
|
+
const { entitiesShell } = await import("../entities.shell");
|
|
255
|
+
const mockTurboRunBuild = mock(
|
|
256
|
+
() =>
|
|
257
|
+
({
|
|
258
|
+
text: () =>
|
|
259
|
+
Promise.resolve(
|
|
260
|
+
JSON.stringify({
|
|
261
|
+
tasks: [],
|
|
262
|
+
}),
|
|
263
|
+
),
|
|
264
|
+
}) as unknown as $.ShellPromise,
|
|
265
|
+
);
|
|
266
|
+
entitiesShell.turboRunBuild = mockTurboRunBuild as unknown as (
|
|
267
|
+
args: string[],
|
|
268
|
+
) => $.ShellPromise;
|
|
269
|
+
|
|
270
|
+
// Now import EntityAffected after mocking
|
|
271
|
+
const { EntityAffected } = await import("./affected");
|
|
272
|
+
|
|
273
|
+
// Act
|
|
274
|
+
const result = await EntityAffected.getAffectedPackages("test-sha");
|
|
275
|
+
|
|
276
|
+
// Assert
|
|
277
|
+
expect(result).toEqual([]);
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
it("should handle missing tasks property", async () => {
|
|
281
|
+
// Import and mock EntityTag first
|
|
282
|
+
const { EntityTag } = await import("../tag");
|
|
283
|
+
const mockGetBaseTagSha = mock(() => Promise.resolve("resolved-sha"));
|
|
284
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
285
|
+
|
|
286
|
+
// Import and mock entitiesShell
|
|
287
|
+
const { entitiesShell } = await import("../entities.shell");
|
|
288
|
+
const mockTurboRunBuild = mock(
|
|
289
|
+
() =>
|
|
290
|
+
({
|
|
291
|
+
text: () =>
|
|
292
|
+
Promise.resolve(
|
|
293
|
+
JSON.stringify({
|
|
294
|
+
packages: ["package1", "package2"],
|
|
295
|
+
}),
|
|
296
|
+
),
|
|
297
|
+
}) as unknown as $.ShellPromise,
|
|
298
|
+
);
|
|
299
|
+
entitiesShell.turboRunBuild = mockTurboRunBuild as unknown as (
|
|
300
|
+
args: string[],
|
|
301
|
+
) => $.ShellPromise;
|
|
302
|
+
|
|
303
|
+
// Now import EntityAffected after mocking
|
|
304
|
+
const { EntityAffected } = await import("./affected");
|
|
305
|
+
|
|
306
|
+
// Act
|
|
307
|
+
const result = await EntityAffected.getAffectedPackages("test-sha");
|
|
308
|
+
|
|
309
|
+
// Assert
|
|
310
|
+
expect(result).toEqual([]);
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
it("should filter out root package and undefined values", async () => {
|
|
314
|
+
// Import and mock EntityTag first
|
|
315
|
+
const { EntityTag } = await import("../tag");
|
|
316
|
+
const mockGetBaseTagSha = mock(() => Promise.resolve("resolved-sha"));
|
|
317
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
318
|
+
|
|
319
|
+
// Import and mock entitiesShell
|
|
320
|
+
const { entitiesShell } = await import("../entities.shell");
|
|
321
|
+
const mockTurboRunBuild = mock(() => ({
|
|
322
|
+
text: () =>
|
|
323
|
+
Promise.resolve(
|
|
324
|
+
JSON.stringify({
|
|
325
|
+
tasks: [
|
|
326
|
+
{ package: "package1" },
|
|
327
|
+
{ package: "//" }, // root package should be filtered out
|
|
328
|
+
{ package: "" }, // empty string should be filtered out
|
|
329
|
+
{ package: undefined }, // undefined should be filtered out
|
|
330
|
+
{ package: "package2" },
|
|
331
|
+
],
|
|
332
|
+
}),
|
|
333
|
+
),
|
|
334
|
+
}));
|
|
335
|
+
entitiesShell.turboRunBuild = mockTurboRunBuild as unknown as (
|
|
336
|
+
args: string[],
|
|
337
|
+
) => $.ShellPromise;
|
|
338
|
+
|
|
339
|
+
// Now import EntityAffected after mocking
|
|
340
|
+
const { EntityAffected } = await import("./affected");
|
|
341
|
+
|
|
342
|
+
// Act
|
|
343
|
+
const result = await EntityAffected.getAffectedPackages("test-sha");
|
|
344
|
+
|
|
345
|
+
// Assert
|
|
346
|
+
expect(result).toEqual(["package1", "package2"]);
|
|
347
|
+
});
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
describe("error handling", () => {
|
|
351
|
+
it("should propagate EntityTag.getBaseCommitSha errors", async () => {
|
|
352
|
+
// Import EntityAffected first
|
|
353
|
+
const { EntityAffected } = await import("./affected");
|
|
354
|
+
|
|
355
|
+
// Now import EntityTag and mock its method
|
|
356
|
+
const { EntityTag } = await import("../tag");
|
|
357
|
+
const mockGetBaseTagSha = mock(() => Promise.reject(new Error("Custom error message")));
|
|
358
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
359
|
+
|
|
360
|
+
// Act & Assert
|
|
361
|
+
expect(EntityAffected.getAffectedPackages()).rejects.toThrow("Custom error message");
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
it("should handle different error types from EntityTag.getBaseCommitSha", async () => {
|
|
365
|
+
// Import EntityAffected first
|
|
366
|
+
const { EntityAffected } = await import("./affected");
|
|
367
|
+
|
|
368
|
+
// Now import EntityTag and mock its method
|
|
369
|
+
const { EntityTag } = await import("../tag");
|
|
370
|
+
const mockGetBaseTagSha = mock(() => Promise.reject(new TypeError("Type error")));
|
|
371
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
372
|
+
|
|
373
|
+
// Act & Assert
|
|
374
|
+
expect(EntityAffected.getAffectedPackages()).rejects.toThrow("Type error");
|
|
375
|
+
});
|
|
376
|
+
|
|
377
|
+
it("should handle turbo command errors and return empty array", async () => {
|
|
378
|
+
// Import and mock EntityTag first
|
|
379
|
+
const { EntityTag } = await import("../tag");
|
|
380
|
+
const mockGetBaseTagSha = mock(() => Promise.resolve("resolved-sha"));
|
|
381
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
382
|
+
|
|
383
|
+
// Import and mock entitiesShell
|
|
384
|
+
const { entitiesShell } = await import("../entities.shell");
|
|
385
|
+
const mockTurboRunBuild = mock(() => ({
|
|
386
|
+
text: () => Promise.reject(new Error("Turbo command failed")),
|
|
387
|
+
}));
|
|
388
|
+
entitiesShell.turboRunBuild = mockTurboRunBuild as unknown as (
|
|
389
|
+
args: string[],
|
|
390
|
+
) => $.ShellPromise;
|
|
391
|
+
|
|
392
|
+
// Now import EntityAffected after mocking
|
|
393
|
+
const { EntityAffected } = await import("./affected");
|
|
394
|
+
|
|
395
|
+
// Act
|
|
396
|
+
const result = await EntityAffected.getAffectedPackages("test-sha");
|
|
397
|
+
|
|
398
|
+
// Assert
|
|
399
|
+
expect(result).toEqual([]);
|
|
400
|
+
});
|
|
401
|
+
|
|
402
|
+
it("should handle JSON parsing errors and return empty array", async () => {
|
|
403
|
+
// Import and mock EntityTag first
|
|
404
|
+
const { EntityTag } = await import("../tag");
|
|
405
|
+
const mockGetBaseTagSha = mock(() => Promise.resolve("resolved-sha"));
|
|
406
|
+
EntityTag.getBaseCommitSha = mockGetBaseTagSha;
|
|
407
|
+
|
|
408
|
+
// Import and mock entitiesShell
|
|
409
|
+
const { entitiesShell } = await import("../entities.shell");
|
|
410
|
+
const mockTurboRunBuild = mock(() => ({
|
|
411
|
+
text: () => Promise.resolve("invalid json"),
|
|
412
|
+
}));
|
|
413
|
+
entitiesShell.turboRunBuild = mockTurboRunBuild as unknown as (
|
|
414
|
+
args: string[],
|
|
415
|
+
) => $.ShellPromise;
|
|
416
|
+
|
|
417
|
+
// Now import EntityAffected after mocking
|
|
418
|
+
const { EntityAffected } = await import("./affected");
|
|
419
|
+
|
|
420
|
+
// Act
|
|
421
|
+
const result = await EntityAffected.getAffectedPackages("test-sha");
|
|
422
|
+
|
|
423
|
+
// Assert
|
|
424
|
+
expect(result).toEqual([]);
|
|
425
|
+
});
|
|
426
|
+
});
|
|
427
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { entitiesShell } from "../entities.shell";
|
|
2
|
+
|
|
3
|
+
export const EntityAffected = {
|
|
4
|
+
async getAffectedPackages(baseSha?: string, to = "HEAD"): Promise<string[]> {
|
|
5
|
+
const { EntityTag } = await import("../tag");
|
|
6
|
+
const fromSha = await EntityTag.getBaseCommitSha(baseSha);
|
|
7
|
+
|
|
8
|
+
try {
|
|
9
|
+
const result = await entitiesShell.turboRunBuild([`--filter=...[${fromSha}...${to}]`]).text();
|
|
10
|
+
const turboOutput = JSON.parse(result);
|
|
11
|
+
|
|
12
|
+
const packages = turboOutput.tasks?.map((task: { package: string }) => task.package) || [];
|
|
13
|
+
|
|
14
|
+
// Filter out root package and undefined values
|
|
15
|
+
return packages.filter((pkg: string) => pkg && pkg !== "//");
|
|
16
|
+
} catch (error) {
|
|
17
|
+
console.warn(`Failed to get affected packages via turbo: ${error}`);
|
|
18
|
+
// Fallback: return empty array
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./affected";
|