@m3hti/commit-genie 3.1.0 → 3.1.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 (47) hide show
  1. package/dist/services/analyzerService.d.ts +0 -157
  2. package/dist/services/analyzerService.d.ts.map +1 -1
  3. package/dist/services/analyzerService.js +23 -2001
  4. package/dist/services/analyzerService.js.map +1 -1
  5. package/dist/services/breakingChangeDetector.d.ts +9 -0
  6. package/dist/services/breakingChangeDetector.d.ts.map +1 -0
  7. package/dist/services/breakingChangeDetector.js +76 -0
  8. package/dist/services/breakingChangeDetector.js.map +1 -0
  9. package/dist/services/commitTypeDetector.d.ts +32 -0
  10. package/dist/services/commitTypeDetector.d.ts.map +1 -0
  11. package/dist/services/commitTypeDetector.js +490 -0
  12. package/dist/services/commitTypeDetector.js.map +1 -0
  13. package/dist/services/descriptionGenerator.d.ts +58 -0
  14. package/dist/services/descriptionGenerator.d.ts.map +1 -0
  15. package/dist/services/descriptionGenerator.js +569 -0
  16. package/dist/services/descriptionGenerator.js.map +1 -0
  17. package/dist/services/gitService.test.js +242 -24
  18. package/dist/services/gitService.test.js.map +1 -1
  19. package/dist/services/hookService.test.d.ts +2 -0
  20. package/dist/services/hookService.test.d.ts.map +1 -0
  21. package/dist/services/hookService.test.js +182 -0
  22. package/dist/services/hookService.test.js.map +1 -0
  23. package/dist/services/lintService.test.d.ts +2 -0
  24. package/dist/services/lintService.test.d.ts.map +1 -0
  25. package/dist/services/lintService.test.js +288 -0
  26. package/dist/services/lintService.test.js.map +1 -0
  27. package/dist/services/messageBuilder.d.ts +16 -0
  28. package/dist/services/messageBuilder.d.ts.map +1 -0
  29. package/dist/services/messageBuilder.js +135 -0
  30. package/dist/services/messageBuilder.js.map +1 -0
  31. package/dist/services/scopeDetector.d.ts +6 -0
  32. package/dist/services/scopeDetector.d.ts.map +1 -0
  33. package/dist/services/scopeDetector.js +51 -0
  34. package/dist/services/scopeDetector.js.map +1 -0
  35. package/dist/services/semanticAnalyzer.d.ts +25 -0
  36. package/dist/services/semanticAnalyzer.d.ts.map +1 -0
  37. package/dist/services/semanticAnalyzer.js +713 -0
  38. package/dist/services/semanticAnalyzer.js.map +1 -0
  39. package/dist/services/splitService.test.d.ts +2 -0
  40. package/dist/services/splitService.test.d.ts.map +1 -0
  41. package/dist/services/splitService.test.js +190 -0
  42. package/dist/services/splitService.test.js.map +1 -0
  43. package/dist/services/statsService.test.d.ts +2 -0
  44. package/dist/services/statsService.test.d.ts.map +1 -0
  45. package/dist/services/statsService.test.js +211 -0
  46. package/dist/services/statsService.test.js.map +1 -0
  47. package/package.json +1 -1
@@ -35,6 +35,21 @@ describe('GitService', () => {
35
35
  expect(status.staged[1]).toEqual({ status: 'M', path: 'src/modified.ts' });
36
36
  expect(status.staged[2]).toEqual({ status: 'D', path: 'src/deleted.ts' });
37
37
  });
38
+ it('should parse unstaged files correctly', () => {
39
+ mockedExecSync.mockReturnValueOnce(' M src/unstaged.ts\n');
40
+ const status = gitService_1.GitService.getStatus();
41
+ expect(status.unstaged).toHaveLength(1);
42
+ expect(status.unstaged[0]).toEqual({ status: 'M', path: 'src/unstaged.ts' });
43
+ expect(status.staged).toHaveLength(0);
44
+ expect(status.hasStagedChanges).toBe(false);
45
+ });
46
+ it('should not include untracked files in staged or unstaged', () => {
47
+ mockedExecSync.mockReturnValueOnce('?? untracked.ts\n');
48
+ const status = gitService_1.GitService.getStatus();
49
+ expect(status.staged).toHaveLength(0);
50
+ expect(status.unstaged).toHaveLength(0);
51
+ expect(status.hasStagedChanges).toBe(false);
52
+ });
38
53
  it('should return empty arrays when no changes', () => {
39
54
  mockedExecSync.mockReturnValueOnce('');
40
55
  const status = gitService_1.GitService.getStatus();
@@ -42,11 +57,25 @@ describe('GitService', () => {
42
57
  expect(status.staged).toHaveLength(0);
43
58
  expect(status.unstaged).toHaveLength(0);
44
59
  });
60
+ it('should handle mixed staged and unstaged changes in the same file', () => {
61
+ mockedExecSync.mockReturnValueOnce('MM src/both.ts\n');
62
+ const status = gitService_1.GitService.getStatus();
63
+ expect(status.staged).toHaveLength(1);
64
+ expect(status.staged[0]).toEqual({ status: 'M', path: 'src/both.ts' });
65
+ // Source only adds to unstaged when stagedStatus === ' '
66
+ expect(status.unstaged).toHaveLength(0);
67
+ });
45
68
  it('should handle renamed files', () => {
46
69
  mockedExecSync.mockReturnValueOnce('R old.ts -> new.ts\n');
47
70
  const status = gitService_1.GitService.getStatus();
48
71
  expect(status.staged[0].status).toBe('R');
49
72
  });
73
+ it('should throw on git error', () => {
74
+ mockedExecSync.mockImplementationOnce(() => {
75
+ throw new Error('fatal: not a git repository');
76
+ });
77
+ expect(() => gitService_1.GitService.getStatus()).toThrow('Failed to get git status');
78
+ });
50
79
  });
51
80
  describe('getDiffStats', () => {
52
81
  it('should parse diff stats correctly', () => {
@@ -63,13 +92,26 @@ describe('GitService', () => {
63
92
  expect(stats.insertions).toBe(0);
64
93
  expect(stats.deletions).toBe(0);
65
94
  });
66
- it('should handle single file change', () => {
95
+ it('should handle single file with insertions only', () => {
67
96
  mockedExecSync.mockReturnValueOnce(' 1 file changed, 5 insertions(+)\n');
68
97
  const stats = gitService_1.GitService.getDiffStats();
69
98
  expect(stats.filesChanged).toBe(1);
70
99
  expect(stats.insertions).toBe(5);
71
100
  expect(stats.deletions).toBe(0);
72
101
  });
102
+ it('should handle single file with deletions only', () => {
103
+ mockedExecSync.mockReturnValueOnce(' 1 file changed, 3 deletions(-)\n');
104
+ const stats = gitService_1.GitService.getDiffStats();
105
+ expect(stats.filesChanged).toBe(1);
106
+ expect(stats.insertions).toBe(0);
107
+ expect(stats.deletions).toBe(3);
108
+ });
109
+ it('should throw on git error', () => {
110
+ mockedExecSync.mockImplementationOnce(() => {
111
+ throw new Error('fatal: not a git repository');
112
+ });
113
+ expect(() => gitService_1.GitService.getDiffStats()).toThrow('Failed to get diff stats');
114
+ });
73
115
  });
74
116
  describe('getDiff', () => {
75
117
  it('should return diff content', () => {
@@ -80,9 +122,24 @@ describe('GitService', () => {
80
122
  const diff = gitService_1.GitService.getDiff();
81
123
  expect(diff).toBe(mockDiff);
82
124
  });
125
+ it('should throw on git error', () => {
126
+ mockedExecSync.mockImplementationOnce(() => {
127
+ throw new Error('fatal: not a git repository');
128
+ });
129
+ expect(() => gitService_1.GitService.getDiff()).toThrow('Failed to get diff');
130
+ });
131
+ });
132
+ describe('getStagedFiles', () => {
133
+ it('should return staged files from getStatus', () => {
134
+ mockedExecSync.mockReturnValueOnce('M src/modified.ts\nA src/new.ts\n');
135
+ const files = gitService_1.GitService.getStagedFiles();
136
+ expect(files).toHaveLength(2);
137
+ expect(files[0]).toEqual({ status: 'M', path: 'src/modified.ts' });
138
+ expect(files[1]).toEqual({ status: 'A', path: 'src/new.ts' });
139
+ });
83
140
  });
84
141
  describe('commit', () => {
85
- it('should execute git commit with message', () => {
142
+ it('should execute git commit with message via stdin', () => {
86
143
  mockedSpawnSync.mockReturnValueOnce({
87
144
  status: 0,
88
145
  stdout: '',
@@ -111,7 +168,7 @@ describe('GitService', () => {
111
168
  input: multiLineMessage,
112
169
  }));
113
170
  });
114
- it('should throw error when commit fails', () => {
171
+ it('should throw error with stderr when commit fails', () => {
115
172
  mockedSpawnSync.mockReturnValueOnce({
116
173
  status: 1,
117
174
  stdout: '',
@@ -122,6 +179,186 @@ describe('GitService', () => {
122
179
  });
123
180
  expect(() => gitService_1.GitService.commit('test')).toThrow('Failed to commit');
124
181
  });
182
+ it('should use stdout when stderr is empty on failure', () => {
183
+ mockedSpawnSync.mockReturnValueOnce({
184
+ status: 1,
185
+ stdout: 'stdout error message',
186
+ stderr: '',
187
+ pid: 123,
188
+ output: [],
189
+ signal: null,
190
+ });
191
+ expect(() => gitService_1.GitService.commit('test')).toThrow('Failed to commit: stdout error message');
192
+ });
193
+ });
194
+ describe('amendCommit', () => {
195
+ it('should execute git commit --amend with message via stdin', () => {
196
+ mockedSpawnSync.mockReturnValueOnce({
197
+ status: 0,
198
+ stdout: '',
199
+ stderr: '',
200
+ pid: 123,
201
+ output: [],
202
+ signal: null,
203
+ });
204
+ expect(() => gitService_1.GitService.amendCommit('fix: correct typo')).not.toThrow();
205
+ expect(mockedSpawnSync).toHaveBeenCalledWith('git', ['commit', '--amend', '-F', '-'], expect.objectContaining({
206
+ input: 'fix: correct typo',
207
+ }));
208
+ });
209
+ it('should throw error when amend fails', () => {
210
+ mockedSpawnSync.mockReturnValueOnce({
211
+ status: 1,
212
+ stdout: '',
213
+ stderr: 'cannot amend',
214
+ pid: 123,
215
+ output: [],
216
+ signal: null,
217
+ });
218
+ expect(() => gitService_1.GitService.amendCommit('test')).toThrow('Failed to amend commit');
219
+ });
220
+ });
221
+ describe('getLastCommitMessage', () => {
222
+ it('should return the last commit message trimmed', () => {
223
+ mockedExecSync.mockReturnValueOnce('feat: initial commit\n');
224
+ const msg = gitService_1.GitService.getLastCommitMessage();
225
+ expect(msg).toBe('feat: initial commit');
226
+ });
227
+ it('should return null when output is empty', () => {
228
+ mockedExecSync.mockReturnValueOnce(' \n');
229
+ const msg = gitService_1.GitService.getLastCommitMessage();
230
+ expect(msg).toBeNull();
231
+ });
232
+ it('should return null on error', () => {
233
+ mockedExecSync.mockImplementationOnce(() => {
234
+ throw new Error('no commits yet');
235
+ });
236
+ expect(gitService_1.GitService.getLastCommitMessage()).toBeNull();
237
+ });
238
+ });
239
+ describe('getLastCommitFiles', () => {
240
+ it('should parse tab-separated file change lines', () => {
241
+ mockedExecSync.mockReturnValueOnce('M\tsrc/index.ts\nA\tsrc/new.ts\nD\tsrc/old.ts\n');
242
+ const files = gitService_1.GitService.getLastCommitFiles();
243
+ expect(files).toHaveLength(3);
244
+ expect(files[0]).toEqual({ status: 'M', path: 'src/index.ts' });
245
+ expect(files[1]).toEqual({ status: 'A', path: 'src/new.ts' });
246
+ expect(files[2]).toEqual({ status: 'D', path: 'src/old.ts' });
247
+ });
248
+ it('should return empty array on error', () => {
249
+ mockedExecSync.mockImplementationOnce(() => {
250
+ throw new Error('no commits');
251
+ });
252
+ expect(gitService_1.GitService.getLastCommitFiles()).toEqual([]);
253
+ });
254
+ });
255
+ describe('getLastCommitDiff', () => {
256
+ it('should return diff string', () => {
257
+ const mockDiff = 'diff --git a/f.ts b/f.ts\n+new line\n';
258
+ mockedExecSync.mockReturnValueOnce(mockDiff);
259
+ expect(gitService_1.GitService.getLastCommitDiff()).toBe(mockDiff);
260
+ });
261
+ it('should return empty string on error', () => {
262
+ mockedExecSync.mockImplementationOnce(() => {
263
+ throw new Error('no commits');
264
+ });
265
+ expect(gitService_1.GitService.getLastCommitDiff()).toBe('');
266
+ });
267
+ });
268
+ describe('hasCommits', () => {
269
+ it('should return true when there are commits', () => {
270
+ mockedExecSync.mockReturnValueOnce(Buffer.from('abc123'));
271
+ expect(gitService_1.GitService.hasCommits()).toBe(true);
272
+ });
273
+ it('should return false when there are no commits', () => {
274
+ mockedExecSync.mockImplementationOnce(() => {
275
+ throw new Error('unknown revision HEAD');
276
+ });
277
+ expect(gitService_1.GitService.hasCommits()).toBe(false);
278
+ });
279
+ });
280
+ describe('getGitRoot', () => {
281
+ it('should return the trimmed root path', () => {
282
+ mockedExecSync.mockReturnValueOnce('/home/user/project\n');
283
+ expect(gitService_1.GitService.getGitRoot()).toBe('/home/user/project');
284
+ });
285
+ it('should throw on error', () => {
286
+ mockedExecSync.mockImplementationOnce(() => {
287
+ throw new Error('not a git repository');
288
+ });
289
+ expect(() => gitService_1.GitService.getGitRoot()).toThrow('Failed to get git root directory');
290
+ });
291
+ });
292
+ describe('getGitDir', () => {
293
+ it('should resolve relative .git path to absolute', () => {
294
+ mockedExecSync.mockReturnValueOnce('.git\n');
295
+ const result = gitService_1.GitService.getGitDir();
296
+ // Should resolve to an absolute path ending with .git
297
+ expect(result.endsWith('.git')).toBe(true);
298
+ expect(result.length).toBeGreaterThan(4); // more than just ".git"
299
+ });
300
+ it('should return absolute Unix paths as-is', () => {
301
+ mockedExecSync.mockReturnValueOnce('/home/user/project/.git\n');
302
+ const result = gitService_1.GitService.getGitDir();
303
+ expect(result).toBe('/home/user/project/.git');
304
+ });
305
+ it('should throw on error', () => {
306
+ mockedExecSync.mockImplementationOnce(() => {
307
+ throw new Error('not a git repository');
308
+ });
309
+ expect(() => gitService_1.GitService.getGitDir()).toThrow('Failed to get git directory');
310
+ });
311
+ });
312
+ describe('getCurrentBranch', () => {
313
+ it('should return the current branch name', () => {
314
+ mockedExecSync.mockReturnValueOnce('main\n');
315
+ expect(gitService_1.GitService.getCurrentBranch()).toBe('main');
316
+ });
317
+ it('should return null for detached HEAD', () => {
318
+ mockedExecSync.mockReturnValueOnce('HEAD\n');
319
+ expect(gitService_1.GitService.getCurrentBranch()).toBeNull();
320
+ });
321
+ it('should return null on error', () => {
322
+ mockedExecSync.mockImplementationOnce(() => {
323
+ throw new Error('not a git repository');
324
+ });
325
+ expect(gitService_1.GitService.getCurrentBranch()).toBeNull();
326
+ });
327
+ });
328
+ describe('getCommitHistory', () => {
329
+ it('should parse null-delimited commit entries', () => {
330
+ // Format: hash\x00subject\x00body\x00 per commit, separated by \x00\x00
331
+ const output = [
332
+ 'abc123\x00feat: add feature\x00Some body text\x00',
333
+ 'def456\x00fix: bug fix\x00\x00',
334
+ ].join('\x00');
335
+ mockedExecSync.mockReturnValueOnce(output);
336
+ const commits = gitService_1.GitService.getCommitHistory(10);
337
+ expect(commits).toHaveLength(2);
338
+ expect(commits[0]).toEqual({
339
+ hash: 'abc123',
340
+ subject: 'feat: add feature',
341
+ message: 'feat: add feature\n\nSome body text',
342
+ body: 'Some body text',
343
+ });
344
+ expect(commits[1]).toEqual({
345
+ hash: 'def456',
346
+ subject: 'fix: bug fix',
347
+ message: 'fix: bug fix',
348
+ body: undefined,
349
+ });
350
+ });
351
+ it('should return empty array on error', () => {
352
+ mockedExecSync.mockImplementationOnce(() => {
353
+ throw new Error('no commits');
354
+ });
355
+ expect(gitService_1.GitService.getCommitHistory()).toEqual([]);
356
+ });
357
+ it('should use default count of 50', () => {
358
+ mockedExecSync.mockReturnValueOnce('');
359
+ gitService_1.GitService.getCommitHistory();
360
+ expect(mockedExecSync).toHaveBeenCalledWith(expect.stringContaining('-50'), expect.any(Object));
361
+ });
125
362
  });
126
363
  describe('getFileAtHead', () => {
127
364
  it('should return file contents from HEAD', () => {
@@ -130,18 +367,12 @@ describe('GitService', () => {
130
367
  expect(result).toBe('export function foo() {}');
131
368
  expect(mockedExecSync).toHaveBeenCalledWith('git show HEAD:src/foo.ts', expect.objectContaining({ encoding: 'utf-8' }));
132
369
  });
133
- it('should return null for new files (not in HEAD)', () => {
370
+ it('should return null for files not in HEAD', () => {
134
371
  mockedExecSync.mockImplementationOnce(() => {
135
372
  throw new Error('path does not exist');
136
373
  });
137
374
  expect(gitService_1.GitService.getFileAtHead('src/new.ts')).toBeNull();
138
375
  });
139
- it('should return null when no commits exist', () => {
140
- mockedExecSync.mockImplementationOnce(() => {
141
- throw new Error('unknown revision');
142
- });
143
- expect(gitService_1.GitService.getFileAtHead('src/any.ts')).toBeNull();
144
- });
145
376
  });
146
377
  describe('getStagedFileContent', () => {
147
378
  it('should return staged file contents from index', () => {
@@ -150,25 +381,12 @@ describe('GitService', () => {
150
381
  expect(result).toBe('export const X = 1;');
151
382
  expect(mockedExecSync).toHaveBeenCalledWith('git show :src/x.ts', expect.objectContaining({ encoding: 'utf-8' }));
152
383
  });
153
- it('should return null for deleted files', () => {
384
+ it('should return null for deleted files in index', () => {
154
385
  mockedExecSync.mockImplementationOnce(() => {
155
386
  throw new Error('path does not exist in index');
156
387
  });
157
388
  expect(gitService_1.GitService.getStagedFileContent('src/deleted.ts')).toBeNull();
158
389
  });
159
390
  });
160
- describe('getGitDir', () => {
161
- it('should resolve relative .git path', () => {
162
- mockedExecSync.mockReturnValueOnce('.git\n');
163
- const result = gitService_1.GitService.getGitDir();
164
- // Should resolve to absolute path ending with .git
165
- expect(result.endsWith('.git')).toBe(true);
166
- });
167
- it('should handle absolute paths', () => {
168
- mockedExecSync.mockReturnValueOnce('/home/user/project/.git\n');
169
- const result = gitService_1.GitService.getGitDir();
170
- expect(result).toBe('/home/user/project/.git');
171
- });
172
- });
173
391
  });
174
392
  //# sourceMappingURL=gitService.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gitService.test.js","sourceRoot":"","sources":["../../src/services/gitService.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gitService.test.js","sourceRoot":"","sources":["../../src/services/gitService.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=hookService.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hookService.test.d.ts","sourceRoot":"","sources":["../../src/services/hookService.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,182 @@
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"));
37
+ const path = __importStar(require("path"));
38
+ const hookService_1 = require("./hookService");
39
+ const gitService_1 = require("./gitService");
40
+ jest.mock('fs');
41
+ jest.mock('./gitService');
42
+ const mockedFs = fs;
43
+ const mockedGitService = gitService_1.GitService;
44
+ describe('HookService', () => {
45
+ beforeEach(() => {
46
+ jest.clearAllMocks();
47
+ mockedGitService.getGitDir.mockReturnValue('/repo/.git');
48
+ });
49
+ describe('getHooksDir', () => {
50
+ it('should return the correct hooks directory path', () => {
51
+ const result = hookService_1.HookService.getHooksDir();
52
+ expect(result).toBe(path.join('/repo/.git', 'hooks'));
53
+ });
54
+ });
55
+ describe('getHookPath', () => {
56
+ it('should return the prepare-commit-msg hook path', () => {
57
+ const result = hookService_1.HookService.getHookPath();
58
+ expect(result).toBe(path.join('/repo/.git', 'hooks', 'prepare-commit-msg'));
59
+ });
60
+ });
61
+ describe('isInstalled', () => {
62
+ it('should return true when hook exists and contains CommitGenie marker', () => {
63
+ mockedFs.existsSync.mockReturnValue(true);
64
+ mockedFs.readFileSync.mockReturnValue('#!/bin/sh\n# CommitGenie prepare-commit-msg hook\n');
65
+ expect(hookService_1.HookService.isInstalled()).toBe(true);
66
+ });
67
+ it('should return false when hook file does not exist', () => {
68
+ mockedFs.existsSync.mockReturnValue(false);
69
+ expect(hookService_1.HookService.isInstalled()).toBe(false);
70
+ expect(mockedFs.readFileSync).not.toHaveBeenCalled();
71
+ });
72
+ it('should return false when hook exists but is not CommitGenie', () => {
73
+ mockedFs.existsSync.mockReturnValue(true);
74
+ mockedFs.readFileSync.mockReturnValue('#!/bin/sh\n# Some other hook\n');
75
+ expect(hookService_1.HookService.isInstalled()).toBe(false);
76
+ });
77
+ });
78
+ describe('install', () => {
79
+ it('should create hooks directory and write hook on fresh install', () => {
80
+ // First existsSync call: hooksDir does not exist
81
+ // Second existsSync call: hookPath does not exist
82
+ mockedFs.existsSync.mockReturnValueOnce(false).mockReturnValueOnce(false);
83
+ const result = hookService_1.HookService.install();
84
+ expect(result.success).toBe(true);
85
+ expect(result.message).toContain('installed successfully');
86
+ expect(mockedFs.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('hooks'), { recursive: true });
87
+ expect(mockedFs.writeFileSync).toHaveBeenCalledWith(expect.stringContaining('prepare-commit-msg'), expect.stringContaining('CommitGenie'), { mode: 0o755 });
88
+ });
89
+ it('should return already installed when CommitGenie hook exists', () => {
90
+ // hooksDir exists, hookPath exists
91
+ mockedFs.existsSync.mockReturnValueOnce(true).mockReturnValueOnce(true);
92
+ mockedFs.readFileSync.mockReturnValue('#!/bin/sh\n# CommitGenie prepare-commit-msg hook\n');
93
+ const result = hookService_1.HookService.install();
94
+ expect(result.success).toBe(true);
95
+ expect(result.message).toContain('already installed');
96
+ expect(mockedFs.writeFileSync).not.toHaveBeenCalled();
97
+ });
98
+ it('should back up existing non-CommitGenie hook', () => {
99
+ // hooksDir exists, hookPath exists
100
+ mockedFs.existsSync.mockReturnValueOnce(true).mockReturnValueOnce(true);
101
+ mockedFs.readFileSync.mockReturnValue('#!/bin/sh\n# some other hook\n');
102
+ const result = hookService_1.HookService.install();
103
+ expect(result.success).toBe(false);
104
+ expect(result.message).toContain('Backed up');
105
+ expect(mockedFs.copyFileSync).toHaveBeenCalledWith(expect.stringContaining('prepare-commit-msg'), expect.stringContaining('prepare-commit-msg.backup'));
106
+ expect(mockedFs.writeFileSync).not.toHaveBeenCalled();
107
+ });
108
+ it('should create hooks directory with recursive option if missing', () => {
109
+ // hooksDir does not exist, hookPath does not exist
110
+ mockedFs.existsSync.mockReturnValueOnce(false).mockReturnValueOnce(false);
111
+ hookService_1.HookService.install();
112
+ expect(mockedFs.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('hooks'), { recursive: true });
113
+ });
114
+ it('should skip creating hooks directory when it already exists', () => {
115
+ // hooksDir exists, hookPath does not exist
116
+ mockedFs.existsSync.mockReturnValueOnce(true).mockReturnValueOnce(false);
117
+ hookService_1.HookService.install();
118
+ expect(mockedFs.mkdirSync).not.toHaveBeenCalled();
119
+ expect(mockedFs.writeFileSync).toHaveBeenCalled();
120
+ });
121
+ it('should handle write errors gracefully', () => {
122
+ mockedFs.existsSync.mockReturnValueOnce(true).mockReturnValueOnce(false);
123
+ mockedFs.writeFileSync.mockImplementation(() => {
124
+ throw new Error('Permission denied');
125
+ });
126
+ const result = hookService_1.HookService.install();
127
+ expect(result.success).toBe(false);
128
+ expect(result.message).toContain('Failed to install hook');
129
+ expect(result.message).toContain('Permission denied');
130
+ });
131
+ });
132
+ describe('uninstall', () => {
133
+ it('should remove CommitGenie hook successfully', () => {
134
+ mockedFs.existsSync
135
+ .mockReturnValueOnce(true) // hookPath exists
136
+ .mockReturnValueOnce(false); // backup does not exist
137
+ mockedFs.readFileSync.mockReturnValue('#!/bin/sh\n# CommitGenie prepare-commit-msg hook\n');
138
+ const result = hookService_1.HookService.uninstall();
139
+ expect(result.success).toBe(true);
140
+ expect(result.message).toContain('uninstalled successfully');
141
+ expect(mockedFs.unlinkSync).toHaveBeenCalledWith(expect.stringContaining('prepare-commit-msg'));
142
+ });
143
+ it('should refuse to remove non-CommitGenie hook', () => {
144
+ mockedFs.existsSync.mockReturnValue(true);
145
+ mockedFs.readFileSync.mockReturnValue('#!/bin/sh\n# some other hook\n');
146
+ const result = hookService_1.HookService.uninstall();
147
+ expect(result.success).toBe(false);
148
+ expect(result.message).toContain('not installed by CommitGenie');
149
+ expect(mockedFs.unlinkSync).not.toHaveBeenCalled();
150
+ });
151
+ it('should restore backup after uninstall when backup exists', () => {
152
+ mockedFs.existsSync
153
+ .mockReturnValueOnce(true) // hookPath exists
154
+ .mockReturnValueOnce(true); // backup exists
155
+ mockedFs.readFileSync.mockReturnValue('#!/bin/sh\n# CommitGenie prepare-commit-msg hook\n');
156
+ const result = hookService_1.HookService.uninstall();
157
+ expect(result.success).toBe(true);
158
+ expect(result.message).toContain('restored');
159
+ expect(mockedFs.unlinkSync).toHaveBeenCalled();
160
+ expect(mockedFs.renameSync).toHaveBeenCalledWith(expect.stringContaining('prepare-commit-msg.backup'), expect.stringContaining('prepare-commit-msg'));
161
+ });
162
+ it('should return not installed when hook does not exist', () => {
163
+ mockedFs.existsSync.mockReturnValue(false);
164
+ const result = hookService_1.HookService.uninstall();
165
+ expect(result.success).toBe(true);
166
+ expect(result.message).toContain('not installed');
167
+ expect(mockedFs.unlinkSync).not.toHaveBeenCalled();
168
+ });
169
+ it('should handle uninstall errors gracefully', () => {
170
+ mockedFs.existsSync.mockReturnValue(true);
171
+ mockedFs.readFileSync.mockReturnValue('#!/bin/sh\n# CommitGenie prepare-commit-msg hook\n');
172
+ mockedFs.unlinkSync.mockImplementation(() => {
173
+ throw new Error('Permission denied');
174
+ });
175
+ const result = hookService_1.HookService.uninstall();
176
+ expect(result.success).toBe(false);
177
+ expect(result.message).toContain('Failed to uninstall hook');
178
+ expect(result.message).toContain('Permission denied');
179
+ });
180
+ });
181
+ });
182
+ //# sourceMappingURL=hookService.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hookService.test.js","sourceRoot":"","sources":["../../src/services/hookService.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lintService.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lintService.test.d.ts","sourceRoot":"","sources":["../../src/services/lintService.test.ts"],"names":[],"mappings":""}