sync-worktrees 0.4.1 → 0.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.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +55 -80
  3. package/dist/index.js +7 -4
  4. package/dist/index.js.map +1 -1
  5. package/dist/services/config-loader.service.js +7 -7
  6. package/dist/services/config-loader.service.js.map +1 -1
  7. package/dist/services/git.service.d.ts +3 -0
  8. package/dist/services/git.service.d.ts.map +1 -1
  9. package/dist/services/git.service.js +70 -19
  10. package/dist/services/git.service.js.map +1 -1
  11. package/dist/types/index.d.ts +2 -2
  12. package/dist/types/index.d.ts.map +1 -1
  13. package/dist/utils/cli.d.ts +1 -0
  14. package/dist/utils/cli.d.ts.map +1 -1
  15. package/dist/utils/cli.js +10 -12
  16. package/dist/utils/cli.js.map +1 -1
  17. package/dist/utils/config-generator.d.ts.map +1 -1
  18. package/dist/utils/config-generator.js +55 -20
  19. package/dist/utils/config-generator.js.map +1 -1
  20. package/dist/utils/git-url.d.ts +15 -0
  21. package/dist/utils/git-url.d.ts.map +1 -0
  22. package/dist/utils/git-url.js +41 -0
  23. package/dist/utils/git-url.js.map +1 -0
  24. package/dist/utils/interactive.d.ts.map +1 -1
  25. package/dist/utils/interactive.js +43 -28
  26. package/dist/utils/interactive.js.map +1 -1
  27. package/package.json +8 -5
  28. package/dist/__tests__/fixtures/git-responses.d.ts +0 -114
  29. package/dist/__tests__/fixtures/git-responses.d.ts.map +0 -1
  30. package/dist/__tests__/fixtures/git-responses.js +0 -119
  31. package/dist/__tests__/fixtures/git-responses.js.map +0 -1
  32. package/dist/__tests__/helpers/mock-helpers.d.ts +0 -29
  33. package/dist/__tests__/helpers/mock-helpers.d.ts.map +0 -1
  34. package/dist/__tests__/helpers/mock-helpers.js +0 -82
  35. package/dist/__tests__/helpers/mock-helpers.js.map +0 -1
  36. package/dist/__tests__/integration.test.d.ts +0 -2
  37. package/dist/__tests__/integration.test.d.ts.map +0 -1
  38. package/dist/__tests__/integration.test.js +0 -300
  39. package/dist/__tests__/integration.test.js.map +0 -1
  40. package/dist/__tests__/setup.d.ts +0 -2
  41. package/dist/__tests__/setup.d.ts.map +0 -1
  42. package/dist/__tests__/setup.js +0 -18
  43. package/dist/__tests__/setup.js.map +0 -1
  44. package/dist/services/__tests__/config-loader.service.test.d.ts +0 -2
  45. package/dist/services/__tests__/config-loader.service.test.d.ts.map +0 -1
  46. package/dist/services/__tests__/config-loader.service.test.js +0 -222
  47. package/dist/services/__tests__/config-loader.service.test.js.map +0 -1
  48. package/dist/services/__tests__/git.service.test.d.ts +0 -2
  49. package/dist/services/__tests__/git.service.test.d.ts.map +0 -1
  50. package/dist/services/__tests__/git.service.test.js +0 -289
  51. package/dist/services/__tests__/git.service.test.js.map +0 -1
  52. package/dist/services/__tests__/worktree-sync.service.test.d.ts +0 -2
  53. package/dist/services/__tests__/worktree-sync.service.test.d.ts.map +0 -1
  54. package/dist/services/__tests__/worktree-sync.service.test.js +0 -342
  55. package/dist/services/__tests__/worktree-sync.service.test.js.map +0 -1
  56. package/dist/utils/__tests__/config-generator.test.d.ts +0 -2
  57. package/dist/utils/__tests__/config-generator.test.d.ts.map +0 -1
  58. package/dist/utils/__tests__/config-generator.test.js +0 -142
  59. package/dist/utils/__tests__/config-generator.test.js.map +0 -1
  60. package/dist/utils/__tests__/interactive.test.d.ts +0 -2
  61. package/dist/utils/__tests__/interactive.test.d.ts.map +0 -1
  62. package/dist/utils/__tests__/interactive.test.js +0 -281
  63. package/dist/utils/__tests__/interactive.test.js.map +0 -1
@@ -1,342 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- const fs = __importStar(require("fs/promises"));
37
- const path = __importStar(require("path"));
38
- const globals_1 = require("@jest/globals");
39
- const git_service_1 = require("../git.service");
40
- const worktree_sync_service_1 = require("../worktree-sync.service");
41
- // Mock modules
42
- globals_1.jest.mock("fs/promises");
43
- globals_1.jest.mock("../git.service");
44
- (0, globals_1.describe)("WorktreeSyncService", () => {
45
- let service;
46
- let mockConfig;
47
- let mockGitService;
48
- (0, globals_1.beforeEach)(() => {
49
- globals_1.jest.clearAllMocks();
50
- mockConfig = {
51
- repoPath: "/test/repo",
52
- repoUrl: "https://github.com/test/repo.git",
53
- worktreeDir: "/test/worktrees",
54
- cronSchedule: "0 * * * *",
55
- runOnce: false,
56
- };
57
- // Create mock GitService
58
- mockGitService = {
59
- initialize: globals_1.jest.fn().mockResolvedValue(undefined),
60
- fetchAll: globals_1.jest.fn().mockResolvedValue(undefined),
61
- getRemoteBranches: globals_1.jest.fn().mockResolvedValue(["main", "feature-1", "feature-2"]),
62
- addWorktree: globals_1.jest.fn().mockResolvedValue(undefined),
63
- removeWorktree: globals_1.jest.fn().mockResolvedValue(undefined),
64
- pruneWorktrees: globals_1.jest.fn().mockResolvedValue(undefined),
65
- checkWorktreeStatus: globals_1.jest.fn().mockResolvedValue(true),
66
- hasUnpushedCommits: globals_1.jest.fn().mockResolvedValue(false),
67
- getCurrentBranch: globals_1.jest.fn().mockResolvedValue("main"),
68
- getWorktrees: globals_1.jest.fn().mockResolvedValue([]),
69
- getGit: globals_1.jest.fn(),
70
- };
71
- // Mock GitService constructor
72
- git_service_1.GitService.mockImplementation(() => mockGitService);
73
- service = new worktree_sync_service_1.WorktreeSyncService(mockConfig);
74
- });
75
- (0, globals_1.describe)("initialize", () => {
76
- (0, globals_1.it)("should initialize git service", async () => {
77
- await service.initialize();
78
- (0, globals_1.expect)(mockGitService.initialize).toHaveBeenCalled();
79
- });
80
- });
81
- (0, globals_1.describe)("sync", () => {
82
- (0, globals_1.beforeEach)(async () => {
83
- await service.initialize();
84
- fs.mkdir.mockResolvedValue(undefined);
85
- });
86
- (0, globals_1.it)("should complete full sync workflow successfully", async () => {
87
- // Mock existing worktree directories
88
- fs.readdir.mockResolvedValue(["feature-1", "old-branch"]);
89
- // Mock actual Git worktrees
90
- mockGitService.getWorktrees.mockResolvedValue([
91
- { path: "/test/worktrees/feature-1", branch: "feature-1" },
92
- { path: "/test/worktrees/old-branch", branch: "old-branch" },
93
- ]);
94
- await service.sync();
95
- // Verify workflow steps
96
- (0, globals_1.expect)(mockGitService.fetchAll).toHaveBeenCalled();
97
- (0, globals_1.expect)(mockGitService.getRemoteBranches).toHaveBeenCalled();
98
- (0, globals_1.expect)(mockGitService.getCurrentBranch).toHaveBeenCalled();
99
- (0, globals_1.expect)(fs.mkdir).toHaveBeenCalledWith("/test/worktrees", { recursive: true });
100
- (0, globals_1.expect)(mockGitService.getWorktrees).toHaveBeenCalled();
101
- // Should create new worktree for feature-2 (but not main, as it's the current branch)
102
- (0, globals_1.expect)(mockGitService.addWorktree).toHaveBeenCalledWith("feature-2", path.join("/test/worktrees", "feature-2"));
103
- (0, globals_1.expect)(mockGitService.addWorktree).not.toHaveBeenCalledWith("main", path.join("/test/worktrees", "main"));
104
- // Should check and remove old-branch
105
- (0, globals_1.expect)(mockGitService.checkWorktreeStatus).toHaveBeenCalledWith(path.join("/test/worktrees", "old-branch"));
106
- (0, globals_1.expect)(mockGitService.hasUnpushedCommits).toHaveBeenCalledWith(path.join("/test/worktrees", "old-branch"));
107
- (0, globals_1.expect)(mockGitService.removeWorktree).toHaveBeenCalledWith(path.join("/test/worktrees", "old-branch"));
108
- // Should prune at the end
109
- (0, globals_1.expect)(mockGitService.pruneWorktrees).toHaveBeenCalled();
110
- });
111
- (0, globals_1.it)("should handle empty remote branches", async () => {
112
- mockGitService.getRemoteBranches.mockResolvedValue([]);
113
- fs.readdir.mockResolvedValue([]);
114
- await service.sync();
115
- (0, globals_1.expect)(mockGitService.addWorktree).not.toHaveBeenCalled();
116
- (0, globals_1.expect)(mockGitService.removeWorktree).not.toHaveBeenCalled();
117
- (0, globals_1.expect)(mockGitService.pruneWorktrees).toHaveBeenCalled();
118
- });
119
- (0, globals_1.it)("should skip worktrees with local changes", async () => {
120
- fs.readdir.mockResolvedValue(["dirty-branch"]);
121
- mockGitService.getWorktrees.mockResolvedValue([{ path: "/test/worktrees/dirty-branch", branch: "dirty-branch" }]);
122
- mockGitService.checkWorktreeStatus.mockResolvedValue(false); // Has local changes
123
- await service.sync();
124
- (0, globals_1.expect)(mockGitService.checkWorktreeStatus).toHaveBeenCalledWith(path.join("/test/worktrees", "dirty-branch"));
125
- (0, globals_1.expect)(mockGitService.removeWorktree).not.toHaveBeenCalled();
126
- });
127
- (0, globals_1.it)("should skip worktrees with unpushed commits", async () => {
128
- fs.readdir.mockResolvedValue(["unpushed-branch"]);
129
- mockGitService.getWorktrees.mockResolvedValue([
130
- { path: "/test/worktrees/unpushed-branch", branch: "unpushed-branch" },
131
- ]);
132
- mockGitService.checkWorktreeStatus.mockResolvedValue(true); // Clean
133
- mockGitService.hasUnpushedCommits.mockResolvedValue(true); // Has unpushed commits
134
- await service.sync();
135
- (0, globals_1.expect)(mockGitService.checkWorktreeStatus).toHaveBeenCalledWith(path.join("/test/worktrees", "unpushed-branch"));
136
- (0, globals_1.expect)(mockGitService.hasUnpushedCommits).toHaveBeenCalledWith(path.join("/test/worktrees", "unpushed-branch"));
137
- (0, globals_1.expect)(mockGitService.removeWorktree).not.toHaveBeenCalled();
138
- });
139
- (0, globals_1.it)("should skip worktrees with both local changes and unpushed commits", async () => {
140
- fs.readdir.mockResolvedValue(["dirty-unpushed-branch"]);
141
- mockGitService.getWorktrees.mockResolvedValue([
142
- { path: "/test/worktrees/dirty-unpushed-branch", branch: "dirty-unpushed-branch" },
143
- ]);
144
- mockGitService.checkWorktreeStatus.mockResolvedValue(false); // Has local changes
145
- mockGitService.hasUnpushedCommits.mockResolvedValue(true); // Has unpushed commits
146
- await service.sync();
147
- (0, globals_1.expect)(mockGitService.checkWorktreeStatus).toHaveBeenCalledWith(path.join("/test/worktrees", "dirty-unpushed-branch"));
148
- (0, globals_1.expect)(mockGitService.hasUnpushedCommits).toHaveBeenCalledWith(path.join("/test/worktrees", "dirty-unpushed-branch"));
149
- (0, globals_1.expect)(mockGitService.removeWorktree).not.toHaveBeenCalled();
150
- });
151
- (0, globals_1.it)("should handle errors during sync but still cleanup", async () => {
152
- const error = new Error("Fetch failed");
153
- mockGitService.fetchAll.mockRejectedValue(error);
154
- await (0, globals_1.expect)(service.sync()).rejects.toThrow("Fetch failed");
155
- // Verify error is logged
156
- (0, globals_1.expect)(console.error).toHaveBeenCalledWith("Error during worktree synchronization:", error);
157
- });
158
- (0, globals_1.it)("should handle errors when checking worktree status", async () => {
159
- fs.readdir.mockResolvedValue(["broken-branch"]);
160
- mockGitService.getWorktrees.mockResolvedValue([
161
- { path: "/test/worktrees/broken-branch", branch: "broken-branch" },
162
- ]);
163
- mockGitService.checkWorktreeStatus.mockRejectedValue(new Error("Status check failed"));
164
- await service.sync();
165
- // Should log error but continue
166
- (0, globals_1.expect)(console.error).toHaveBeenCalledWith(globals_1.expect.stringContaining("Error checking worktree"), globals_1.expect.any(Error));
167
- (0, globals_1.expect)(mockGitService.removeWorktree).not.toHaveBeenCalled();
168
- (0, globals_1.expect)(mockGitService.pruneWorktrees).toHaveBeenCalled();
169
- });
170
- (0, globals_1.it)("should create multiple new worktrees", async () => {
171
- mockGitService.getRemoteBranches.mockResolvedValue(["main", "feature-1", "feature-2", "feature-3"]);
172
- fs.readdir.mockResolvedValue([]);
173
- await service.sync();
174
- // Should skip main (current branch) and create the other 3
175
- (0, globals_1.expect)(mockGitService.addWorktree).toHaveBeenCalledTimes(3);
176
- (0, globals_1.expect)(mockGitService.addWorktree).toHaveBeenCalledWith("feature-1", path.join("/test/worktrees", "feature-1"));
177
- (0, globals_1.expect)(mockGitService.addWorktree).toHaveBeenCalledWith("feature-2", path.join("/test/worktrees", "feature-2"));
178
- (0, globals_1.expect)(mockGitService.addWorktree).toHaveBeenCalledWith("feature-3", path.join("/test/worktrees", "feature-3"));
179
- (0, globals_1.expect)(mockGitService.addWorktree).not.toHaveBeenCalledWith("main", path.join("/test/worktrees", "main"));
180
- });
181
- (0, globals_1.it)("should remove multiple stale worktrees", async () => {
182
- mockGitService.getRemoteBranches.mockResolvedValue(["main"]);
183
- fs.readdir.mockResolvedValue(["old-1", "old-2", "old-3"]);
184
- mockGitService.getWorktrees.mockResolvedValue([
185
- { path: "/test/worktrees/old-1", branch: "old-1" },
186
- { path: "/test/worktrees/old-2", branch: "old-2" },
187
- { path: "/test/worktrees/old-3", branch: "old-3" },
188
- ]);
189
- mockGitService.checkWorktreeStatus.mockResolvedValue(true); // All clean
190
- await service.sync();
191
- (0, globals_1.expect)(mockGitService.removeWorktree).toHaveBeenCalledTimes(3);
192
- (0, globals_1.expect)(mockGitService.removeWorktree).toHaveBeenCalledWith(path.join("/test/worktrees", "old-1"));
193
- (0, globals_1.expect)(mockGitService.removeWorktree).toHaveBeenCalledWith(path.join("/test/worktrees", "old-2"));
194
- (0, globals_1.expect)(mockGitService.removeWorktree).toHaveBeenCalledWith(path.join("/test/worktrees", "old-3"));
195
- });
196
- (0, globals_1.it)("should only remove worktrees that are clean with no unpushed commits", async () => {
197
- mockGitService.getRemoteBranches.mockResolvedValue(["main"]);
198
- fs.readdir.mockResolvedValue(["deleted-clean", "deleted-dirty", "deleted-unpushed"]);
199
- mockGitService.getWorktrees.mockResolvedValue([
200
- { path: "/test/worktrees/deleted-clean", branch: "deleted-clean" },
201
- { path: "/test/worktrees/deleted-dirty", branch: "deleted-dirty" },
202
- { path: "/test/worktrees/deleted-unpushed", branch: "deleted-unpushed" },
203
- ]);
204
- // Set up different conditions for each worktree
205
- mockGitService.checkWorktreeStatus
206
- .mockResolvedValueOnce(true) // deleted-clean: clean
207
- .mockResolvedValueOnce(false) // deleted-dirty: has uncommitted changes
208
- .mockResolvedValueOnce(true); // deleted-unpushed: clean
209
- mockGitService.hasUnpushedCommits
210
- .mockResolvedValueOnce(false) // deleted-clean: no unpushed commits
211
- .mockResolvedValueOnce(false) // deleted-dirty: no unpushed commits (but won't be checked due to uncommitted changes)
212
- .mockResolvedValueOnce(true); // deleted-unpushed: has unpushed commits
213
- await service.sync();
214
- // Should only remove the worktree that is both clean AND has no unpushed commits
215
- (0, globals_1.expect)(mockGitService.removeWorktree).toHaveBeenCalledTimes(1);
216
- (0, globals_1.expect)(mockGitService.removeWorktree).toHaveBeenCalledWith(path.join("/test/worktrees", "deleted-clean"));
217
- (0, globals_1.expect)(mockGitService.removeWorktree).not.toHaveBeenCalledWith(path.join("/test/worktrees", "deleted-dirty"));
218
- (0, globals_1.expect)(mockGitService.removeWorktree).not.toHaveBeenCalledWith(path.join("/test/worktrees", "deleted-unpushed"));
219
- // Verify all safety checks were performed
220
- (0, globals_1.expect)(mockGitService.checkWorktreeStatus).toHaveBeenCalledTimes(3);
221
- (0, globals_1.expect)(mockGitService.hasUnpushedCommits).toHaveBeenCalledTimes(3); // Called for all worktrees regardless of checkWorktreeStatus result
222
- });
223
- (0, globals_1.it)("should clean up orphaned directories that are not Git worktrees", async () => {
224
- // Mock file system with directories that don't match Git worktrees
225
- fs.readdir.mockResolvedValue(["feature-1", "orphaned-dir", "another-orphan"]);
226
- // Mock Git worktrees - only feature-1 is a valid worktree
227
- mockGitService.getWorktrees.mockResolvedValue([{ path: "/test/worktrees/feature-1", branch: "feature-1" }]);
228
- // Mock fs.stat to return directory info
229
- const mockStat = { isDirectory: globals_1.jest.fn().mockReturnValue(true) };
230
- fs.stat.mockResolvedValue(mockStat);
231
- // Mock fs.rm
232
- fs.rm.mockResolvedValue(undefined);
233
- await service.sync();
234
- // Should remove orphaned directories
235
- (0, globals_1.expect)(fs.rm).toHaveBeenCalledTimes(2);
236
- (0, globals_1.expect)(fs.rm).toHaveBeenCalledWith(path.join("/test/worktrees", "orphaned-dir"), {
237
- recursive: true,
238
- force: true,
239
- });
240
- (0, globals_1.expect)(fs.rm).toHaveBeenCalledWith(path.join("/test/worktrees", "another-orphan"), {
241
- recursive: true,
242
- force: true,
243
- });
244
- // Should not remove valid worktree directory
245
- (0, globals_1.expect)(fs.rm).not.toHaveBeenCalledWith(path.join("/test/worktrees", "feature-1"), globals_1.expect.any(Object));
246
- });
247
- (0, globals_1.it)("should handle errors during orphaned directory cleanup gracefully", async () => {
248
- fs.readdir.mockResolvedValue(["feature-1", "orphaned-dir"]);
249
- mockGitService.getWorktrees.mockResolvedValue([{ path: "/test/worktrees/feature-1", branch: "feature-1" }]);
250
- const mockStat = { isDirectory: globals_1.jest.fn().mockReturnValue(true) };
251
- fs.stat.mockResolvedValue(mockStat);
252
- // Mock fs.rm to throw an error
253
- fs.rm.mockRejectedValue(new Error("Permission denied"));
254
- // Should not throw, just log the error
255
- await service.sync();
256
- (0, globals_1.expect)(console.error).toHaveBeenCalledWith(globals_1.expect.stringContaining("Failed to remove orphaned directory"), globals_1.expect.any(Error));
257
- // Should continue with the rest of the sync
258
- (0, globals_1.expect)(mockGitService.pruneWorktrees).toHaveBeenCalled();
259
- });
260
- (0, globals_1.it)("should handle errors when reading worktree directory", async () => {
261
- // Mock fs.readdir to throw an error
262
- fs.readdir.mockRejectedValue(new Error("Permission denied"));
263
- mockGitService.getWorktrees.mockResolvedValue([{ path: "/test/worktrees/feature-1", branch: "feature-1" }]);
264
- // Should not throw, just log the error
265
- await service.sync();
266
- (0, globals_1.expect)(console.error).toHaveBeenCalledWith("Error during orphaned directory cleanup:", globals_1.expect.any(Error));
267
- // Should continue with the rest of the sync
268
- (0, globals_1.expect)(mockGitService.pruneWorktrees).toHaveBeenCalled();
269
- });
270
- (0, globals_1.describe)("branches with slashes in names", () => {
271
- (0, globals_1.it)("should handle feature branches with slashes correctly", async () => {
272
- const remoteBranchesWithSlashes = ["main", "feat/LCR-8879", "feat/PHX-3198", "bugfix/issue-123"];
273
- mockGitService.getRemoteBranches.mockResolvedValue(remoteBranchesWithSlashes);
274
- mockGitService.getCurrentBranch.mockResolvedValue("main");
275
- // First sync - create worktrees
276
- fs.readdir.mockResolvedValue([]);
277
- mockGitService.getWorktrees.mockResolvedValue([]);
278
- await service.sync();
279
- // Should create worktrees with full paths including slashes
280
- (0, globals_1.expect)(mockGitService.addWorktree).toHaveBeenCalledWith("feat/LCR-8879", path.join("/test/worktrees", "feat/LCR-8879"));
281
- (0, globals_1.expect)(mockGitService.addWorktree).toHaveBeenCalledWith("feat/PHX-3198", path.join("/test/worktrees", "feat/PHX-3198"));
282
- (0, globals_1.expect)(mockGitService.addWorktree).toHaveBeenCalledWith("bugfix/issue-123", path.join("/test/worktrees", "bugfix/issue-123"));
283
- });
284
- (0, globals_1.it)("should not treat parent directories of slash branches as orphaned", async () => {
285
- mockGitService.getRemoteBranches.mockResolvedValue(["main", "feat/LCR-8879", "feat/PHX-3198"]);
286
- mockGitService.getCurrentBranch.mockResolvedValue("main");
287
- // Mock file system showing nested structure
288
- fs.readdir.mockResolvedValue(["feat"]); // Parent directory
289
- // Mock Git worktrees with nested paths
290
- mockGitService.getWorktrees.mockResolvedValue([
291
- { path: "/test/worktrees/feat/LCR-8879", branch: "feat/LCR-8879" },
292
- { path: "/test/worktrees/feat/PHX-3198", branch: "feat/PHX-3198" },
293
- ]);
294
- // Mock fs.stat to identify 'feat' as a directory
295
- const mockStat = { isDirectory: globals_1.jest.fn().mockReturnValue(true) };
296
- fs.stat.mockResolvedValue(mockStat);
297
- fs.rm.mockResolvedValue(undefined);
298
- await service.sync();
299
- // Should NOT remove the 'feat' directory as it contains valid worktrees
300
- (0, globals_1.expect)(fs.rm).not.toHaveBeenCalled();
301
- (0, globals_1.expect)(console.log).not.toHaveBeenCalledWith(globals_1.expect.stringContaining("Removed orphaned directory: feat"));
302
- });
303
- (0, globals_1.it)("should remove slash-named worktrees correctly when branch is deleted", async () => {
304
- mockGitService.getRemoteBranches.mockResolvedValue(["main"]); // feat branches deleted from remote
305
- mockGitService.getCurrentBranch.mockResolvedValue("main");
306
- fs.readdir.mockResolvedValue(["feat"]);
307
- mockGitService.getWorktrees.mockResolvedValue([
308
- { path: "/test/worktrees/feat/LCR-8879", branch: "feat/LCR-8879" },
309
- { path: "/test/worktrees/feat/PHX-3198", branch: "feat/PHX-3198" },
310
- ]);
311
- mockGitService.checkWorktreeStatus.mockResolvedValue(true); // All clean
312
- mockGitService.hasUnpushedCommits.mockResolvedValue(false); // No unpushed
313
- await service.sync();
314
- // Should remove both worktrees with their full paths
315
- (0, globals_1.expect)(mockGitService.removeWorktree).toHaveBeenCalledWith(path.join("/test/worktrees", "feat/LCR-8879"));
316
- (0, globals_1.expect)(mockGitService.removeWorktree).toHaveBeenCalledWith(path.join("/test/worktrees", "feat/PHX-3198"));
317
- });
318
- (0, globals_1.it)("should handle mixed flat and nested worktree structures", async () => {
319
- mockGitService.getRemoteBranches.mockResolvedValue(["main", "simple-branch", "feat/nested-branch"]);
320
- mockGitService.getCurrentBranch.mockResolvedValue("main");
321
- // Mock mixed directory structure
322
- fs.readdir.mockResolvedValue(["simple-branch", "feat", "orphaned-dir"]);
323
- mockGitService.getWorktrees.mockResolvedValue([
324
- { path: "/test/worktrees/simple-branch", branch: "simple-branch" },
325
- { path: "/test/worktrees/feat/nested-branch", branch: "feat/nested-branch" },
326
- ]);
327
- const mockStat = { isDirectory: globals_1.jest.fn().mockReturnValue(true) };
328
- fs.stat.mockResolvedValue(mockStat);
329
- fs.rm.mockResolvedValue(undefined);
330
- await service.sync();
331
- // Should only remove truly orphaned directory
332
- (0, globals_1.expect)(fs.rm).toHaveBeenCalledTimes(1);
333
- (0, globals_1.expect)(fs.rm).toHaveBeenCalledWith(path.join("/test/worktrees", "orphaned-dir"), {
334
- recursive: true,
335
- force: true,
336
- });
337
- (0, globals_1.expect)(fs.rm).not.toHaveBeenCalledWith(path.join("/test/worktrees", "feat"), globals_1.expect.any(Object));
338
- });
339
- });
340
- });
341
- });
342
- //# sourceMappingURL=worktree-sync.service.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worktree-sync.service.test.js","sourceRoot":"","sources":["../../../src/services/__tests__/worktree-sync.service.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=config-generator.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-generator.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/config-generator.test.ts"],"names":[],"mappings":""}
@@ -1,142 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- const fs = __importStar(require("fs/promises"));
37
- const path = __importStar(require("path"));
38
- const globals_1 = require("@jest/globals");
39
- const config_generator_1 = require("../config-generator");
40
- (0, globals_1.describe)("Config Generator", () => {
41
- let tempDir;
42
- (0, globals_1.beforeEach)(async () => {
43
- tempDir = await fs.mkdtemp(path.join(process.cwd(), "test-config-gen-"));
44
- });
45
- afterEach(async () => {
46
- await fs.rm(tempDir, { recursive: true, force: true });
47
- });
48
- (0, globals_1.describe)("generateConfigFile", () => {
49
- (0, globals_1.it)("should generate a basic config file", async () => {
50
- const config = {
51
- repoPath: "/absolute/path/to/repo",
52
- worktreeDir: "/absolute/path/to/worktrees",
53
- cronSchedule: "0 * * * *",
54
- runOnce: false,
55
- };
56
- const configPath = path.join(tempDir, "test.config.js");
57
- await (0, config_generator_1.generateConfigFile)(config, configPath);
58
- const content = await fs.readFile(configPath, "utf-8");
59
- (0, globals_1.expect)(content).toContain('name: "repo"');
60
- (0, globals_1.expect)(content).toContain('repoPath: "/absolute/path/to/repo"');
61
- (0, globals_1.expect)(content).toContain('worktreeDir: "/absolute/path/to/worktrees"');
62
- (0, globals_1.expect)(content).toContain('cronSchedule: "0 * * * *"');
63
- (0, globals_1.expect)(content).toContain("runOnce: false");
64
- });
65
- (0, globals_1.it)("should include repoUrl when provided", async () => {
66
- const config = {
67
- repoPath: "/path/to/repo",
68
- repoUrl: "https://github.com/user/repo.git",
69
- worktreeDir: "/path/to/worktrees",
70
- cronSchedule: "*/30 * * * *",
71
- runOnce: true,
72
- };
73
- const configPath = path.join(tempDir, "test.config.js");
74
- await (0, config_generator_1.generateConfigFile)(config, configPath);
75
- const content = await fs.readFile(configPath, "utf-8");
76
- (0, globals_1.expect)(content).toContain('repoUrl: "https://github.com/user/repo.git"');
77
- (0, globals_1.expect)(content).toContain('cronSchedule: "*/30 * * * *"');
78
- (0, globals_1.expect)(content).toContain("runOnce: true");
79
- });
80
- (0, globals_1.it)("should use relative paths when appropriate", async () => {
81
- const config = {
82
- repoPath: path.join(tempDir, "repo"),
83
- worktreeDir: path.join(tempDir, "worktrees"),
84
- cronSchedule: "0 * * * *",
85
- runOnce: false,
86
- };
87
- const configPath = path.join(tempDir, "config.js");
88
- await (0, config_generator_1.generateConfigFile)(config, configPath);
89
- const content = await fs.readFile(configPath, "utf-8");
90
- (0, globals_1.expect)(content).toContain('repoPath: "./repo"');
91
- (0, globals_1.expect)(content).toContain('worktreeDir: "./worktrees"');
92
- });
93
- (0, globals_1.it)("should use absolute paths for deeply nested relative paths", async () => {
94
- const config = {
95
- repoPath: "/very/deeply/nested/path/to/repo",
96
- worktreeDir: path.join(tempDir, "worktrees"),
97
- cronSchedule: "0 * * * *",
98
- runOnce: false,
99
- };
100
- const configPath = path.join(tempDir, "sub/dir/config.js");
101
- await fs.mkdir(path.dirname(configPath), { recursive: true });
102
- await (0, config_generator_1.generateConfigFile)(config, configPath);
103
- const content = await fs.readFile(configPath, "utf-8");
104
- (0, globals_1.expect)(content).toContain('repoPath: "/very/deeply/nested/path/to/repo"');
105
- });
106
- (0, globals_1.it)("should create parent directories if they don't exist", async () => {
107
- const config = {
108
- repoPath: "/path/to/repo",
109
- worktreeDir: "/path/to/worktrees",
110
- cronSchedule: "0 * * * *",
111
- runOnce: false,
112
- };
113
- const configPath = path.join(tempDir, "nested/dir/config.js");
114
- await (0, config_generator_1.generateConfigFile)(config, configPath);
115
- const exists = await fs
116
- .access(configPath)
117
- .then(() => true)
118
- .catch(() => false);
119
- (0, globals_1.expect)(exists).toBe(true);
120
- });
121
- (0, globals_1.it)("should include a timestamp in the generated file", async () => {
122
- const config = {
123
- repoPath: "/path/to/repo",
124
- worktreeDir: "/path/to/worktrees",
125
- cronSchedule: "0 * * * *",
126
- runOnce: false,
127
- };
128
- const configPath = path.join(tempDir, "test.config.js");
129
- await (0, config_generator_1.generateConfigFile)(config, configPath);
130
- const content = await fs.readFile(configPath, "utf-8");
131
- (0, globals_1.expect)(content).toMatch(/Generated on \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/);
132
- });
133
- });
134
- (0, globals_1.describe)("getDefaultConfigPath", () => {
135
- (0, globals_1.it)("should return sync-worktrees.config.js in current directory", () => {
136
- const configPath = (0, config_generator_1.getDefaultConfigPath)();
137
- (0, globals_1.expect)(path.basename(configPath)).toBe("sync-worktrees.config.js");
138
- (0, globals_1.expect)(path.dirname(configPath)).toBe(process.cwd());
139
- });
140
- });
141
- });
142
- //# sourceMappingURL=config-generator.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-generator.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/config-generator.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=interactive.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactive.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/interactive.test.ts"],"names":[],"mappings":""}