sync-worktrees 0.4.1 → 0.5.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.
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 +46 -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,222 +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_loader_service_1 = require("../config-loader.service");
40
- (0, globals_1.describe)("ConfigLoaderService", () => {
41
- let configLoader;
42
- let tempDir;
43
- (0, globals_1.beforeEach)(async () => {
44
- configLoader = new config_loader_service_1.ConfigLoaderService();
45
- tempDir = await fs.mkdtemp(path.join(process.cwd(), "test-config-"));
46
- });
47
- afterEach(async () => {
48
- await fs.rm(tempDir, { recursive: true, force: true });
49
- });
50
- (0, globals_1.describe)("loadConfigFile", () => {
51
- (0, globals_1.it)("should load a valid config file", async () => {
52
- const configPath = path.join(tempDir, "test.config.js");
53
- const configContent = `
54
- module.exports = {
55
- repositories: [
56
- {
57
- name: "test-repo",
58
- repoPath: "/path/to/repo",
59
- worktreeDir: "/path/to/worktrees"
60
- }
61
- ]
62
- };
63
- `;
64
- await fs.writeFile(configPath, configContent);
65
- const config = await configLoader.loadConfigFile(configPath);
66
- (0, globals_1.expect)(config.repositories).toHaveLength(1);
67
- (0, globals_1.expect)(config.repositories[0].name).toBe("test-repo");
68
- });
69
- (0, globals_1.it)("should load config with defaults", async () => {
70
- const configPath = path.join(tempDir, "test.config.js");
71
- const configContent = `
72
- module.exports = {
73
- defaults: {
74
- cronSchedule: "*/30 * * * *",
75
- runOnce: true
76
- },
77
- repositories: [
78
- {
79
- name: "test-repo",
80
- repoPath: "/path/to/repo",
81
- worktreeDir: "/path/to/worktrees"
82
- }
83
- ]
84
- };
85
- `;
86
- await fs.writeFile(configPath, configContent);
87
- const config = await configLoader.loadConfigFile(configPath);
88
- (0, globals_1.expect)(config.defaults).toEqual({
89
- cronSchedule: "*/30 * * * *",
90
- runOnce: true,
91
- });
92
- });
93
- (0, globals_1.it)("should throw error for non-existent file", async () => {
94
- const configPath = path.join(tempDir, "non-existent.config.js");
95
- await (0, globals_1.expect)(configLoader.loadConfigFile(configPath)).rejects.toThrow("Config file not found");
96
- });
97
- (0, globals_1.it)("should throw error for invalid config format", async () => {
98
- const configPath = path.join(tempDir, "invalid.config.js");
99
- const configContent = `module.exports = "not an object";`;
100
- await fs.writeFile(configPath, configContent);
101
- await (0, globals_1.expect)(configLoader.loadConfigFile(configPath)).rejects.toThrow("Config file must export an object");
102
- });
103
- (0, globals_1.it)("should throw error for missing repositories array", async () => {
104
- const configPath = path.join(tempDir, "invalid.config.js");
105
- const configContent = `module.exports = { defaults: {} };`;
106
- await fs.writeFile(configPath, configContent);
107
- await (0, globals_1.expect)(configLoader.loadConfigFile(configPath)).rejects.toThrow("Config file must have a 'repositories' array");
108
- });
109
- (0, globals_1.it)("should throw error for duplicate repository names", async () => {
110
- const configPath = path.join(tempDir, "duplicate.config.js");
111
- const configContent = `
112
- module.exports = {
113
- repositories: [
114
- {
115
- name: "duplicate",
116
- repoPath: "/path1",
117
- worktreeDir: "/worktrees1"
118
- },
119
- {
120
- name: "duplicate",
121
- repoPath: "/path2",
122
- worktreeDir: "/worktrees2"
123
- }
124
- ]
125
- };
126
- `;
127
- await fs.writeFile(configPath, configContent);
128
- await (0, globals_1.expect)(configLoader.loadConfigFile(configPath)).rejects.toThrow("Duplicate repository name: duplicate");
129
- });
130
- });
131
- (0, globals_1.describe)("resolveRepositoryConfig", () => {
132
- (0, globals_1.it)("should resolve relative paths", () => {
133
- const repo = {
134
- name: "test",
135
- repoPath: "./relative/path",
136
- worktreeDir: "./relative/worktrees",
137
- cronSchedule: "0 * * * *",
138
- runOnce: false,
139
- };
140
- const resolved = configLoader.resolveRepositoryConfig(repo, {}, "/base/dir");
141
- (0, globals_1.expect)(resolved.repoPath).toBe("/base/dir/relative/path");
142
- (0, globals_1.expect)(resolved.worktreeDir).toBe("/base/dir/relative/worktrees");
143
- });
144
- (0, globals_1.it)("should preserve absolute paths", () => {
145
- const repo = {
146
- name: "test",
147
- repoPath: "/absolute/path",
148
- worktreeDir: "/absolute/worktrees",
149
- cronSchedule: "0 * * * *",
150
- runOnce: false,
151
- };
152
- const resolved = configLoader.resolveRepositoryConfig(repo, {}, "/base/dir");
153
- (0, globals_1.expect)(resolved.repoPath).toBe("/absolute/path");
154
- (0, globals_1.expect)(resolved.worktreeDir).toBe("/absolute/worktrees");
155
- });
156
- (0, globals_1.it)("should apply defaults", () => {
157
- const repo = {
158
- name: "test",
159
- repoPath: "/path",
160
- worktreeDir: "/worktrees",
161
- cronSchedule: undefined,
162
- runOnce: undefined,
163
- };
164
- const defaults = {
165
- cronSchedule: "*/15 * * * *",
166
- runOnce: true,
167
- };
168
- const resolved = configLoader.resolveRepositoryConfig(repo, defaults);
169
- (0, globals_1.expect)(resolved.cronSchedule).toBe("*/15 * * * *");
170
- (0, globals_1.expect)(resolved.runOnce).toBe(true);
171
- });
172
- (0, globals_1.it)("should override defaults with repo config", () => {
173
- const repo = {
174
- name: "test",
175
- repoPath: "/path",
176
- worktreeDir: "/worktrees",
177
- cronSchedule: "0 0 * * *",
178
- runOnce: false,
179
- };
180
- const defaults = {
181
- cronSchedule: "*/15 * * * *",
182
- runOnce: true,
183
- };
184
- const resolved = configLoader.resolveRepositoryConfig(repo, defaults);
185
- (0, globals_1.expect)(resolved.cronSchedule).toBe("0 0 * * *");
186
- (0, globals_1.expect)(resolved.runOnce).toBe(false);
187
- });
188
- });
189
- (0, globals_1.describe)("filterRepositories", () => {
190
- const repos = [
191
- { name: "frontend-app", repoPath: "/", worktreeDir: "/", cronSchedule: "", runOnce: false },
192
- { name: "backend-api", repoPath: "/", worktreeDir: "/", cronSchedule: "", runOnce: false },
193
- { name: "docs", repoPath: "/", worktreeDir: "/", cronSchedule: "", runOnce: false },
194
- { name: "admin-dashboard", repoPath: "/", worktreeDir: "/", cronSchedule: "", runOnce: false },
195
- ];
196
- (0, globals_1.it)("should return all repos when no filter", () => {
197
- const filtered = configLoader.filterRepositories(repos);
198
- (0, globals_1.expect)(filtered).toEqual(repos);
199
- });
200
- (0, globals_1.it)("should filter by exact name", () => {
201
- const filtered = configLoader.filterRepositories(repos, "docs");
202
- (0, globals_1.expect)(filtered).toHaveLength(1);
203
- (0, globals_1.expect)(filtered[0].name).toBe("docs");
204
- });
205
- (0, globals_1.it)("should filter by wildcard pattern", () => {
206
- const filtered = configLoader.filterRepositories(repos, "*-app");
207
- (0, globals_1.expect)(filtered).toHaveLength(1);
208
- (0, globals_1.expect)(filtered[0].name).toBe("frontend-app");
209
- });
210
- (0, globals_1.it)("should filter by multiple patterns", () => {
211
- const filtered = configLoader.filterRepositories(repos, "docs,*-api");
212
- (0, globals_1.expect)(filtered).toHaveLength(2);
213
- (0, globals_1.expect)(filtered.map((r) => r.name)).toEqual(["backend-api", "docs"]);
214
- });
215
- (0, globals_1.it)("should handle complex wildcard patterns", () => {
216
- const filtered = configLoader.filterRepositories(repos, "*end*");
217
- (0, globals_1.expect)(filtered).toHaveLength(2);
218
- (0, globals_1.expect)(filtered.map((r) => r.name).sort()).toEqual(["backend-api", "frontend-app"]);
219
- });
220
- });
221
- });
222
- //# sourceMappingURL=config-loader.service.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-loader.service.test.js","sourceRoot":"","sources":["../../../src/services/__tests__/config-loader.service.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=git.service.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.service.test.d.ts","sourceRoot":"","sources":["../../../src/services/__tests__/git.service.test.ts"],"names":[],"mappings":""}
@@ -1,289 +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
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const fs = __importStar(require("fs/promises"));
40
- const globals_1 = require("@jest/globals");
41
- const simple_git_1 = __importDefault(require("simple-git"));
42
- const git_service_1 = require("../git.service");
43
- // Mock the modules
44
- globals_1.jest.mock("fs/promises");
45
- globals_1.jest.mock("simple-git");
46
- (0, globals_1.describe)("GitService", () => {
47
- let gitService;
48
- let mockConfig;
49
- let mockGit;
50
- (0, globals_1.beforeEach)(() => {
51
- // Reset all mocks
52
- globals_1.jest.clearAllMocks();
53
- // Setup mock config
54
- mockConfig = {
55
- repoPath: "/test/repo",
56
- repoUrl: "https://github.com/test/repo.git",
57
- worktreeDir: "/test/worktrees",
58
- cronSchedule: "0 * * * *",
59
- runOnce: false,
60
- };
61
- // Setup mock git instance
62
- mockGit = {
63
- fetch: globals_1.jest.fn().mockResolvedValue(undefined),
64
- branch: globals_1.jest.fn().mockResolvedValue({
65
- all: ["origin/main", "origin/feature-1", "origin/feature-2", "local-branch"],
66
- current: "main",
67
- }),
68
- raw: globals_1.jest.fn().mockResolvedValue(""),
69
- status: globals_1.jest.fn().mockResolvedValue({ isClean: globals_1.jest.fn().mockReturnValue(true) }),
70
- clone: globals_1.jest.fn().mockResolvedValue(undefined),
71
- };
72
- // Mock simpleGit factory
73
- simple_git_1.default.mockReturnValue(mockGit);
74
- gitService = new git_service_1.GitService(mockConfig);
75
- });
76
- (0, globals_1.describe)("initialize", () => {
77
- (0, globals_1.it)("should use existing repository when path exists", async () => {
78
- // Mock fs.access to succeed (path exists)
79
- fs.access.mockResolvedValue(undefined);
80
- const git = await gitService.initialize();
81
- (0, globals_1.expect)(fs.access).toHaveBeenCalledWith("/test/repo");
82
- (0, globals_1.expect)(simple_git_1.default).toHaveBeenCalledWith("/test/repo");
83
- (0, globals_1.expect)(git).toBe(mockGit);
84
- });
85
- (0, globals_1.it)("should clone repository when path does not exist and URL is provided", async () => {
86
- // Mock fs.access to fail (path doesn't exist)
87
- fs.access.mockRejectedValue(new Error("ENOENT"));
88
- await gitService.initialize();
89
- (0, globals_1.expect)(fs.access).toHaveBeenCalledWith("/test/repo");
90
- (0, globals_1.expect)(simple_git_1.default).toHaveBeenCalledWith(); // Called without args for cloning
91
- (0, globals_1.expect)(mockGit.clone).toHaveBeenCalledWith("https://github.com/test/repo.git", "/test/repo");
92
- (0, globals_1.expect)(simple_git_1.default).toHaveBeenCalledWith("/test/repo"); // Called again after cloning
93
- });
94
- (0, globals_1.it)("should throw error when path does not exist and no URL is provided", async () => {
95
- // Mock fs.access to fail
96
- fs.access.mockRejectedValue(new Error("ENOENT"));
97
- // Remove repoUrl from config
98
- const configWithoutUrl = { ...mockConfig, repoUrl: undefined };
99
- const serviceWithoutUrl = new git_service_1.GitService(configWithoutUrl);
100
- await (0, globals_1.expect)(serviceWithoutUrl.initialize()).rejects.toThrow('Repo path "/test/repo" not found and no --repoUrl was provided to clone from.');
101
- });
102
- });
103
- (0, globals_1.describe)("getGit", () => {
104
- (0, globals_1.it)("should throw error when service is not initialized", () => {
105
- (0, globals_1.expect)(() => gitService.getGit()).toThrow("Git service not initialized. Call initialize() first.");
106
- });
107
- (0, globals_1.it)("should return git instance when initialized", async () => {
108
- fs.access.mockResolvedValue(undefined);
109
- await gitService.initialize();
110
- const git = gitService.getGit();
111
- (0, globals_1.expect)(git).toBe(mockGit);
112
- });
113
- });
114
- (0, globals_1.describe)("fetchAll", () => {
115
- (0, globals_1.beforeEach)(async () => {
116
- fs.access.mockResolvedValue(undefined);
117
- await gitService.initialize();
118
- });
119
- (0, globals_1.it)("should fetch with --all and --prune flags", async () => {
120
- await gitService.fetchAll();
121
- (0, globals_1.expect)(mockGit.fetch).toHaveBeenCalledWith(["--all", "--prune"]);
122
- });
123
- });
124
- (0, globals_1.describe)("getRemoteBranches", () => {
125
- (0, globals_1.beforeEach)(async () => {
126
- fs.access.mockResolvedValue(undefined);
127
- await gitService.initialize();
128
- });
129
- (0, globals_1.it)("should return only remote branches without origin prefix", async () => {
130
- const branches = await gitService.getRemoteBranches();
131
- (0, globals_1.expect)(mockGit.branch).toHaveBeenCalledWith(["-r"]);
132
- (0, globals_1.expect)(branches).toEqual(["main", "feature-1", "feature-2"]);
133
- });
134
- (0, globals_1.it)("should handle empty branch list", async () => {
135
- mockGit.branch.mockResolvedValue({ all: [], current: "" });
136
- const branches = await gitService.getRemoteBranches();
137
- (0, globals_1.expect)(branches).toEqual([]);
138
- });
139
- });
140
- (0, globals_1.describe)("addWorktree", () => {
141
- (0, globals_1.beforeEach)(async () => {
142
- fs.access.mockResolvedValue(undefined);
143
- await gitService.initialize();
144
- });
145
- (0, globals_1.it)("should add worktree with correct parameters", async () => {
146
- await gitService.addWorktree("feature-1", "/test/worktrees/feature-1");
147
- (0, globals_1.expect)(mockGit.raw).toHaveBeenCalledWith(["worktree", "add", "/test/worktrees/feature-1", "feature-1"]);
148
- });
149
- });
150
- (0, globals_1.describe)("removeWorktree", () => {
151
- (0, globals_1.beforeEach)(async () => {
152
- fs.access.mockResolvedValue(undefined);
153
- await gitService.initialize();
154
- });
155
- (0, globals_1.it)("should remove worktree with force flag", async () => {
156
- await gitService.removeWorktree("feature-1");
157
- (0, globals_1.expect)(mockGit.raw).toHaveBeenCalledWith(["worktree", "remove", "feature-1", "--force"]);
158
- });
159
- });
160
- (0, globals_1.describe)("pruneWorktrees", () => {
161
- (0, globals_1.beforeEach)(async () => {
162
- fs.access.mockResolvedValue(undefined);
163
- await gitService.initialize();
164
- });
165
- (0, globals_1.it)("should prune worktrees", async () => {
166
- await gitService.pruneWorktrees();
167
- (0, globals_1.expect)(mockGit.raw).toHaveBeenCalledWith(["worktree", "prune"]);
168
- });
169
- });
170
- (0, globals_1.describe)("checkWorktreeStatus", () => {
171
- (0, globals_1.it)("should return true when worktree is clean", async () => {
172
- const mockWorktreeGit = {
173
- status: globals_1.jest.fn().mockResolvedValue({
174
- isClean: globals_1.jest.fn().mockReturnValue(true),
175
- }),
176
- };
177
- simple_git_1.default.mockReturnValue(mockWorktreeGit);
178
- const isClean = await gitService.checkWorktreeStatus("/test/worktrees/feature-1");
179
- (0, globals_1.expect)(simple_git_1.default).toHaveBeenCalledWith("/test/worktrees/feature-1");
180
- (0, globals_1.expect)(isClean).toBe(true);
181
- });
182
- (0, globals_1.it)("should return false when worktree has changes", async () => {
183
- const mockWorktreeGit = {
184
- status: globals_1.jest.fn().mockResolvedValue({
185
- isClean: globals_1.jest.fn().mockReturnValue(false),
186
- }),
187
- };
188
- simple_git_1.default.mockReturnValue(mockWorktreeGit);
189
- const isClean = await gitService.checkWorktreeStatus("/test/worktrees/feature-1");
190
- (0, globals_1.expect)(isClean).toBe(false);
191
- });
192
- });
193
- (0, globals_1.describe)("hasUnpushedCommits", () => {
194
- (0, globals_1.it)("should return true when worktree has unpushed commits", async () => {
195
- await gitService.initialize();
196
- const mockWorktreeGit = {
197
- branch: globals_1.jest.fn().mockResolvedValue({
198
- current: "feature-1",
199
- }),
200
- raw: globals_1.jest.fn().mockResolvedValue("3\n"), // 3 unpushed commits
201
- };
202
- simple_git_1.default.mockReturnValue(mockWorktreeGit);
203
- const hasUnpushed = await gitService.hasUnpushedCommits("/test/worktrees/feature-1");
204
- (0, globals_1.expect)(hasUnpushed).toBe(true);
205
- (0, globals_1.expect)(mockWorktreeGit.raw).toHaveBeenCalledWith(["rev-list", "--count", "feature-1", "--not", "--remotes"]);
206
- });
207
- (0, globals_1.it)("should return false when worktree has no unpushed commits", async () => {
208
- await gitService.initialize();
209
- const mockWorktreeGit = {
210
- branch: globals_1.jest.fn().mockResolvedValue({
211
- current: "feature-1",
212
- }),
213
- raw: globals_1.jest.fn().mockResolvedValue("0\n"), // No unpushed commits
214
- };
215
- simple_git_1.default.mockReturnValue(mockWorktreeGit);
216
- const hasUnpushed = await gitService.hasUnpushedCommits("/test/worktrees/feature-1");
217
- (0, globals_1.expect)(hasUnpushed).toBe(false);
218
- });
219
- (0, globals_1.it)("should handle errors and return false", async () => {
220
- await gitService.initialize();
221
- const mockWorktreeGit = {
222
- branch: globals_1.jest.fn().mockRejectedValue(new Error("Branch command failed")),
223
- };
224
- simple_git_1.default.mockReturnValue(mockWorktreeGit);
225
- const consoleSpy = globals_1.jest.spyOn(console, "error").mockImplementation(() => { });
226
- const hasUnpushed = await gitService.hasUnpushedCommits("/test/worktrees/feature-1");
227
- (0, globals_1.expect)(hasUnpushed).toBe(false);
228
- (0, globals_1.expect)(consoleSpy).toHaveBeenCalledWith(globals_1.expect.stringContaining("Error checking unpushed commits"));
229
- consoleSpy.mockRestore();
230
- });
231
- });
232
- (0, globals_1.describe)("getWorktrees", () => {
233
- (0, globals_1.it)("should parse worktree list output correctly", async () => {
234
- await gitService.initialize();
235
- mockGit.raw.mockResolvedValue(`worktree /path/to/repo
236
- branch refs/heads/main
237
-
238
- worktree /path/to/worktrees/feature-1
239
- branch refs/heads/feature-1
240
-
241
- worktree /path/to/worktrees/feature-2
242
- branch refs/heads/feature-2
243
- `);
244
- const worktrees = await gitService.getWorktrees();
245
- (0, globals_1.expect)(mockGit.raw).toHaveBeenCalledWith(["worktree", "list", "--porcelain"]);
246
- (0, globals_1.expect)(worktrees).toEqual([
247
- { path: "/path/to/repo", branch: "main" },
248
- { path: "/path/to/worktrees/feature-1", branch: "feature-1" },
249
- { path: "/path/to/worktrees/feature-2", branch: "feature-2" },
250
- ]);
251
- });
252
- (0, globals_1.it)("should handle worktree list with no trailing newline", async () => {
253
- await gitService.initialize();
254
- mockGit.raw.mockResolvedValue(`worktree /path/to/repo
255
- branch refs/heads/main
256
-
257
- worktree /path/to/worktrees/feature-1
258
- branch refs/heads/feature-1`);
259
- const worktrees = await gitService.getWorktrees();
260
- (0, globals_1.expect)(worktrees).toEqual([
261
- { path: "/path/to/repo", branch: "main" },
262
- { path: "/path/to/worktrees/feature-1", branch: "feature-1" },
263
- ]);
264
- });
265
- (0, globals_1.it)("should handle empty worktree list", async () => {
266
- await gitService.initialize();
267
- mockGit.raw.mockResolvedValue("");
268
- const worktrees = await gitService.getWorktrees();
269
- (0, globals_1.expect)(worktrees).toEqual([]);
270
- });
271
- (0, globals_1.it)("should skip worktrees without branch info", async () => {
272
- await gitService.initialize();
273
- mockGit.raw.mockResolvedValue(`worktree /path/to/repo
274
- branch refs/heads/main
275
-
276
- worktree /path/to/worktrees/detached
277
-
278
- worktree /path/to/worktrees/feature-1
279
- branch refs/heads/feature-1
280
- `);
281
- const worktrees = await gitService.getWorktrees();
282
- (0, globals_1.expect)(worktrees).toEqual([
283
- { path: "/path/to/repo", branch: "main" },
284
- { path: "/path/to/worktrees/feature-1", branch: "feature-1" },
285
- ]);
286
- });
287
- });
288
- });
289
- //# sourceMappingURL=git.service.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.service.test.js","sourceRoot":"","sources":["../../../src/services/__tests__/git.service.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=worktree-sync.service.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worktree-sync.service.test.d.ts","sourceRoot":"","sources":["../../../src/services/__tests__/worktree-sync.service.test.ts"],"names":[],"mappings":""}