@camaradesuk/git-worktree-tools 1.3.0 → 1.4.1
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 +290 -3
- package/dist/api/clean.d.ts +65 -0
- package/dist/api/clean.d.ts.map +1 -0
- package/dist/api/clean.js +209 -0
- package/dist/api/clean.js.map +1 -0
- package/dist/api/create.d.ts +88 -0
- package/dist/api/create.d.ts.map +1 -0
- package/dist/api/create.js +373 -0
- package/dist/api/create.js.map +1 -0
- package/dist/api/index.d.ts +15 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +19 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/list.d.ts +74 -0
- package/dist/api/list.d.ts.map +1 -0
- package/dist/api/list.js +80 -0
- package/dist/api/list.js.map +1 -0
- package/dist/api/state.d.ts +43 -0
- package/dist/api/state.d.ts.map +1 -0
- package/dist/api/state.js +70 -0
- package/dist/api/state.js.map +1 -0
- package/dist/cli/cleanpr.js +171 -28
- package/dist/cli/cleanpr.js.map +1 -1
- package/dist/cli/cleanpr.test.js +459 -7
- package/dist/cli/cleanpr.test.js.map +1 -1
- package/dist/cli/newpr.js +189 -28
- package/dist/cli/newpr.js.map +1 -1
- package/dist/cli/newpr.test.js +349 -0
- package/dist/cli/newpr.test.js.map +1 -1
- package/dist/cli/wtconfig.d.ts +14 -0
- package/dist/cli/wtconfig.d.ts.map +1 -0
- package/dist/cli/wtconfig.js +948 -0
- package/dist/cli/wtconfig.js.map +1 -0
- package/dist/cli/wtconfig.test.d.ts +5 -0
- package/dist/cli/wtconfig.test.d.ts.map +1 -0
- package/dist/cli/wtconfig.test.js +1281 -0
- package/dist/cli/wtconfig.test.js.map +1 -0
- package/dist/cli/wtlink.js +5 -0
- package/dist/cli/wtlink.js.map +1 -1
- package/dist/cli/wtstate.d.ts +8 -0
- package/dist/cli/wtstate.d.ts.map +1 -0
- package/dist/cli/wtstate.js +83 -0
- package/dist/cli/wtstate.js.map +1 -0
- package/dist/cli/wtstate.test.d.ts +5 -0
- package/dist/cli/wtstate.test.d.ts.map +1 -0
- package/dist/cli/wtstate.test.js +193 -0
- package/dist/cli/wtstate.test.js.map +1 -0
- package/dist/e2e/cleanpr/cleanpr.e2e.test.d.ts +2 -0
- package/dist/e2e/cleanpr/cleanpr.e2e.test.d.ts.map +1 -0
- package/dist/e2e/cleanpr/cleanpr.e2e.test.js +326 -0
- package/dist/e2e/cleanpr/cleanpr.e2e.test.js.map +1 -0
- package/dist/e2e/helpers/cli-runner.d.ts +103 -0
- package/dist/e2e/helpers/cli-runner.d.ts.map +1 -0
- package/dist/e2e/helpers/cli-runner.js +200 -0
- package/dist/e2e/helpers/cli-runner.js.map +1 -0
- package/dist/e2e/helpers/gh-mock.d.ts +87 -0
- package/dist/e2e/helpers/gh-mock.d.ts.map +1 -0
- package/dist/e2e/helpers/gh-mock.js +384 -0
- package/dist/e2e/helpers/gh-mock.js.map +1 -0
- package/dist/e2e/helpers/index.d.ts +12 -0
- package/dist/e2e/helpers/index.d.ts.map +1 -0
- package/dist/e2e/helpers/index.js +16 -0
- package/dist/e2e/helpers/index.js.map +1 -0
- package/dist/e2e/helpers/pty-wrapper.d.ts +118 -0
- package/dist/e2e/helpers/pty-wrapper.d.ts.map +1 -0
- package/dist/e2e/helpers/pty-wrapper.js +276 -0
- package/dist/e2e/helpers/pty-wrapper.js.map +1 -0
- package/dist/e2e/helpers/scenario-harness.d.ts +55 -0
- package/dist/e2e/helpers/scenario-harness.d.ts.map +1 -0
- package/dist/e2e/helpers/scenario-harness.js +360 -0
- package/dist/e2e/helpers/scenario-harness.js.map +1 -0
- package/dist/e2e/helpers/test-context.d.ts +120 -0
- package/dist/e2e/helpers/test-context.d.ts.map +1 -0
- package/dist/e2e/helpers/test-context.js +263 -0
- package/dist/e2e/helpers/test-context.js.map +1 -0
- package/dist/e2e/lswt/lswt.e2e.test.d.ts +2 -0
- package/dist/e2e/lswt/lswt.e2e.test.d.ts.map +1 -0
- package/dist/e2e/lswt/lswt.e2e.test.js +328 -0
- package/dist/e2e/lswt/lswt.e2e.test.js.map +1 -0
- package/dist/e2e/newpr/newpr.e2e.test.d.ts +2 -0
- package/dist/e2e/newpr/newpr.e2e.test.d.ts.map +1 -0
- package/dist/e2e/newpr/newpr.e2e.test.js +286 -0
- package/dist/e2e/newpr/newpr.e2e.test.js.map +1 -0
- package/dist/e2e/newpr/scenarios.e2e.test.d.ts +2 -0
- package/dist/e2e/newpr/scenarios.e2e.test.d.ts.map +1 -0
- package/dist/e2e/newpr/scenarios.e2e.test.js +426 -0
- package/dist/e2e/newpr/scenarios.e2e.test.js.map +1 -0
- package/dist/e2e/workflows/pr-lifecycle.e2e.test.d.ts +2 -0
- package/dist/e2e/workflows/pr-lifecycle.e2e.test.d.ts.map +1 -0
- package/dist/e2e/workflows/pr-lifecycle.e2e.test.js +298 -0
- package/dist/e2e/workflows/pr-lifecycle.e2e.test.js.map +1 -0
- package/dist/e2e/wtlink/wtlink.e2e.test.d.ts +2 -0
- package/dist/e2e/wtlink/wtlink.e2e.test.d.ts.map +1 -0
- package/dist/e2e/wtlink/wtlink.e2e.test.js +364 -0
- package/dist/e2e/wtlink/wtlink.e2e.test.js.map +1 -0
- package/dist/index.d.ts +15 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/ai/base-provider.d.ts +58 -0
- package/dist/lib/ai/base-provider.d.ts.map +1 -0
- package/dist/lib/ai/base-provider.js +246 -0
- package/dist/lib/ai/base-provider.js.map +1 -0
- package/dist/lib/ai/base-provider.test.d.ts +7 -0
- package/dist/lib/ai/base-provider.test.d.ts.map +1 -0
- package/dist/lib/ai/base-provider.test.js +320 -0
- package/dist/lib/ai/base-provider.test.js.map +1 -0
- package/dist/lib/ai/cli-provider.d.ts +87 -0
- package/dist/lib/ai/cli-provider.d.ts.map +1 -0
- package/dist/lib/ai/cli-provider.js +280 -0
- package/dist/lib/ai/cli-provider.js.map +1 -0
- package/dist/lib/ai/cli-provider.test.d.ts +5 -0
- package/dist/lib/ai/cli-provider.test.d.ts.map +1 -0
- package/dist/lib/ai/cli-provider.test.js +462 -0
- package/dist/lib/ai/cli-provider.test.js.map +1 -0
- package/dist/lib/ai/fallback-provider.d.ts +20 -0
- package/dist/lib/ai/fallback-provider.d.ts.map +1 -0
- package/dist/lib/ai/fallback-provider.js +125 -0
- package/dist/lib/ai/fallback-provider.js.map +1 -0
- package/dist/lib/ai/fallback-provider.test.d.ts +7 -0
- package/dist/lib/ai/fallback-provider.test.d.ts.map +1 -0
- package/dist/lib/ai/fallback-provider.test.js +165 -0
- package/dist/lib/ai/fallback-provider.test.js.map +1 -0
- package/dist/lib/ai/generation-service.d.ts +44 -0
- package/dist/lib/ai/generation-service.d.ts.map +1 -0
- package/dist/lib/ai/generation-service.js +107 -0
- package/dist/lib/ai/generation-service.js.map +1 -0
- package/dist/lib/ai/generation-service.test.d.ts +7 -0
- package/dist/lib/ai/generation-service.test.d.ts.map +1 -0
- package/dist/lib/ai/generation-service.test.js +213 -0
- package/dist/lib/ai/generation-service.test.js.map +1 -0
- package/dist/lib/ai/index.d.ts +19 -0
- package/dist/lib/ai/index.d.ts.map +1 -0
- package/dist/lib/ai/index.js +22 -0
- package/dist/lib/ai/index.js.map +1 -0
- package/dist/lib/ai/provider-manager.d.ts +109 -0
- package/dist/lib/ai/provider-manager.d.ts.map +1 -0
- package/dist/lib/ai/provider-manager.js +270 -0
- package/dist/lib/ai/provider-manager.js.map +1 -0
- package/dist/lib/ai/provider-manager.test.d.ts +5 -0
- package/dist/lib/ai/provider-manager.test.d.ts.map +1 -0
- package/dist/lib/ai/provider-manager.test.js +312 -0
- package/dist/lib/ai/provider-manager.test.js.map +1 -0
- package/dist/lib/ai/types.d.ts +166 -0
- package/dist/lib/ai/types.d.ts.map +1 -0
- package/dist/lib/ai/types.js +19 -0
- package/dist/lib/ai/types.js.map +1 -0
- package/dist/lib/cleanpr/args.d.ts.map +1 -1
- package/dist/lib/cleanpr/args.js +18 -0
- package/dist/lib/cleanpr/args.js.map +1 -1
- package/dist/lib/cleanpr/args.test.js +88 -11
- package/dist/lib/cleanpr/args.test.js.map +1 -1
- package/dist/lib/cleanpr/cleanup.d.ts +2 -0
- package/dist/lib/cleanpr/cleanup.d.ts.map +1 -1
- package/dist/lib/cleanpr/cleanup.js +30 -2
- package/dist/lib/cleanpr/cleanup.js.map +1 -1
- package/dist/lib/cleanpr/cleanup.test.js +37 -5
- package/dist/lib/cleanpr/cleanup.test.js.map +1 -1
- package/dist/lib/cleanpr/types.d.ts +10 -0
- package/dist/lib/cleanpr/types.d.ts.map +1 -1
- package/dist/lib/cleanpr/worktree-info.test.js +72 -1
- package/dist/lib/cleanpr/worktree-info.test.js.map +1 -1
- package/dist/lib/config.d.ts +170 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +129 -2
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/config.test.js +406 -2
- package/dist/lib/config.test.js.map +1 -1
- package/dist/lib/hooks/executor.d.ts +35 -0
- package/dist/lib/hooks/executor.d.ts.map +1 -0
- package/dist/lib/hooks/executor.js +401 -0
- package/dist/lib/hooks/executor.js.map +1 -0
- package/dist/lib/hooks/executor.test.d.ts +5 -0
- package/dist/lib/hooks/executor.test.d.ts.map +1 -0
- package/dist/lib/hooks/executor.test.js +648 -0
- package/dist/lib/hooks/executor.test.js.map +1 -0
- package/dist/lib/hooks/index.d.ts +25 -0
- package/dist/lib/hooks/index.d.ts.map +1 -0
- package/dist/lib/hooks/index.js +26 -0
- package/dist/lib/hooks/index.js.map +1 -0
- package/dist/lib/hooks/templates.d.ts +74 -0
- package/dist/lib/hooks/templates.d.ts.map +1 -0
- package/dist/lib/hooks/templates.js +270 -0
- package/dist/lib/hooks/templates.js.map +1 -0
- package/dist/lib/hooks/templates.test.d.ts +5 -0
- package/dist/lib/hooks/templates.test.d.ts.map +1 -0
- package/dist/lib/hooks/templates.test.js +163 -0
- package/dist/lib/hooks/templates.test.js.map +1 -0
- package/dist/lib/hooks/types.d.ts +161 -0
- package/dist/lib/hooks/types.d.ts.map +1 -0
- package/dist/lib/hooks/types.js +73 -0
- package/dist/lib/hooks/types.js.map +1 -0
- package/dist/lib/hooks/types.test.d.ts +5 -0
- package/dist/lib/hooks/types.test.d.ts.map +1 -0
- package/dist/lib/hooks/types.test.js +132 -0
- package/dist/lib/hooks/types.test.js.map +1 -0
- package/dist/lib/json-output.d.ts +172 -0
- package/dist/lib/json-output.d.ts.map +1 -0
- package/dist/lib/json-output.js +134 -0
- package/dist/lib/json-output.js.map +1 -0
- package/dist/lib/json-output.test.d.ts +5 -0
- package/dist/lib/json-output.test.d.ts.map +1 -0
- package/dist/lib/json-output.test.js +259 -0
- package/dist/lib/json-output.test.js.map +1 -0
- package/dist/lib/lswt/action-executors.test.js +6 -0
- package/dist/lib/lswt/action-executors.test.js.map +1 -1
- package/dist/lib/newpr/action-deps.d.ts +15 -0
- package/dist/lib/newpr/action-deps.d.ts.map +1 -0
- package/dist/lib/newpr/action-deps.js +22 -0
- package/dist/lib/newpr/action-deps.js.map +1 -0
- package/dist/lib/newpr/args.d.ts.map +1 -1
- package/dist/lib/newpr/args.js +56 -0
- package/dist/lib/newpr/args.js.map +1 -1
- package/dist/lib/newpr/hook-runner.d.ts +80 -0
- package/dist/lib/newpr/hook-runner.d.ts.map +1 -0
- package/dist/lib/newpr/hook-runner.js +182 -0
- package/dist/lib/newpr/hook-runner.js.map +1 -0
- package/dist/lib/newpr/hook-runner.test.d.ts +7 -0
- package/dist/lib/newpr/hook-runner.test.d.ts.map +1 -0
- package/dist/lib/newpr/hook-runner.test.js +301 -0
- package/dist/lib/newpr/hook-runner.test.js.map +1 -0
- package/dist/lib/newpr/index.d.ts +3 -0
- package/dist/lib/newpr/index.d.ts.map +1 -1
- package/dist/lib/newpr/index.js +3 -0
- package/dist/lib/newpr/index.js.map +1 -1
- package/dist/lib/newpr/types.d.ts +9 -0
- package/dist/lib/newpr/types.d.ts.map +1 -1
- package/dist/lib/wtconfig/config-manager.d.ts +72 -0
- package/dist/lib/wtconfig/config-manager.d.ts.map +1 -0
- package/dist/lib/wtconfig/config-manager.js +408 -0
- package/dist/lib/wtconfig/config-manager.js.map +1 -0
- package/dist/lib/wtconfig/config-manager.test.d.ts +5 -0
- package/dist/lib/wtconfig/config-manager.test.d.ts.map +1 -0
- package/dist/lib/wtconfig/config-manager.test.js +501 -0
- package/dist/lib/wtconfig/config-manager.test.js.map +1 -0
- package/dist/lib/wtconfig/environment.d.ts +23 -0
- package/dist/lib/wtconfig/environment.d.ts.map +1 -0
- package/dist/lib/wtconfig/environment.js +242 -0
- package/dist/lib/wtconfig/environment.js.map +1 -0
- package/dist/lib/wtconfig/environment.test.d.ts +5 -0
- package/dist/lib/wtconfig/environment.test.d.ts.map +1 -0
- package/dist/lib/wtconfig/environment.test.js +246 -0
- package/dist/lib/wtconfig/environment.test.js.map +1 -0
- package/dist/lib/wtconfig/index.d.ts +7 -0
- package/dist/lib/wtconfig/index.d.ts.map +1 -0
- package/dist/lib/wtconfig/index.js +8 -0
- package/dist/lib/wtconfig/index.js.map +1 -0
- package/dist/lib/wtconfig/types.d.ts +97 -0
- package/dist/lib/wtconfig/types.d.ts.map +1 -0
- package/dist/lib/wtconfig/types.js +5 -0
- package/dist/lib/wtconfig/types.js.map +1 -0
- package/dist/lib/wtstate/analyze.d.ts +13 -0
- package/dist/lib/wtstate/analyze.d.ts.map +1 -0
- package/dist/lib/wtstate/analyze.js +165 -0
- package/dist/lib/wtstate/analyze.js.map +1 -0
- package/dist/lib/wtstate/analyze.test.d.ts +5 -0
- package/dist/lib/wtstate/analyze.test.d.ts.map +1 -0
- package/dist/lib/wtstate/analyze.test.js +282 -0
- package/dist/lib/wtstate/analyze.test.js.map +1 -0
- package/dist/lib/wtstate/args.d.ts +17 -0
- package/dist/lib/wtstate/args.d.ts.map +1 -0
- package/dist/lib/wtstate/args.js +91 -0
- package/dist/lib/wtstate/args.js.map +1 -0
- package/dist/lib/wtstate/args.test.d.ts +5 -0
- package/dist/lib/wtstate/args.test.d.ts.map +1 -0
- package/dist/lib/wtstate/args.test.js +120 -0
- package/dist/lib/wtstate/args.test.js.map +1 -0
- package/dist/lib/wtstate/index.d.ts +7 -0
- package/dist/lib/wtstate/index.d.ts.map +1 -0
- package/dist/lib/wtstate/index.js +8 -0
- package/dist/lib/wtstate/index.js.map +1 -0
- package/dist/lib/wtstate/types.d.ts +64 -0
- package/dist/lib/wtstate/types.d.ts.map +1 -0
- package/dist/lib/wtstate/types.js +5 -0
- package/dist/lib/wtstate/types.js.map +1 -0
- package/dist/mcp/server.d.ts +14 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +339 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/server.test.d.ts +9 -0
- package/dist/mcp/server.test.d.ts.map +1 -0
- package/dist/mcp/server.test.js +390 -0
- package/dist/mcp/server.test.js.map +1 -0
- package/package.json +8 -2
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
import { describe, it, expect, beforeAll, afterAll, beforeEach } from 'vitest';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { execSync } from 'child_process';
|
|
5
|
+
import { runCli, runCliJson, createTestContext, GH_AVAILABLE, } from '../helpers/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* E2E tests for newpr across all 12 git state scenarios.
|
|
8
|
+
*
|
|
9
|
+
* These tests verify that newpr correctly:
|
|
10
|
+
* 1. Detects the git state scenario
|
|
11
|
+
* 2. Applies the appropriate action
|
|
12
|
+
* 3. Creates the branch, PR, and worktree
|
|
13
|
+
*/
|
|
14
|
+
describe.skipIf(!GH_AVAILABLE)('newpr e2e - git state scenarios', () => {
|
|
15
|
+
// Test each scenario with non-interactive mode
|
|
16
|
+
describe('non-interactive mode', () => {
|
|
17
|
+
// Scenarios where newpr should succeed and create a PR with worktree
|
|
18
|
+
// These scenarios create a NEW branch, so worktree creation works
|
|
19
|
+
const successScenarios = [
|
|
20
|
+
'main_clean_same',
|
|
21
|
+
'main_staged_same',
|
|
22
|
+
'main_unstaged_same',
|
|
23
|
+
'main_both_same',
|
|
24
|
+
'main_clean_ahead',
|
|
25
|
+
'main_changes_ahead',
|
|
26
|
+
'branch_same_as_main', // Creates new branch from main
|
|
27
|
+
];
|
|
28
|
+
// Scenarios where user is on a feature branch with divergent commits
|
|
29
|
+
// These scenarios use the CURRENT branch for PR, which means worktree
|
|
30
|
+
// creation fails because git can't create a worktree for a branch
|
|
31
|
+
// that's already checked out. The PR is created successfully but
|
|
32
|
+
// the worktree step fails.
|
|
33
|
+
const branchPrScenarios = ['branch_divergent', 'branch_with_changes'];
|
|
34
|
+
describe.each(successScenarios)('scenario: %s', (scenario) => {
|
|
35
|
+
let ctx;
|
|
36
|
+
beforeAll(() => {
|
|
37
|
+
ctx = createTestContext({ scenario });
|
|
38
|
+
});
|
|
39
|
+
afterAll(() => {
|
|
40
|
+
ctx.cleanup();
|
|
41
|
+
});
|
|
42
|
+
it('creates PR successfully in non-interactive mode', () => {
|
|
43
|
+
const result = runCli('newpr', ['test-feature-description', '--non-interactive'], {
|
|
44
|
+
cwd: ctx.repoDir,
|
|
45
|
+
env: ctx.env,
|
|
46
|
+
});
|
|
47
|
+
// Should succeed
|
|
48
|
+
expect(result.exitCode).toBe(0);
|
|
49
|
+
// Output should indicate success
|
|
50
|
+
expect(result.stdout.toLowerCase()).toMatch(/created|success|pr/i);
|
|
51
|
+
});
|
|
52
|
+
it('outputs valid JSON with --json flag', () => {
|
|
53
|
+
// Reset to re-run
|
|
54
|
+
ctx.reset();
|
|
55
|
+
// Re-create scenario state if needed
|
|
56
|
+
const freshCtx = createTestContext({ scenario });
|
|
57
|
+
try {
|
|
58
|
+
const jsonResult = runCliJson('newpr', ['test-json-feature', '--non-interactive'], {
|
|
59
|
+
cwd: freshCtx.repoDir,
|
|
60
|
+
env: freshCtx.env,
|
|
61
|
+
});
|
|
62
|
+
// Should have data
|
|
63
|
+
expect(jsonResult.data).not.toBeNull();
|
|
64
|
+
if (jsonResult.data) {
|
|
65
|
+
// Verify required fields
|
|
66
|
+
expect(typeof jsonResult.data.prNumber).toBe('number');
|
|
67
|
+
expect(jsonResult.data.prUrl).toContain('github.com');
|
|
68
|
+
expect(jsonResult.data.branch).toBeTruthy();
|
|
69
|
+
expect(jsonResult.data.worktreePath).toBeTruthy();
|
|
70
|
+
// Verify worktree was created
|
|
71
|
+
expect(fs.existsSync(jsonResult.data.worktreePath)).toBe(true);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
freshCtx.cleanup();
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
// Test scenarios where user is on a feature branch
|
|
80
|
+
// These scenarios try to create PR for current branch, which works,
|
|
81
|
+
// but worktree creation fails because the branch is already checked out
|
|
82
|
+
describe.each(branchPrScenarios)('scenario: %s (branch PR)', (scenario) => {
|
|
83
|
+
let ctx;
|
|
84
|
+
beforeAll(() => {
|
|
85
|
+
ctx = createTestContext({ scenario });
|
|
86
|
+
});
|
|
87
|
+
afterAll(() => {
|
|
88
|
+
ctx.cleanup();
|
|
89
|
+
});
|
|
90
|
+
it('fails because branch is already checked out', () => {
|
|
91
|
+
const result = runCli('newpr', ['test-feature-description', '--non-interactive'], {
|
|
92
|
+
cwd: ctx.repoDir,
|
|
93
|
+
env: ctx.env,
|
|
94
|
+
});
|
|
95
|
+
// Currently fails because git can't create worktree for a branch
|
|
96
|
+
// that's already checked out. This is a known limitation.
|
|
97
|
+
// The PR creation part succeeds, but worktree creation fails.
|
|
98
|
+
expect(result.exitCode).not.toBe(0);
|
|
99
|
+
expect(result.stderr).toMatch(/already.*worktree|already.*checked out|already used/i);
|
|
100
|
+
});
|
|
101
|
+
it('would benefit from switching to main before creating worktree', () => {
|
|
102
|
+
// This test documents the expected improvement:
|
|
103
|
+
// The tool should detect that it's on the same branch and either:
|
|
104
|
+
// 1. Skip worktree creation (you're already there)
|
|
105
|
+
// 2. Switch to main first, then create worktree
|
|
106
|
+
// For now, we document this as expected behavior to fix
|
|
107
|
+
const freshCtx = createTestContext({ scenario });
|
|
108
|
+
try {
|
|
109
|
+
const result = runCli('newpr', ['worktree-fix-test', '--non-interactive'], {
|
|
110
|
+
cwd: freshCtx.repoDir,
|
|
111
|
+
env: freshCtx.env,
|
|
112
|
+
});
|
|
113
|
+
// Currently this fails - when fixed, change to expect(result.exitCode).toBe(0)
|
|
114
|
+
expect(result.exitCode).not.toBe(0);
|
|
115
|
+
}
|
|
116
|
+
finally {
|
|
117
|
+
freshCtx.cleanup();
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
// Special case: detached_head
|
|
122
|
+
describe('scenario: detached_head', () => {
|
|
123
|
+
let ctx;
|
|
124
|
+
beforeAll(() => {
|
|
125
|
+
ctx = createTestContext({ scenario: 'detached_head' });
|
|
126
|
+
});
|
|
127
|
+
afterAll(() => {
|
|
128
|
+
ctx.cleanup();
|
|
129
|
+
});
|
|
130
|
+
it('creates new branch from detached HEAD', () => {
|
|
131
|
+
const result = runCli('newpr', ['detached-feature', '--non-interactive'], {
|
|
132
|
+
cwd: ctx.repoDir,
|
|
133
|
+
env: ctx.env,
|
|
134
|
+
});
|
|
135
|
+
// Should succeed - creates a branch from the detached HEAD
|
|
136
|
+
expect(result.exitCode).toBe(0);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
// Special case: branch_ancestor (already merged)
|
|
140
|
+
describe('scenario: branch_ancestor', () => {
|
|
141
|
+
let ctx;
|
|
142
|
+
beforeAll(() => {
|
|
143
|
+
ctx = createTestContext({ scenario: 'branch_ancestor' });
|
|
144
|
+
});
|
|
145
|
+
afterAll(() => {
|
|
146
|
+
ctx.cleanup();
|
|
147
|
+
});
|
|
148
|
+
it('handles already-merged branch gracefully', () => {
|
|
149
|
+
const result = runCli('newpr', ['ancestor-feature', '--non-interactive'], {
|
|
150
|
+
cwd: ctx.repoDir,
|
|
151
|
+
env: ctx.env,
|
|
152
|
+
});
|
|
153
|
+
// May succeed or show a warning - verify it doesn't crash
|
|
154
|
+
// The behavior depends on whether the branch has any unique commits
|
|
155
|
+
expect(result.exitCode).toBeLessThanOrEqual(1);
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
// Special case: pr_worktree (running from existing PR worktree)
|
|
159
|
+
describe('scenario: pr_worktree', () => {
|
|
160
|
+
let ctx;
|
|
161
|
+
beforeAll(() => {
|
|
162
|
+
ctx = createTestContext({ scenario: 'pr_worktree' });
|
|
163
|
+
});
|
|
164
|
+
afterAll(() => {
|
|
165
|
+
ctx.cleanup();
|
|
166
|
+
});
|
|
167
|
+
it('warns when running from PR worktree', () => {
|
|
168
|
+
// Run from the PR worktree, not the main repo
|
|
169
|
+
const result = runCli('newpr', ['nested-feature', '--non-interactive'], {
|
|
170
|
+
cwd: ctx.worktreeDir,
|
|
171
|
+
env: ctx.env,
|
|
172
|
+
});
|
|
173
|
+
// Should either warn and fail, or proceed with caution
|
|
174
|
+
// The exact behavior depends on implementation
|
|
175
|
+
if (result.exitCode !== 0) {
|
|
176
|
+
expect(result.stderr.toLowerCase()).toMatch(/worktree|already|pr/i);
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
// Test specific action selection
|
|
182
|
+
describe('action selection with --action', () => {
|
|
183
|
+
describe('main_unstaged_same', () => {
|
|
184
|
+
let ctx;
|
|
185
|
+
beforeEach(() => {
|
|
186
|
+
ctx = createTestContext({ scenario: 'main_unstaged_same' });
|
|
187
|
+
});
|
|
188
|
+
afterAll(() => {
|
|
189
|
+
// Clean up will happen in beforeEach for next test
|
|
190
|
+
});
|
|
191
|
+
it('commit_all stages and commits all files', () => {
|
|
192
|
+
const result = runCli('newpr', ['commit-all-feature', '--non-interactive', '--action', 'commit_all'], { cwd: ctx.repoDir, env: ctx.env });
|
|
193
|
+
expect(result.exitCode).toBe(0);
|
|
194
|
+
ctx.cleanup();
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
describe('main_staged_same', () => {
|
|
198
|
+
let ctx;
|
|
199
|
+
beforeEach(() => {
|
|
200
|
+
ctx = createTestContext({ scenario: 'main_staged_same' });
|
|
201
|
+
});
|
|
202
|
+
it('commit_staged commits only staged files', () => {
|
|
203
|
+
const result = runCli('newpr', ['commit-staged-feature', '--non-interactive', '--action', 'commit_staged'], { cwd: ctx.repoDir, env: ctx.env });
|
|
204
|
+
expect(result.exitCode).toBe(0);
|
|
205
|
+
ctx.cleanup();
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
describe('main_both_same', () => {
|
|
209
|
+
let ctx;
|
|
210
|
+
beforeEach(() => {
|
|
211
|
+
ctx = createTestContext({ scenario: 'main_both_same' });
|
|
212
|
+
});
|
|
213
|
+
it('commit_staged handles staged files (default action)', () => {
|
|
214
|
+
// For main_both_same, the default action is commit_staged with stashUnstaged
|
|
215
|
+
// The action name is just 'commit_staged' - the stash behavior is internal
|
|
216
|
+
const result = runCli('newpr', ['both-feature', '--non-interactive', '--action', 'commit_staged'], { cwd: ctx.repoDir, env: ctx.env });
|
|
217
|
+
expect(result.exitCode).toBe(0);
|
|
218
|
+
ctx.cleanup();
|
|
219
|
+
});
|
|
220
|
+
it('commit_all stages and commits all changes', () => {
|
|
221
|
+
const result = runCli('newpr', ['both-all-feature', '--non-interactive', '--action', 'commit_all'], { cwd: ctx.repoDir, env: ctx.env });
|
|
222
|
+
expect(result.exitCode).toBe(0);
|
|
223
|
+
ctx.cleanup();
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
// Verify worktree creation across scenarios
|
|
228
|
+
describe('worktree creation verification', () => {
|
|
229
|
+
const worktreeScenarios = [
|
|
230
|
+
'main_clean_same',
|
|
231
|
+
'main_staged_same',
|
|
232
|
+
'main_unstaged_same',
|
|
233
|
+
];
|
|
234
|
+
it.each(worktreeScenarios)('creates worktree with correct naming pattern for %s', (scenario) => {
|
|
235
|
+
const ctx = createTestContext({ scenario });
|
|
236
|
+
try {
|
|
237
|
+
const result = runCliJson('newpr', ['worktree-test', '--non-interactive'], {
|
|
238
|
+
cwd: ctx.repoDir,
|
|
239
|
+
env: ctx.env,
|
|
240
|
+
});
|
|
241
|
+
expect(result.data).not.toBeNull();
|
|
242
|
+
if (result.data) {
|
|
243
|
+
const worktreePath = result.data.worktreePath;
|
|
244
|
+
// Verify worktree exists
|
|
245
|
+
expect(fs.existsSync(worktreePath)).toBe(true);
|
|
246
|
+
// Verify naming pattern (should contain .pr and number)
|
|
247
|
+
expect(worktreePath).toMatch(/\.pr\d+/);
|
|
248
|
+
// Verify it's a git worktree (has .git file)
|
|
249
|
+
const gitPath = path.join(worktreePath, '.git');
|
|
250
|
+
expect(fs.existsSync(gitPath)).toBe(true);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
finally {
|
|
254
|
+
ctx.cleanup();
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
// Verify file preservation across scenarios
|
|
259
|
+
describe('file preservation', () => {
|
|
260
|
+
it('unstaged files appear in worktree for main_unstaged_same', () => {
|
|
261
|
+
const ctx = createTestContext({ scenario: 'main_unstaged_same' });
|
|
262
|
+
try {
|
|
263
|
+
const result = runCliJson('newpr', ['file-preservation-test', '--non-interactive'], {
|
|
264
|
+
cwd: ctx.repoDir,
|
|
265
|
+
env: ctx.env,
|
|
266
|
+
});
|
|
267
|
+
expect(result.data).not.toBeNull();
|
|
268
|
+
if (result.data) {
|
|
269
|
+
const worktreePath = result.data.worktreePath;
|
|
270
|
+
// The new file should be committed and present in the worktree
|
|
271
|
+
// Check for the docs directory which is created in the scenario
|
|
272
|
+
const docsPath = path.join(worktreePath, 'docs');
|
|
273
|
+
// It should either exist (committed) or be handled appropriately
|
|
274
|
+
// The exact behavior depends on the action taken
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
finally {
|
|
278
|
+
ctx.cleanup();
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
it('staged files are committed for main_staged_same', () => {
|
|
282
|
+
const ctx = createTestContext({ scenario: 'main_staged_same' });
|
|
283
|
+
try {
|
|
284
|
+
const result = runCliJson('newpr', ['staged-preservation-test', '--non-interactive'], {
|
|
285
|
+
cwd: ctx.repoDir,
|
|
286
|
+
env: ctx.env,
|
|
287
|
+
});
|
|
288
|
+
expect(result.data).not.toBeNull();
|
|
289
|
+
if (result.data) {
|
|
290
|
+
const worktreePath = result.data.worktreePath;
|
|
291
|
+
// Verify the staged file is in the worktree
|
|
292
|
+
const stagedFile = path.join(worktreePath, 'staged-file.ts');
|
|
293
|
+
expect(fs.existsSync(stagedFile)).toBe(true);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
finally {
|
|
297
|
+
ctx.cleanup();
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
});
|
|
301
|
+
// Test branch creation from different points
|
|
302
|
+
describe('branch creation points', () => {
|
|
303
|
+
it('creates branch from origin/main for main_clean_same', () => {
|
|
304
|
+
const ctx = createTestContext({ scenario: 'main_clean_same' });
|
|
305
|
+
try {
|
|
306
|
+
const result = runCliJson('newpr', ['origin-branch-test', '--non-interactive'], {
|
|
307
|
+
cwd: ctx.repoDir,
|
|
308
|
+
env: ctx.env,
|
|
309
|
+
});
|
|
310
|
+
expect(result.data).not.toBeNull();
|
|
311
|
+
if (result.data) {
|
|
312
|
+
// Get the commit the new branch is based on
|
|
313
|
+
const worktreePath = result.data.worktreePath;
|
|
314
|
+
const branchCommit = execSync('git rev-parse HEAD', {
|
|
315
|
+
cwd: worktreePath,
|
|
316
|
+
encoding: 'utf8',
|
|
317
|
+
}).trim();
|
|
318
|
+
// Get origin/main commit
|
|
319
|
+
const originMainCommit = execSync('git rev-parse origin/main', {
|
|
320
|
+
cwd: ctx.repoDir,
|
|
321
|
+
encoding: 'utf8',
|
|
322
|
+
}).trim();
|
|
323
|
+
// For main_clean_same, the commits should be related
|
|
324
|
+
// (branch is created from origin/main plus any new commit)
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
finally {
|
|
328
|
+
ctx.cleanup();
|
|
329
|
+
}
|
|
330
|
+
});
|
|
331
|
+
it('uses local commits for main_clean_ahead', () => {
|
|
332
|
+
const ctx = createTestContext({ scenario: 'main_clean_ahead' });
|
|
333
|
+
try {
|
|
334
|
+
const result = runCliJson('newpr', ['ahead-branch-test', '--non-interactive'], {
|
|
335
|
+
cwd: ctx.repoDir,
|
|
336
|
+
env: ctx.env,
|
|
337
|
+
});
|
|
338
|
+
expect(result.data).not.toBeNull();
|
|
339
|
+
if (result.data) {
|
|
340
|
+
// The worktree should contain the local-feature.ts file
|
|
341
|
+
// that was committed locally (ahead of origin)
|
|
342
|
+
const localFeature = path.join(result.data.worktreePath, 'local-feature.ts');
|
|
343
|
+
expect(fs.existsSync(localFeature)).toBe(true);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
finally {
|
|
347
|
+
ctx.cleanup();
|
|
348
|
+
}
|
|
349
|
+
});
|
|
350
|
+
});
|
|
351
|
+
// Test PR draft status
|
|
352
|
+
describe('PR draft status', () => {
|
|
353
|
+
it('creates draft PR by default', () => {
|
|
354
|
+
// Note: PRs are created as drafts by default in newpr
|
|
355
|
+
const ctx = createTestContext({ scenario: 'main_clean_same' });
|
|
356
|
+
try {
|
|
357
|
+
const result = runCli('newpr', ['draft-pr-test', '--non-interactive'], {
|
|
358
|
+
cwd: ctx.repoDir,
|
|
359
|
+
env: ctx.env,
|
|
360
|
+
});
|
|
361
|
+
expect(result.exitCode).toBe(0);
|
|
362
|
+
// The gh mock should have been called with draft=true (default)
|
|
363
|
+
const mockState = ctx.ghMock?.getState();
|
|
364
|
+
if (mockState) {
|
|
365
|
+
// Find the created PR - should be a draft
|
|
366
|
+
for (const [, pr] of mockState.prs) {
|
|
367
|
+
if (pr.headRefName.includes('draft-pr-test') || pr.headRefName.includes('feat')) {
|
|
368
|
+
expect(pr.isDraft).toBe(true);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
finally {
|
|
374
|
+
ctx.cleanup();
|
|
375
|
+
}
|
|
376
|
+
});
|
|
377
|
+
it('creates ready-for-review PR when --ready is specified', () => {
|
|
378
|
+
const ctx = createTestContext({ scenario: 'main_staged_same' });
|
|
379
|
+
try {
|
|
380
|
+
const result = runCli('newpr', ['ready-pr-test', '--non-interactive', '--ready'], {
|
|
381
|
+
cwd: ctx.repoDir,
|
|
382
|
+
env: ctx.env,
|
|
383
|
+
});
|
|
384
|
+
expect(result.exitCode).toBe(0);
|
|
385
|
+
// The gh mock should have been called with draft=false
|
|
386
|
+
const mockState = ctx.ghMock?.getState();
|
|
387
|
+
if (mockState) {
|
|
388
|
+
for (const [, pr] of mockState.prs) {
|
|
389
|
+
if (pr.headRefName.includes('ready-pr-test') || pr.headRefName.includes('feat')) {
|
|
390
|
+
expect(pr.isDraft).toBe(false);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
finally {
|
|
396
|
+
ctx.cleanup();
|
|
397
|
+
}
|
|
398
|
+
});
|
|
399
|
+
});
|
|
400
|
+
// Test --base override (-b)
|
|
401
|
+
describe('--base override', () => {
|
|
402
|
+
it('uses specified base branch', () => {
|
|
403
|
+
const ctx = createTestContext({ scenario: 'main_clean_same' });
|
|
404
|
+
try {
|
|
405
|
+
// Create a develop branch first
|
|
406
|
+
execSync('git branch develop', { cwd: ctx.repoDir, stdio: 'ignore' });
|
|
407
|
+
execSync('git push origin develop', { cwd: ctx.repoDir, stdio: 'ignore' });
|
|
408
|
+
const result = runCli('newpr', ['base-branch-test', '--non-interactive', '--base', 'develop'], { cwd: ctx.repoDir, env: ctx.env });
|
|
409
|
+
expect(result.exitCode).toBe(0);
|
|
410
|
+
// The PR should be based on develop
|
|
411
|
+
const mockState = ctx.ghMock?.getState();
|
|
412
|
+
if (mockState) {
|
|
413
|
+
for (const [, pr] of mockState.prs) {
|
|
414
|
+
if (pr.headRefName.includes('base-branch')) {
|
|
415
|
+
expect(pr.baseRefName).toBe('develop');
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
finally {
|
|
421
|
+
ctx.cleanup();
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
});
|
|
425
|
+
});
|
|
426
|
+
//# sourceMappingURL=scenarios.e2e.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenarios.e2e.test.js","sourceRoot":"","sources":["../../../src/e2e/newpr/scenarios.e2e.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-lifecycle.e2e.test.d.ts","sourceRoot":"","sources":["../../../src/e2e/workflows/pr-lifecycle.e2e.test.ts"],"names":[],"mappings":""}
|