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 +0,0 @@
1
- {"version":3,"file":"git-responses.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/git-responses.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- import { jest } from "@jest/globals";
2
- import type { SimpleGit } from "simple-git";
3
- /**
4
- * Creates a mock SimpleGit instance with common default behaviors
5
- */
6
- export declare function createMockGit(overrides?: Partial<SimpleGit>): jest.Mocked<SimpleGit>;
7
- /**
8
- * Creates a mock file system structure for testing
9
- */
10
- export interface MockFileSystem {
11
- [path: string]: {
12
- type: "file" | "directory";
13
- content?: string;
14
- children?: string[];
15
- };
16
- }
17
- /**
18
- * Sets up fs.promises mocks based on a mock file system structure
19
- */
20
- export declare function setupMockFileSystem(mockFs: MockFileSystem, fsMock: {
21
- access: jest.Mock<any>;
22
- readdir: jest.Mock<any>;
23
- mkdir: jest.Mock<any>;
24
- }): void;
25
- /**
26
- * Creates a test configuration object
27
- */
28
- export declare function createTestConfig(overrides?: any): any;
29
- //# sourceMappingURL=mock-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-helpers.d.ts","sourceRoot":"","sources":["../../../src/__tests__/helpers/mock-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CA6BpF;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE;IACN,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACvB,GACA,IAAI,CA2BN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,GAAG,OAS/C"}
@@ -1,82 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createMockGit = createMockGit;
4
- exports.setupMockFileSystem = setupMockFileSystem;
5
- exports.createTestConfig = createTestConfig;
6
- const globals_1 = require("@jest/globals");
7
- /**
8
- * Creates a mock SimpleGit instance with common default behaviors
9
- */
10
- function createMockGit(overrides) {
11
- return {
12
- fetch: globals_1.jest.fn().mockResolvedValue(undefined),
13
- branch: globals_1.jest.fn().mockResolvedValue({
14
- all: ["origin/main"],
15
- current: "main",
16
- branches: {},
17
- detached: false,
18
- }),
19
- raw: globals_1.jest.fn().mockResolvedValue(""),
20
- status: globals_1.jest.fn().mockResolvedValue({
21
- isClean: globals_1.jest.fn().mockReturnValue(true),
22
- not_added: [],
23
- conflicted: [],
24
- created: [],
25
- deleted: [],
26
- modified: [],
27
- renamed: [],
28
- files: [],
29
- staged: [],
30
- ahead: 0,
31
- behind: 0,
32
- current: "main",
33
- tracking: "origin/main",
34
- detached: false,
35
- }),
36
- clone: globals_1.jest.fn().mockResolvedValue(undefined),
37
- ...overrides,
38
- };
39
- }
40
- /**
41
- * Sets up fs.promises mocks based on a mock file system structure
42
- */
43
- function setupMockFileSystem(mockFs, fsMock) {
44
- // Mock fs.access
45
- fsMock.access.mockImplementation(async (path) => {
46
- if (!(path in mockFs)) {
47
- throw new Error(`ENOENT: no such file or directory, access '${path}'`);
48
- }
49
- });
50
- // Mock fs.readdir
51
- fsMock.readdir.mockImplementation(async (path) => {
52
- const entry = mockFs[path];
53
- if (!entry) {
54
- throw new Error(`ENOENT: no such file or directory, scandir '${path}'`);
55
- }
56
- if (entry.type !== "directory") {
57
- throw new Error(`ENOTDIR: not a directory, scandir '${path}'`);
58
- }
59
- return entry.children || [];
60
- });
61
- // Mock fs.mkdir
62
- fsMock.mkdir.mockImplementation(async (path, options) => {
63
- if (path in mockFs && !options?.recursive) {
64
- throw new Error(`EEXIST: file already exists, mkdir '${path}'`);
65
- }
66
- mockFs[path] = { type: "directory", children: [] };
67
- });
68
- }
69
- /**
70
- * Creates a test configuration object
71
- */
72
- function createTestConfig(overrides) {
73
- return {
74
- repoPath: "/test/repo",
75
- repoUrl: "https://github.com/test/repo.git",
76
- worktreeDir: "/test/worktrees",
77
- cronSchedule: "0 * * * *",
78
- runOnce: false,
79
- ...overrides,
80
- };
81
- }
82
- //# sourceMappingURL=mock-helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-helpers.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/mock-helpers.ts"],"names":[],"mappings":";;AAOA,sCA6BC;AAgBD,kDAkCC;AAKD,4CASC;AApGD,2CAAqC;AAIrC;;GAEG;AACH,SAAgB,aAAa,CAAC,SAA8B;IAC1D,OAAO;QACL,KAAK,EAAE,cAAI,CAAC,EAAE,EAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAClD,MAAM,EAAE,cAAI,CAAC,EAAE,EAAO,CAAC,iBAAiB,CAAC;YACvC,GAAG,EAAE,CAAC,aAAa,CAAC;YACpB,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,GAAG,EAAE,cAAI,CAAC,EAAE,EAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACzC,MAAM,EAAE,cAAI,CAAC,EAAE,EAAO,CAAC,iBAAiB,CAAC;YACvC,OAAO,EAAE,cAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;YACxC,SAAS,EAAE,EAAE;YACb,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE,aAAa;YACvB,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,KAAK,EAAE,cAAI,CAAC,EAAE,EAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAClD,GAAG,SAAS;KACN,CAAC;AACX,CAAC;AAaD;;GAEG;AACH,SAAgB,mBAAmB,CACjC,MAAsB,EACtB,MAIC;IAED,iBAAiB;IACjB,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QACtD,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,GAAG,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAClB,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,GAAG,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,GAAG,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,gBAAgB;IAChB,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAY,EAAE,OAAa,EAAE,EAAE;QACpE,IAAI,IAAI,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,GAAG,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,SAAe;IAC9C,OAAO;QACL,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,kCAAkC;QAC3C,WAAW,EAAE,iBAAiB;QAC9B,YAAY,EAAE,WAAW;QACzB,OAAO,EAAE,KAAK;QACd,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/integration.test.ts"],"names":[],"mappings":""}
@@ -1,300 +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 cron = __importStar(require("node-cron"));
42
- const simple_git_1 = __importDefault(require("simple-git"));
43
- const worktree_sync_service_1 = require("../services/worktree-sync.service");
44
- // Mock all external dependencies
45
- globals_1.jest.mock("fs/promises");
46
- globals_1.jest.mock("simple-git");
47
- globals_1.jest.mock("node-cron");
48
- // jest.mock('../utils/cli'); // Skip due to ESM issues
49
- (0, globals_1.describe)("Integration Tests", () => {
50
- let mockGit;
51
- let mockScheduledTask;
52
- (0, globals_1.beforeEach)(() => {
53
- globals_1.jest.clearAllMocks();
54
- // Setup mock git
55
- mockGit = {
56
- fetch: globals_1.jest.fn().mockResolvedValue(undefined),
57
- branch: globals_1.jest.fn().mockResolvedValue({
58
- all: ["origin/main", "origin/feature-1", "origin/feature-2"],
59
- current: "main",
60
- }),
61
- raw: globals_1.jest.fn().mockResolvedValue(""),
62
- status: globals_1.jest.fn().mockResolvedValue({
63
- isClean: globals_1.jest.fn().mockReturnValue(true),
64
- }),
65
- clone: globals_1.jest.fn().mockResolvedValue(undefined),
66
- };
67
- simple_git_1.default.mockReturnValue(mockGit);
68
- // Setup mock cron
69
- mockScheduledTask = {
70
- start: globals_1.jest.fn(),
71
- stop: globals_1.jest.fn(),
72
- };
73
- cron.schedule.mockReturnValue(mockScheduledTask);
74
- // Setup mock fs
75
- fs.access.mockResolvedValue(undefined);
76
- fs.mkdir.mockResolvedValue(undefined);
77
- fs.readdir.mockResolvedValue(["main"]);
78
- });
79
- (0, globals_1.describe)("Full sync workflow", () => {
80
- (0, globals_1.it)("should perform complete sync from initialization to cleanup", async () => {
81
- const config = {
82
- repoPath: "/test/repo",
83
- repoUrl: "https://github.com/test/repo.git",
84
- worktreeDir: "/test/worktrees",
85
- cronSchedule: "0 * * * *",
86
- runOnce: true,
87
- };
88
- const service = new worktree_sync_service_1.WorktreeSyncService(config);
89
- // Initialize and sync
90
- await service.initialize();
91
- await service.sync();
92
- // Verify complete workflow
93
- (0, globals_1.expect)(fs.access).toHaveBeenCalledWith("/test/repo");
94
- (0, globals_1.expect)(mockGit.fetch).toHaveBeenCalledWith(["--all", "--prune"]);
95
- (0, globals_1.expect)(mockGit.branch).toHaveBeenCalledWith(["-r"]);
96
- (0, globals_1.expect)(fs.mkdir).toHaveBeenCalledWith("/test/worktrees", { recursive: true });
97
- (0, globals_1.expect)(fs.readdir).toHaveBeenCalledWith("/test/worktrees");
98
- // Should create worktrees for feature-1 and feature-2
99
- (0, globals_1.expect)(mockGit.raw).toHaveBeenCalledWith(["worktree", "add", "/test/worktrees/feature-1", "feature-1"]);
100
- (0, globals_1.expect)(mockGit.raw).toHaveBeenCalledWith(["worktree", "add", "/test/worktrees/feature-2", "feature-2"]);
101
- // Should prune at the end
102
- (0, globals_1.expect)(mockGit.raw).toHaveBeenCalledWith(["worktree", "prune"]);
103
- });
104
- (0, globals_1.it)("should skip creating worktree for currently checked out branch", async () => {
105
- // Mock readdir to return empty (no existing worktrees)
106
- fs.readdir.mockResolvedValueOnce([]);
107
- // Mock branch calls - first for remote branches, second for current branch
108
- mockGit.branch
109
- .mockResolvedValueOnce({
110
- all: ["origin/main", "origin/feature-1", "origin/feature-2"],
111
- current: "feature-1",
112
- })
113
- .mockResolvedValueOnce({
114
- current: "feature-1",
115
- });
116
- const config = {
117
- repoPath: "/test/repo",
118
- repoUrl: "https://github.com/test/repo.git",
119
- worktreeDir: "/test/worktrees",
120
- cronSchedule: "0 * * * *",
121
- runOnce: true,
122
- };
123
- const service = new worktree_sync_service_1.WorktreeSyncService(config);
124
- await service.initialize();
125
- await service.sync();
126
- // Should NOT create worktree for feature-1 (current branch)
127
- (0, globals_1.expect)(mockGit.raw).not.toHaveBeenCalledWith(["worktree", "add", "/test/worktrees/feature-1", "feature-1"]);
128
- // Should create worktrees for main and feature-2
129
- (0, globals_1.expect)(mockGit.raw).toHaveBeenCalledWith(["worktree", "add", "/test/worktrees/main", "main"]);
130
- (0, globals_1.expect)(mockGit.raw).toHaveBeenCalledWith(["worktree", "add", "/test/worktrees/feature-2", "feature-2"]);
131
- });
132
- (0, globals_1.it)("should handle repository cloning on first run", async () => {
133
- // Simulate repo doesn't exist
134
- fs.access.mockRejectedValueOnce(new Error("ENOENT"));
135
- const config = {
136
- repoPath: "/test/new-repo",
137
- repoUrl: "https://github.com/test/repo.git",
138
- worktreeDir: "/test/worktrees",
139
- cronSchedule: "0 * * * *",
140
- runOnce: true,
141
- };
142
- const service = new worktree_sync_service_1.WorktreeSyncService(config);
143
- await service.initialize();
144
- // Should clone the repository
145
- (0, globals_1.expect)(simple_git_1.default).toHaveBeenCalledWith(); // Called without args for cloning
146
- (0, globals_1.expect)(mockGit.clone).toHaveBeenCalledWith("https://github.com/test/repo.git", "/test/new-repo");
147
- });
148
- });
149
- (0, globals_1.describe)("Cron scheduling", () => {
150
- (0, globals_1.it)("should schedule sync when runOnce is false", async () => {
151
- const config = {
152
- repoPath: "/test/repo",
153
- worktreeDir: "/test/worktrees",
154
- cronSchedule: "*/5 * * * *",
155
- runOnce: false,
156
- };
157
- // (parseArguments as jest.Mock).mockReturnValue(config);
158
- // Import and run the main module
159
- // Note: In a real scenario, you'd import your main function
160
- // For this example, we'll simulate the scheduling logic
161
- const service = new worktree_sync_service_1.WorktreeSyncService(config);
162
- await service.initialize();
163
- // Simulate cron scheduling
164
- cron.schedule("*/5 * * * *", async () => {
165
- await service.sync();
166
- });
167
- (0, globals_1.expect)(cron.schedule).toHaveBeenCalledWith("*/5 * * * *", globals_1.expect.any(Function));
168
- });
169
- (0, globals_1.it)("should run initial sync before scheduling cron job", async () => {
170
- const config = {
171
- repoPath: "/test/repo",
172
- worktreeDir: "/test/worktrees",
173
- cronSchedule: "*/30 * * * *",
174
- runOnce: false,
175
- };
176
- const service = new worktree_sync_service_1.WorktreeSyncService(config);
177
- const syncSpy = globals_1.jest.spyOn(service, "sync");
178
- await service.initialize();
179
- // Simulate what index.ts does: initial sync then cron schedule
180
- await service.sync();
181
- // Verify sync was called for initial run
182
- (0, globals_1.expect)(syncSpy).toHaveBeenCalledTimes(1);
183
- // Then schedule cron
184
- const cronCallback = globals_1.jest.fn();
185
- cron.schedule("*/30 * * * *", cronCallback);
186
- (0, globals_1.expect)(cron.schedule).toHaveBeenCalledWith("*/30 * * * *", globals_1.expect.any(Function));
187
- // Verify the initial sync operations were performed
188
- (0, globals_1.expect)(mockGit.fetch).toHaveBeenCalledWith(["--all", "--prune"]);
189
- (0, globals_1.expect)(mockGit.branch).toHaveBeenCalledWith(["-r"]);
190
- });
191
- (0, globals_1.it)("should run once and exit when runOnce is true", async () => {
192
- const config = {
193
- repoPath: "/test/repo",
194
- worktreeDir: "/test/worktrees",
195
- cronSchedule: "0 * * * *",
196
- runOnce: true,
197
- };
198
- const service = new worktree_sync_service_1.WorktreeSyncService(config);
199
- await service.initialize();
200
- await service.sync();
201
- // Should not schedule cron job
202
- (0, globals_1.expect)(cron.schedule).not.toHaveBeenCalled();
203
- });
204
- });
205
- (0, globals_1.describe)("Error handling", () => {
206
- (0, globals_1.it)("should handle and recover from sync errors", async () => {
207
- const config = {
208
- repoPath: "/test/repo",
209
- worktreeDir: "/test/worktrees",
210
- cronSchedule: "0 * * * *",
211
- runOnce: true,
212
- };
213
- // Make fetch fail
214
- mockGit.fetch.mockRejectedValueOnce(new Error("Network error"));
215
- const service = new worktree_sync_service_1.WorktreeSyncService(config);
216
- await service.initialize();
217
- // Should throw but log the error
218
- await (0, globals_1.expect)(service.sync()).rejects.toThrow("Network error");
219
- (0, globals_1.expect)(console.error).toHaveBeenCalledWith("Error during worktree synchronization:", globals_1.expect.any(Error));
220
- });
221
- (0, globals_1.it)("should continue sync even if individual worktree operations fail", async () => {
222
- const config = {
223
- repoPath: "/test/repo",
224
- worktreeDir: "/test/worktrees",
225
- cronSchedule: "0 * * * *",
226
- runOnce: true,
227
- };
228
- // Make first worktree add fail
229
- mockGit.raw.mockRejectedValueOnce(new Error("Worktree already exists")).mockResolvedValue("");
230
- const service = new worktree_sync_service_1.WorktreeSyncService(config);
231
- await service.initialize();
232
- // Should not throw and continue with other operations
233
- await (0, globals_1.expect)(service.sync()).rejects.toThrow("Worktree already exists");
234
- });
235
- });
236
- (0, globals_1.describe)("Complex scenarios", () => {
237
- (0, globals_1.it)("should handle mixed operations: add, remove, and skip", async () => {
238
- const config = {
239
- repoPath: "/test/repo",
240
- worktreeDir: "/test/worktrees",
241
- cronSchedule: "0 * * * *",
242
- runOnce: true,
243
- };
244
- // Setup: existing worktrees include some to keep, some to remove
245
- fs.readdir.mockResolvedValue([
246
- "main", // Keep (exists in remote)
247
- "feature-1", // Keep (exists in remote)
248
- "old-feature", // Remove (not in remote)
249
- "dirty-branch", // Skip removal (has changes)
250
- ]);
251
- // Mock git worktree list --porcelain
252
- const mockRawCalls = [];
253
- mockGit.raw.mockImplementation(async (args) => {
254
- mockRawCalls.push(args);
255
- if (args[0] === "worktree" && args[1] === "list" && args[2] === "--porcelain") {
256
- return `worktree /test/repo
257
- branch refs/heads/main
258
-
259
- worktree /test/worktrees/feature-1
260
- branch refs/heads/feature-1
261
-
262
- worktree /test/worktrees/old-feature
263
- branch refs/heads/old-feature
264
-
265
- worktree /test/worktrees/dirty-branch
266
- branch refs/heads/dirty-branch
267
- `;
268
- }
269
- return "";
270
- });
271
- // Mock fs.stat and fs.rm for orphaned directory cleanup
272
- fs.stat.mockResolvedValue({ isDirectory: globals_1.jest.fn().mockReturnValue(true) });
273
- fs.rm.mockResolvedValue(undefined);
274
- // Mock status checks
275
- const statusChecks = new Map([
276
- ["/test/worktrees/old-feature", true], // Clean, can remove
277
- ["/test/worktrees/dirty-branch", false], // Has changes, skip
278
- ]);
279
- mockGit.status.mockImplementation(async () => {
280
- const currentPath = simple_git_1.default.mock.calls.slice(-1)[0][0];
281
- const isClean = statusChecks.get(currentPath) ?? true;
282
- return { isClean: globals_1.jest.fn().mockReturnValue(isClean) };
283
- });
284
- const service = new worktree_sync_service_1.WorktreeSyncService(config);
285
- await service.initialize();
286
- await service.sync();
287
- // Filter out the worktree list calls
288
- const operationCalls = mockRawCalls.filter((args) => !(args[1] === "list" && args[2] === "--porcelain"));
289
- // Should add feature-2
290
- (0, globals_1.expect)(operationCalls).toContainEqual(["worktree", "add", "/test/worktrees/feature-2", "feature-2"]);
291
- // Should remove old-feature with full path
292
- (0, globals_1.expect)(operationCalls).toContainEqual(["worktree", "remove", "/test/worktrees/old-feature", "--force"]);
293
- // Should NOT remove dirty-branch
294
- (0, globals_1.expect)(operationCalls).not.toContainEqual(["worktree", "remove", "/test/worktrees/dirty-branch", "--force"]);
295
- // Should log warning about dirty-branch
296
- (0, globals_1.expect)(console.log).toHaveBeenCalledWith(globals_1.expect.stringContaining("Skipping removal of 'dirty-branch'"));
297
- });
298
- });
299
- });
300
- //# sourceMappingURL=integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/__tests__/integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=setup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":""}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // Jest setup file for global test configuration
4
- const globals_1 = require("@jest/globals");
5
- // Mock console methods to reduce noise in test output
6
- global.console = {
7
- ...console,
8
- log: globals_1.jest.fn(),
9
- error: globals_1.jest.fn(),
10
- warn: globals_1.jest.fn(),
11
- info: globals_1.jest.fn(),
12
- debug: globals_1.jest.fn(),
13
- };
14
- // Reset mocks after each test
15
- afterEach(() => {
16
- globals_1.jest.clearAllMocks();
17
- });
18
- //# sourceMappingURL=setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":";;AAAA,gDAAgD;AAChD,2CAAqC;AAErC,sDAAsD;AACtD,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,OAAO;IACV,GAAG,EAAE,cAAI,CAAC,EAAE,EAAE;IACd,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;IAChB,IAAI,EAAE,cAAI,CAAC,EAAE,EAAE;IACf,IAAI,EAAE,cAAI,CAAC,EAAE,EAAE;IACf,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;CACjB,CAAC;AAEF,8BAA8B;AAC9B,SAAS,CAAC,GAAG,EAAE;IACb,cAAI,CAAC,aAAa,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=config-loader.service.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-loader.service.test.d.ts","sourceRoot":"","sources":["../../../src/services/__tests__/config-loader.service.test.ts"],"names":[],"mappings":""}