@camaradesuk/git-worktree-tools 1.4.1 → 1.5.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/dist/api/list.d.ts +10 -4
- package/dist/api/list.d.ts.map +1 -1
- package/dist/api/list.js +5 -1
- package/dist/api/list.js.map +1 -1
- package/dist/api/list.test.d.ts +5 -0
- package/dist/api/list.test.d.ts.map +1 -0
- package/dist/api/list.test.js +390 -0
- package/dist/api/list.test.js.map +1 -0
- package/dist/cli/newpr.js +7 -1
- package/dist/cli/newpr.js.map +1 -1
- package/dist/cli/newpr.test.js +8 -8
- package/dist/cli/newpr.test.js.map +1 -1
- package/dist/e2e/cli.e2e.test.js +59 -0
- package/dist/e2e/cli.e2e.test.js.map +1 -1
- package/dist/e2e/newpr-full-flow.e2e.test.d.ts +2 -0
- package/dist/e2e/newpr-full-flow.e2e.test.d.ts.map +1 -0
- package/dist/e2e/newpr-full-flow.e2e.test.js +279 -0
- package/dist/e2e/newpr-full-flow.e2e.test.js.map +1 -0
- package/dist/integration/lswt-remote-pr.integration.test.d.ts +2 -0
- package/dist/integration/lswt-remote-pr.integration.test.d.ts.map +1 -0
- package/dist/integration/lswt-remote-pr.integration.test.js +222 -0
- package/dist/integration/lswt-remote-pr.integration.test.js.map +1 -0
- package/dist/integration/newpr-branchfrom-head.integration.test.d.ts +2 -0
- package/dist/integration/newpr-branchfrom-head.integration.test.d.ts.map +1 -0
- package/dist/integration/newpr-branchfrom-head.integration.test.js +498 -0
- package/dist/integration/newpr-branchfrom-head.integration.test.js.map +1 -0
- package/dist/lib/git.d.ts +1 -0
- package/dist/lib/git.d.ts.map +1 -1
- package/dist/lib/git.js +17 -30
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/git.test.js +154 -123
- package/dist/lib/git.test.js.map +1 -1
- package/dist/lib/github.d.ts +45 -0
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +172 -0
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/github.test.js +127 -1
- package/dist/lib/github.test.js.map +1 -1
- package/dist/lib/lswt/action-executors.d.ts.map +1 -1
- package/dist/lib/lswt/action-executors.js +143 -35
- package/dist/lib/lswt/action-executors.js.map +1 -1
- package/dist/lib/lswt/action-executors.test.js +362 -0
- package/dist/lib/lswt/action-executors.test.js.map +1 -1
- package/dist/lib/lswt/actions.d.ts.map +1 -1
- package/dist/lib/lswt/actions.js +38 -0
- package/dist/lib/lswt/actions.js.map +1 -1
- package/dist/lib/lswt/actions.test.js +126 -0
- package/dist/lib/lswt/actions.test.js.map +1 -1
- package/dist/lib/lswt/environment.d.ts +4 -0
- package/dist/lib/lswt/environment.d.ts.map +1 -1
- package/dist/lib/lswt/environment.js +23 -0
- package/dist/lib/lswt/environment.js.map +1 -1
- package/dist/lib/lswt/environment.test.js +129 -2
- package/dist/lib/lswt/environment.test.js.map +1 -1
- package/dist/lib/lswt/formatters.d.ts +1 -1
- package/dist/lib/lswt/formatters.d.ts.map +1 -1
- package/dist/lib/lswt/formatters.js +21 -1
- package/dist/lib/lswt/formatters.js.map +1 -1
- package/dist/lib/lswt/formatters.test.js +64 -0
- package/dist/lib/lswt/formatters.test.js.map +1 -1
- package/dist/lib/lswt/index.d.ts +2 -1
- package/dist/lib/lswt/index.d.ts.map +1 -1
- package/dist/lib/lswt/index.js +1 -2
- package/dist/lib/lswt/index.js.map +1 -1
- package/dist/lib/lswt/interactive.d.ts +42 -4
- package/dist/lib/lswt/interactive.d.ts.map +1 -1
- package/dist/lib/lswt/interactive.js +309 -56
- package/dist/lib/lswt/interactive.js.map +1 -1
- package/dist/lib/lswt/interactive.test.js +454 -66
- package/dist/lib/lswt/interactive.test.js.map +1 -1
- package/dist/lib/lswt/types.d.ts +8 -2
- package/dist/lib/lswt/types.d.ts.map +1 -1
- package/dist/lib/lswt/worktree-info.d.ts +11 -0
- package/dist/lib/lswt/worktree-info.d.ts.map +1 -1
- package/dist/lib/lswt/worktree-info.js +48 -0
- package/dist/lib/lswt/worktree-info.js.map +1 -1
- package/dist/lib/lswt/worktree-info.test.js +169 -0
- package/dist/lib/lswt/worktree-info.test.js.map +1 -1
- package/dist/lib/newpr/scenario-handler.d.ts.map +1 -1
- package/dist/lib/newpr/scenario-handler.js +14 -5
- package/dist/lib/newpr/scenario-handler.js.map +1 -1
- package/dist/lib/newpr/scenario-handler.test.js +6 -0
- package/dist/lib/newpr/scenario-handler.test.js.map +1 -1
- package/dist/mcp/server.test.js +49 -0
- package/dist/mcp/server.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { describe, it, expect, beforeAll, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { spawnSync } from 'child_process';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import os from 'os';
|
|
6
|
+
/**
|
|
7
|
+
* Full flow E2E tests for newpr CLI with uncommitted files.
|
|
8
|
+
*
|
|
9
|
+
* These tests verify the complete workflow:
|
|
10
|
+
* 1. User has uncommitted files in main worktree
|
|
11
|
+
* 2. User runs `newpr "description"` and selects option to commit files
|
|
12
|
+
* 3. Files are moved to new PR branch and worktree is created
|
|
13
|
+
*
|
|
14
|
+
* GitHub CLI calls are mocked via NEWPR_MOCK_GITHUB=1 environment variable.
|
|
15
|
+
*/
|
|
16
|
+
const CLI_DIR = path.resolve(__dirname, '../../dist/cli');
|
|
17
|
+
// Helper to run a CLI command with simulated input
|
|
18
|
+
function runCli(command, args = [], options = {}) {
|
|
19
|
+
const scriptPath = path.join(CLI_DIR, `${command}.js`);
|
|
20
|
+
const result = spawnSync('node', [scriptPath, ...args], {
|
|
21
|
+
cwd: options.cwd || process.cwd(),
|
|
22
|
+
encoding: 'utf-8',
|
|
23
|
+
input: options.input,
|
|
24
|
+
env: {
|
|
25
|
+
...process.env,
|
|
26
|
+
FORCE_COLOR: '0', // Disable colors for consistent output
|
|
27
|
+
NEWPR_MOCK_GITHUB: '1', // Enable GitHub mock mode
|
|
28
|
+
...options.env,
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
stdout: result.stdout || '',
|
|
33
|
+
stderr: result.stderr || '',
|
|
34
|
+
exitCode: result.status ?? 1,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
// Helper to run git commands (using spawnSync for proper argument handling)
|
|
38
|
+
function git(args, cwd) {
|
|
39
|
+
const result = spawnSync('git', args, {
|
|
40
|
+
cwd,
|
|
41
|
+
encoding: 'utf-8',
|
|
42
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
43
|
+
});
|
|
44
|
+
if (result.status !== 0) {
|
|
45
|
+
throw new Error(`git ${args.join(' ')} failed: ${result.stderr}`);
|
|
46
|
+
}
|
|
47
|
+
return (result.stdout || '').trim();
|
|
48
|
+
}
|
|
49
|
+
// Normalize line endings for cross-platform comparison
|
|
50
|
+
function normalizeLineEndings(content) {
|
|
51
|
+
return content.replace(/\r\n/g, '\n');
|
|
52
|
+
}
|
|
53
|
+
// Read file with normalized line endings
|
|
54
|
+
function readFileNormalized(filePath) {
|
|
55
|
+
return normalizeLineEndings(fs.readFileSync(filePath, 'utf-8'));
|
|
56
|
+
}
|
|
57
|
+
describe('newpr full flow e2e tests', () => {
|
|
58
|
+
let tempDir;
|
|
59
|
+
let mainRepoDir;
|
|
60
|
+
let bareOriginDir;
|
|
61
|
+
beforeAll(() => {
|
|
62
|
+
// Ensure CLI is built
|
|
63
|
+
const newprPath = path.join(CLI_DIR, 'newpr.js');
|
|
64
|
+
if (!fs.existsSync(newprPath)) {
|
|
65
|
+
throw new Error('CLI not built. Run "npm run build" before running e2e tests.');
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
beforeEach(() => {
|
|
69
|
+
// Create fresh temp directory for each test
|
|
70
|
+
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'newpr-fullflow-'));
|
|
71
|
+
// Create bare origin repository (simulates GitHub remote)
|
|
72
|
+
// Name it 'main-repo.git' so getRepoName extracts 'main-repo'
|
|
73
|
+
bareOriginDir = path.join(tempDir, 'main-repo.git');
|
|
74
|
+
fs.mkdirSync(bareOriginDir);
|
|
75
|
+
git(['init', '--bare'], bareOriginDir);
|
|
76
|
+
// Create main repository
|
|
77
|
+
mainRepoDir = path.join(tempDir, 'main-repo');
|
|
78
|
+
fs.mkdirSync(mainRepoDir);
|
|
79
|
+
git(['init', '-b', 'main'], mainRepoDir);
|
|
80
|
+
git(['config', 'user.email', 'test@test.com'], mainRepoDir);
|
|
81
|
+
git(['config', 'user.name', 'Test User'], mainRepoDir);
|
|
82
|
+
// Add remote pointing to bare origin
|
|
83
|
+
git(['remote', 'add', 'origin', bareOriginDir], mainRepoDir);
|
|
84
|
+
// Create initial commit
|
|
85
|
+
fs.writeFileSync(path.join(mainRepoDir, 'README.md'), '# Test Repo\n');
|
|
86
|
+
git(['add', '.'], mainRepoDir);
|
|
87
|
+
git(['commit', '-m', 'Initial commit'], mainRepoDir);
|
|
88
|
+
// Push to origin and set up tracking
|
|
89
|
+
git(['push', '-u', 'origin', 'main'], mainRepoDir);
|
|
90
|
+
});
|
|
91
|
+
afterEach(() => {
|
|
92
|
+
// Clean up temp directory
|
|
93
|
+
if (tempDir) {
|
|
94
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
describe('main_unstaged_same scenario', () => {
|
|
98
|
+
it('stages and commits uncommitted files when user selects option 1', () => {
|
|
99
|
+
// Create an uncommitted file
|
|
100
|
+
const featureFile = path.join(mainRepoDir, 'feature.ts');
|
|
101
|
+
fs.writeFileSync(featureFile, 'export const feature = () => "hello";\n');
|
|
102
|
+
// Verify initial state - file is untracked
|
|
103
|
+
const statusBefore = git(['status', '--porcelain'], mainRepoDir);
|
|
104
|
+
expect(statusBefore).toContain('?? feature.ts');
|
|
105
|
+
// Run newpr with simulated input "1\n" to select option 1
|
|
106
|
+
// Option 1 = "Stage all and commit to the new PR branch"
|
|
107
|
+
const result = runCli('newpr', ['my-new-feature'], {
|
|
108
|
+
cwd: mainRepoDir,
|
|
109
|
+
input: '1\n',
|
|
110
|
+
});
|
|
111
|
+
// Should succeed
|
|
112
|
+
expect(result.exitCode).toBe(0);
|
|
113
|
+
// Verify PR was "created" (mocked)
|
|
114
|
+
expect(result.stdout).toMatch(/PR #\d+/);
|
|
115
|
+
expect(result.stdout).toContain('worktree ready');
|
|
116
|
+
// Verify a worktree was created
|
|
117
|
+
const worktreePath = path.join(tempDir, 'main-repo.pr1');
|
|
118
|
+
expect(fs.existsSync(worktreePath)).toBe(true);
|
|
119
|
+
// Verify the feature file exists in the worktree
|
|
120
|
+
const worktreeFeatureFile = path.join(worktreePath, 'feature.ts');
|
|
121
|
+
expect(fs.existsSync(worktreeFeatureFile)).toBe(true);
|
|
122
|
+
expect(fs.readFileSync(worktreeFeatureFile, 'utf-8')).toContain('export const feature');
|
|
123
|
+
});
|
|
124
|
+
it('preserves file content through the entire workflow', () => {
|
|
125
|
+
// Create multiple uncommitted files
|
|
126
|
+
fs.mkdirSync(path.join(mainRepoDir, 'src'), { recursive: true });
|
|
127
|
+
fs.writeFileSync(path.join(mainRepoDir, 'src/index.ts'), 'export * from "./utils";\n');
|
|
128
|
+
fs.writeFileSync(path.join(mainRepoDir, 'src/utils.ts'), 'export const utils = { version: "1.0.0" };\n');
|
|
129
|
+
fs.writeFileSync(path.join(mainRepoDir, 'package.json'), JSON.stringify({ name: 'test', version: '1.0.0' }, null, 2));
|
|
130
|
+
// Run newpr with option 1
|
|
131
|
+
const result = runCli('newpr', ['add-utils-module'], {
|
|
132
|
+
cwd: mainRepoDir,
|
|
133
|
+
input: '1\n',
|
|
134
|
+
});
|
|
135
|
+
expect(result.exitCode).toBe(0);
|
|
136
|
+
// Verify all files exist in the worktree with correct content
|
|
137
|
+
const worktreePath = path.join(tempDir, 'main-repo.pr1');
|
|
138
|
+
const indexContent = readFileNormalized(path.join(worktreePath, 'src/index.ts'));
|
|
139
|
+
expect(indexContent).toBe('export * from "./utils";\n');
|
|
140
|
+
const utilsContent = readFileNormalized(path.join(worktreePath, 'src/utils.ts'));
|
|
141
|
+
expect(utilsContent).toBe('export const utils = { version: "1.0.0" };\n');
|
|
142
|
+
const pkgContent = JSON.parse(fs.readFileSync(path.join(worktreePath, 'package.json'), 'utf-8'));
|
|
143
|
+
expect(pkgContent.name).toBe('test');
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
describe('main_staged_same scenario', () => {
|
|
147
|
+
it('commits already staged files when user selects option 1', () => {
|
|
148
|
+
// Create and stage a file
|
|
149
|
+
const featureFile = path.join(mainRepoDir, 'staged-feature.ts');
|
|
150
|
+
fs.writeFileSync(featureFile, 'export const staged = true;\n');
|
|
151
|
+
git(['add', 'staged-feature.ts'], mainRepoDir);
|
|
152
|
+
// Verify file is staged
|
|
153
|
+
const statusBefore = git(['status', '--porcelain'], mainRepoDir);
|
|
154
|
+
expect(statusBefore).toContain('A staged-feature.ts');
|
|
155
|
+
// Run newpr with option 1
|
|
156
|
+
// Option 1 for staged = "Commit staged changes to the new PR branch"
|
|
157
|
+
const result = runCli('newpr', ['staged-feature'], {
|
|
158
|
+
cwd: mainRepoDir,
|
|
159
|
+
input: '1\n',
|
|
160
|
+
});
|
|
161
|
+
expect(result.exitCode).toBe(0);
|
|
162
|
+
// Verify worktree has the file
|
|
163
|
+
const worktreePath = path.join(tempDir, 'main-repo.pr1');
|
|
164
|
+
const worktreeFile = path.join(worktreePath, 'staged-feature.ts');
|
|
165
|
+
expect(fs.existsSync(worktreeFile)).toBe(true);
|
|
166
|
+
expect(readFileNormalized(worktreeFile)).toBe('export const staged = true;\n');
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
describe('main_both_same scenario', () => {
|
|
170
|
+
it('stages all and commits when user selects option 2', () => {
|
|
171
|
+
// Create one staged file
|
|
172
|
+
const stagedFile = path.join(mainRepoDir, 'staged.ts');
|
|
173
|
+
fs.writeFileSync(stagedFile, 'export const staged = 1;\n');
|
|
174
|
+
git(['add', 'staged.ts'], mainRepoDir);
|
|
175
|
+
// Create one unstaged file
|
|
176
|
+
const unstagedFile = path.join(mainRepoDir, 'unstaged.ts');
|
|
177
|
+
fs.writeFileSync(unstagedFile, 'export const unstaged = 2;\n');
|
|
178
|
+
// Verify initial state
|
|
179
|
+
const statusBefore = git(['status', '--porcelain'], mainRepoDir);
|
|
180
|
+
expect(statusBefore).toContain('A staged.ts');
|
|
181
|
+
expect(statusBefore).toContain('?? unstaged.ts');
|
|
182
|
+
// Run newpr with option 2 ("Stage all and commit everything to the new PR branch")
|
|
183
|
+
// Options for main_both_same:
|
|
184
|
+
// 1. Commit staged to PR branch, move unstaged to new worktree
|
|
185
|
+
// 2. Stage all and commit everything to the new PR branch
|
|
186
|
+
// 3. Leave all changes here and continue with empty initial commit
|
|
187
|
+
// 4. Stash all changes (will restore after)
|
|
188
|
+
// 5. Cancel
|
|
189
|
+
const result = runCli('newpr', ['both-changes'], {
|
|
190
|
+
cwd: mainRepoDir,
|
|
191
|
+
input: '2\n',
|
|
192
|
+
});
|
|
193
|
+
expect(result.exitCode).toBe(0);
|
|
194
|
+
// Verify both files exist in worktree
|
|
195
|
+
const worktreePath = path.join(tempDir, 'main-repo.pr1');
|
|
196
|
+
expect(fs.existsSync(path.join(worktreePath, 'staged.ts'))).toBe(true);
|
|
197
|
+
expect(fs.existsSync(path.join(worktreePath, 'unstaged.ts'))).toBe(true);
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
describe('origin/main ahead scenario (bug regression)', () => {
|
|
201
|
+
it('preserves staged changes when origin/main has moved ahead', () => {
|
|
202
|
+
// Push an upstream commit (simulating origin/main moving ahead)
|
|
203
|
+
const tempClone = path.join(tempDir, 'temp-clone');
|
|
204
|
+
git(['clone', '-b', 'main', bareOriginDir, 'temp-clone'], tempDir);
|
|
205
|
+
git(['config', 'user.email', 'upstream@test.com'], tempClone);
|
|
206
|
+
git(['config', 'user.name', 'Upstream User'], tempClone);
|
|
207
|
+
fs.writeFileSync(path.join(tempClone, 'upstream-change.txt'), 'upstream content\n');
|
|
208
|
+
git(['add', '.'], tempClone);
|
|
209
|
+
git(['commit', '-m', 'Upstream commit'], tempClone);
|
|
210
|
+
git(['push', 'origin', 'main'], tempClone);
|
|
211
|
+
fs.rmSync(tempClone, { recursive: true, force: true });
|
|
212
|
+
// Fetch in main repo so origin/main is ahead
|
|
213
|
+
git(['fetch', 'origin'], mainRepoDir);
|
|
214
|
+
// Verify origin/main is ahead
|
|
215
|
+
const localHead = git(['rev-parse', 'HEAD'], mainRepoDir);
|
|
216
|
+
const originHead = git(['rev-parse', 'origin/main'], mainRepoDir);
|
|
217
|
+
expect(localHead).not.toBe(originHead);
|
|
218
|
+
// Create an uncommitted file in main repo
|
|
219
|
+
const featureFile = path.join(mainRepoDir, 'my-feature.ts');
|
|
220
|
+
fs.writeFileSync(featureFile, 'export const myFeature = () => {};\n');
|
|
221
|
+
// Run newpr with option 1
|
|
222
|
+
const result = runCli('newpr', ['feature-with-origin-ahead'], {
|
|
223
|
+
cwd: mainRepoDir,
|
|
224
|
+
input: '1\n',
|
|
225
|
+
});
|
|
226
|
+
expect(result.exitCode).toBe(0);
|
|
227
|
+
// KEY ASSERTION: The file should exist in the worktree
|
|
228
|
+
// This verifies the fix for branchFrom: 'head' instead of 'origin_main'
|
|
229
|
+
const worktreePath = path.join(tempDir, 'main-repo.pr1');
|
|
230
|
+
const worktreeFeatureFile = path.join(worktreePath, 'my-feature.ts');
|
|
231
|
+
expect(fs.existsSync(worktreeFeatureFile)).toBe(true);
|
|
232
|
+
expect(fs.readFileSync(worktreeFeatureFile, 'utf-8')).toContain('myFeature');
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
describe('running from subdirectory', () => {
|
|
236
|
+
it('stages all files when run from a subdirectory', () => {
|
|
237
|
+
// Create files in different directories
|
|
238
|
+
fs.mkdirSync(path.join(mainRepoDir, 'src'), { recursive: true });
|
|
239
|
+
fs.mkdirSync(path.join(mainRepoDir, 'docs'), { recursive: true });
|
|
240
|
+
fs.writeFileSync(path.join(mainRepoDir, 'src/code.ts'), 'export const code = 1;\n');
|
|
241
|
+
fs.writeFileSync(path.join(mainRepoDir, 'docs/README.md'), '# Docs\n');
|
|
242
|
+
fs.writeFileSync(path.join(mainRepoDir, 'root-file.txt'), 'root content\n');
|
|
243
|
+
// Run newpr from src/ subdirectory
|
|
244
|
+
const srcDir = path.join(mainRepoDir, 'src');
|
|
245
|
+
const result = runCli('newpr', ['subdir-test'], {
|
|
246
|
+
cwd: srcDir, // Running from subdirectory!
|
|
247
|
+
input: '1\n',
|
|
248
|
+
});
|
|
249
|
+
expect(result.exitCode).toBe(0);
|
|
250
|
+
// Verify ALL files exist in worktree (not just files in src/)
|
|
251
|
+
const worktreePath = path.join(tempDir, 'main-repo.pr1');
|
|
252
|
+
expect(fs.existsSync(path.join(worktreePath, 'src/code.ts'))).toBe(true);
|
|
253
|
+
expect(fs.existsSync(path.join(worktreePath, 'docs/README.md'))).toBe(true);
|
|
254
|
+
expect(fs.existsSync(path.join(worktreePath, 'root-file.txt'))).toBe(true);
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
describe('error handling', () => {
|
|
258
|
+
it('handles cancel option gracefully', () => {
|
|
259
|
+
// Create uncommitted file
|
|
260
|
+
fs.writeFileSync(path.join(mainRepoDir, 'test.ts'), 'test\n');
|
|
261
|
+
// Run newpr and select the cancel option (last option)
|
|
262
|
+
// For main_unstaged_same, options are:
|
|
263
|
+
// 1. Stage all and commit to the new PR branch
|
|
264
|
+
// 2. Leave changes here and continue with empty initial commit
|
|
265
|
+
// 3. Stash changes (will restore after)
|
|
266
|
+
// 4. Cancel
|
|
267
|
+
const result = runCli('newpr', ['cancel-test'], {
|
|
268
|
+
cwd: mainRepoDir,
|
|
269
|
+
input: '4\n', // Select cancel (option 4)
|
|
270
|
+
});
|
|
271
|
+
// Should exit with error (aborted by user)
|
|
272
|
+
expect(result.exitCode).toBe(1);
|
|
273
|
+
// Abort message may be in stdout or stderr
|
|
274
|
+
const output = (result.stdout + result.stderr).toLowerCase();
|
|
275
|
+
expect(output).toContain('abort');
|
|
276
|
+
});
|
|
277
|
+
});
|
|
278
|
+
});
|
|
279
|
+
//# sourceMappingURL=newpr-full-flow.e2e.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newpr-full-flow.e2e.test.js","sourceRoot":"","sources":["../../src/e2e/newpr-full-flow.e2e.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lswt-remote-pr.integration.test.d.ts","sourceRoot":"","sources":["../../src/integration/lswt-remote-pr.integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
|
|
2
|
+
import { execSync } from 'child_process';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import os from 'os';
|
|
6
|
+
import { gatherWorktreeInfo, createDefaultDeps, } from '../lib/lswt/worktree-info.js';
|
|
7
|
+
/**
|
|
8
|
+
* Integration tests for lswt remote PR functionality.
|
|
9
|
+
* These tests create a real git repository and test worktree gathering
|
|
10
|
+
* with mocked GitHub PR data.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Normalize a path for cross-platform comparison.
|
|
14
|
+
*/
|
|
15
|
+
function normalizePath(p) {
|
|
16
|
+
try {
|
|
17
|
+
return path.normalize(fs.realpathSync.native(p)).toLowerCase();
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return path.normalize(p).toLowerCase();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
describe('lswt remote PR integration', () => {
|
|
24
|
+
let tempDir;
|
|
25
|
+
let repoDir;
|
|
26
|
+
let worktreeDir;
|
|
27
|
+
const defaultOptions = {
|
|
28
|
+
json: false,
|
|
29
|
+
verbose: false,
|
|
30
|
+
showStatus: true, // Enable to get remote PRs
|
|
31
|
+
interactive: false,
|
|
32
|
+
};
|
|
33
|
+
// Create temp directory and git repo before all tests
|
|
34
|
+
beforeAll(() => {
|
|
35
|
+
tempDir = fs.realpathSync.native(fs.mkdtempSync(path.join(os.tmpdir(), 'lswt-remote-pr-test-')));
|
|
36
|
+
repoDir = path.join(tempDir, 'test-repo');
|
|
37
|
+
fs.mkdirSync(repoDir);
|
|
38
|
+
// Initialize git repo
|
|
39
|
+
execSync('git init', { cwd: repoDir });
|
|
40
|
+
execSync('git config user.email "test@test.com"', { cwd: repoDir });
|
|
41
|
+
execSync('git config user.name "Test User"', { cwd: repoDir });
|
|
42
|
+
// Create initial commit
|
|
43
|
+
fs.writeFileSync(path.join(repoDir, 'README.md'), '# Test Repo\n');
|
|
44
|
+
execSync('git add .', { cwd: repoDir });
|
|
45
|
+
execSync('git commit -m "Initial commit"', { cwd: repoDir });
|
|
46
|
+
// Create a branch that we'll use for a "local PR"
|
|
47
|
+
execSync('git checkout -b feat/local-pr-1', { cwd: repoDir });
|
|
48
|
+
fs.writeFileSync(path.join(repoDir, 'feature1.txt'), 'Feature 1\n');
|
|
49
|
+
execSync('git add .', { cwd: repoDir });
|
|
50
|
+
execSync('git commit -m "Add feature 1"', { cwd: repoDir });
|
|
51
|
+
// Go back to main/master before creating worktree
|
|
52
|
+
execSync('git checkout master', { cwd: repoDir });
|
|
53
|
+
// Create worktree directory for the branch
|
|
54
|
+
worktreeDir = path.join(tempDir, 'test-repo.pr1');
|
|
55
|
+
execSync(`git worktree add "${worktreeDir}" feat/local-pr-1`, { cwd: repoDir });
|
|
56
|
+
});
|
|
57
|
+
// Clean up after all tests
|
|
58
|
+
afterAll(() => {
|
|
59
|
+
// Remove worktrees first
|
|
60
|
+
try {
|
|
61
|
+
execSync('git worktree prune', { cwd: repoDir, stdio: 'ignore' });
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Ignore errors
|
|
65
|
+
}
|
|
66
|
+
// Remove temp directory
|
|
67
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
68
|
+
});
|
|
69
|
+
describe('gatherWorktreeInfo with remote PRs', () => {
|
|
70
|
+
it('lists local worktrees correctly', async () => {
|
|
71
|
+
const deps = createDefaultDeps();
|
|
72
|
+
const worktrees = await gatherWorktreeInfo(repoDir, defaultOptions, deps);
|
|
73
|
+
expect(worktrees.length).toBeGreaterThanOrEqual(2); // main + PR worktree
|
|
74
|
+
// Find main worktree
|
|
75
|
+
const main = worktrees.find((w) => normalizePath(w.path) === normalizePath(repoDir));
|
|
76
|
+
expect(main).toBeDefined();
|
|
77
|
+
expect(main?.type).toBe('main');
|
|
78
|
+
// Find PR worktree
|
|
79
|
+
const prWorktree = worktrees.find((w) => normalizePath(w.path) === normalizePath(worktreeDir));
|
|
80
|
+
expect(prWorktree).toBeDefined();
|
|
81
|
+
// It could be 'pr' or 'branch' depending on whether status was fetched
|
|
82
|
+
});
|
|
83
|
+
it('includes remote PRs when listOpenPrs returns data', async () => {
|
|
84
|
+
// Create deps with mocked listOpenPrs
|
|
85
|
+
const deps = {
|
|
86
|
+
...createDefaultDeps(),
|
|
87
|
+
listOpenPrs: async () => [
|
|
88
|
+
{
|
|
89
|
+
number: 42,
|
|
90
|
+
title: 'Remote PR Feature',
|
|
91
|
+
headBranch: 'feat/remote-feature',
|
|
92
|
+
url: 'https://github.com/test/repo/pull/42',
|
|
93
|
+
isDraft: false,
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
number: 99,
|
|
97
|
+
title: 'Another Remote PR',
|
|
98
|
+
headBranch: 'fix/remote-fix',
|
|
99
|
+
url: 'https://github.com/test/repo/pull/99',
|
|
100
|
+
isDraft: true,
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
};
|
|
104
|
+
const worktrees = await gatherWorktreeInfo(repoDir, defaultOptions, deps);
|
|
105
|
+
// Should have local worktrees + remote PRs
|
|
106
|
+
expect(worktrees.length).toBeGreaterThanOrEqual(4); // main + local PR + 2 remote PRs
|
|
107
|
+
// Find remote PRs
|
|
108
|
+
const remotePrs = worktrees.filter((w) => w.type === 'remote_pr');
|
|
109
|
+
expect(remotePrs.length).toBe(2);
|
|
110
|
+
// Check remote PR properties
|
|
111
|
+
const remotePr42 = remotePrs.find((w) => w.prNumber === 42);
|
|
112
|
+
expect(remotePr42).toBeDefined();
|
|
113
|
+
expect(remotePr42?.prTitle).toBe('Remote PR Feature');
|
|
114
|
+
expect(remotePr42?.branch).toBe('feat/remote-feature');
|
|
115
|
+
expect(remotePr42?.isDraft).toBe(false);
|
|
116
|
+
const remotePr99 = remotePrs.find((w) => w.prNumber === 99);
|
|
117
|
+
expect(remotePr99).toBeDefined();
|
|
118
|
+
expect(remotePr99?.prTitle).toBe('Another Remote PR');
|
|
119
|
+
expect(remotePr99?.isDraft).toBe(true);
|
|
120
|
+
});
|
|
121
|
+
it('filters out remote PRs that have local worktrees', async () => {
|
|
122
|
+
// Create deps with mocked listOpenPrs that includes a PR that has a local worktree
|
|
123
|
+
const deps = {
|
|
124
|
+
...createDefaultDeps(),
|
|
125
|
+
listOpenPrs: async () => [
|
|
126
|
+
{
|
|
127
|
+
// This should be filtered out because we have a worktree for feat/local-pr-1
|
|
128
|
+
number: 1,
|
|
129
|
+
title: 'Local PR Feature',
|
|
130
|
+
headBranch: 'feat/local-pr-1',
|
|
131
|
+
url: 'https://github.com/test/repo/pull/1',
|
|
132
|
+
isDraft: false,
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
// This should be included
|
|
136
|
+
number: 42,
|
|
137
|
+
title: 'Remote Only PR',
|
|
138
|
+
headBranch: 'feat/remote-only',
|
|
139
|
+
url: 'https://github.com/test/repo/pull/42',
|
|
140
|
+
isDraft: false,
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
};
|
|
144
|
+
const worktrees = await gatherWorktreeInfo(repoDir, defaultOptions, deps);
|
|
145
|
+
// Find remote PRs
|
|
146
|
+
const remotePrs = worktrees.filter((w) => w.type === 'remote_pr');
|
|
147
|
+
// Should only have remote PRs for branches without local worktrees
|
|
148
|
+
expect(remotePrs.length).toBe(1);
|
|
149
|
+
expect(remotePrs[0].prNumber).toBe(42);
|
|
150
|
+
expect(remotePrs[0].branch).toBe('feat/remote-only');
|
|
151
|
+
});
|
|
152
|
+
it('does not include remote PRs when showStatus is false', async () => {
|
|
153
|
+
const deps = {
|
|
154
|
+
...createDefaultDeps(),
|
|
155
|
+
listOpenPrs: async () => [
|
|
156
|
+
{
|
|
157
|
+
number: 42,
|
|
158
|
+
title: 'Remote PR Feature',
|
|
159
|
+
headBranch: 'feat/remote-feature',
|
|
160
|
+
url: 'https://github.com/test/repo/pull/42',
|
|
161
|
+
isDraft: false,
|
|
162
|
+
},
|
|
163
|
+
],
|
|
164
|
+
};
|
|
165
|
+
const optionsWithoutStatus = { ...defaultOptions, showStatus: false };
|
|
166
|
+
const worktrees = await gatherWorktreeInfo(repoDir, optionsWithoutStatus, deps);
|
|
167
|
+
// Should only have local worktrees
|
|
168
|
+
const remotePrs = worktrees.filter((w) => w.type === 'remote_pr');
|
|
169
|
+
expect(remotePrs.length).toBe(0);
|
|
170
|
+
});
|
|
171
|
+
it('handles listOpenPrs errors gracefully', async () => {
|
|
172
|
+
const deps = {
|
|
173
|
+
...createDefaultDeps(),
|
|
174
|
+
listOpenPrs: async () => {
|
|
175
|
+
throw new Error('GitHub API error');
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
const worktrees = await gatherWorktreeInfo(repoDir, defaultOptions, deps);
|
|
179
|
+
// Should still return local worktrees
|
|
180
|
+
expect(worktrees.length).toBeGreaterThanOrEqual(2);
|
|
181
|
+
// Should have no remote PRs (error handled gracefully)
|
|
182
|
+
const remotePrs = worktrees.filter((w) => w.type === 'remote_pr');
|
|
183
|
+
expect(remotePrs.length).toBe(0);
|
|
184
|
+
});
|
|
185
|
+
it('correctly sorts worktrees with remote PRs', async () => {
|
|
186
|
+
const deps = {
|
|
187
|
+
...createDefaultDeps(),
|
|
188
|
+
listOpenPrs: async () => [
|
|
189
|
+
{
|
|
190
|
+
number: 99,
|
|
191
|
+
title: 'Remote PR 99',
|
|
192
|
+
headBranch: 'feat/remote-99',
|
|
193
|
+
url: 'https://github.com/test/repo/pull/99',
|
|
194
|
+
isDraft: false,
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
number: 42,
|
|
198
|
+
title: 'Remote PR 42',
|
|
199
|
+
headBranch: 'feat/remote-42',
|
|
200
|
+
url: 'https://github.com/test/repo/pull/42',
|
|
201
|
+
isDraft: false,
|
|
202
|
+
},
|
|
203
|
+
],
|
|
204
|
+
};
|
|
205
|
+
const worktrees = await gatherWorktreeInfo(repoDir, defaultOptions, deps);
|
|
206
|
+
// Get remote PRs
|
|
207
|
+
const remotePrs = worktrees.filter((w) => w.type === 'remote_pr');
|
|
208
|
+
expect(remotePrs.length).toBe(2);
|
|
209
|
+
// Remote PRs should be sorted by PR number
|
|
210
|
+
expect(remotePrs[0].prNumber).toBe(42);
|
|
211
|
+
expect(remotePrs[1].prNumber).toBe(99);
|
|
212
|
+
// Main should be first
|
|
213
|
+
expect(worktrees[0].type).toBe('main');
|
|
214
|
+
// Remote PRs should come after local worktrees but be in order
|
|
215
|
+
const remotePrIndices = worktrees
|
|
216
|
+
.map((w, i) => (w.type === 'remote_pr' ? i : -1))
|
|
217
|
+
.filter((i) => i >= 0);
|
|
218
|
+
expect(remotePrIndices[0]).toBeLessThan(remotePrIndices[1]);
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
//# sourceMappingURL=lswt-remote-pr.integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lswt-remote-pr.integration.test.js","sourceRoot":"","sources":["../../src/integration/lswt-remote-pr.integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newpr-branchfrom-head.integration.test.d.ts","sourceRoot":"","sources":["../../src/integration/newpr-branchfrom-head.integration.test.ts"],"names":[],"mappings":""}
|