@qelos/aidev 0.1.12 → 0.1.14

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.
@@ -1,11 +1,49 @@
1
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
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
5
38
  Object.defineProperty(exports, "__esModule", { value: true });
6
39
  const node_test_1 = require("node:test");
7
40
  const strict_1 = __importDefault(require("node:assert/strict"));
41
+ const node_child_process_1 = require("node:child_process");
42
+ const fs = __importStar(require("node:fs"));
43
+ const os = __importStar(require("node:os"));
44
+ const path = __importStar(require("node:path"));
8
45
  const git_1 = require("../git");
46
+ // ─── slugify ──────────────────────────────────────────────────────────────────
9
47
  (0, node_test_1.describe)('slugify', () => {
10
48
  (0, node_test_1.it)('lowercases input', () => {
11
49
  strict_1.default.equal((0, git_1.slugify)('FIX LOGIN BUG'), 'fix-login-bug');
@@ -32,4 +70,306 @@ const git_1 = require("../git");
32
70
  strict_1.default.equal((0, git_1.slugify)('!!!'), '');
33
71
  });
34
72
  });
73
+ // ─── isProtectedBranch ────────────────────────────────────────────────────────
74
+ (0, node_test_1.describe)('isProtectedBranch', () => {
75
+ (0, node_test_1.it)('recognizes main as protected', () => {
76
+ strict_1.default.equal((0, git_1.isProtectedBranch)('main'), true);
77
+ });
78
+ (0, node_test_1.it)('recognizes master as protected', () => {
79
+ strict_1.default.equal((0, git_1.isProtectedBranch)('master'), true);
80
+ });
81
+ (0, node_test_1.it)('recognizes develop as protected', () => {
82
+ strict_1.default.equal((0, git_1.isProtectedBranch)('develop'), true);
83
+ });
84
+ (0, node_test_1.it)('recognizes production as protected', () => {
85
+ strict_1.default.equal((0, git_1.isProtectedBranch)('production'), true);
86
+ });
87
+ (0, node_test_1.it)('is case-insensitive', () => {
88
+ strict_1.default.equal((0, git_1.isProtectedBranch)('MAIN'), true);
89
+ strict_1.default.equal((0, git_1.isProtectedBranch)('Master'), true);
90
+ strict_1.default.equal((0, git_1.isProtectedBranch)('DEVELOP'), true);
91
+ });
92
+ (0, node_test_1.it)('does not flag feature branches', () => {
93
+ strict_1.default.equal((0, git_1.isProtectedBranch)('feature/login'), false);
94
+ strict_1.default.equal((0, git_1.isProtectedBranch)('abc123/fix-bug'), false);
95
+ strict_1.default.equal((0, git_1.isProtectedBranch)('hotfix/urgent'), false);
96
+ });
97
+ });
98
+ // ─── Integration tests using temp git repos ───────────────────────────────────
99
+ function gitCmd(args, cwd) {
100
+ const result = (0, node_child_process_1.spawnSync)('git', args, { cwd, encoding: 'utf8' });
101
+ if (result.status !== 0) {
102
+ throw new Error(`git ${args.join(' ')} failed: ${result.stderr}`);
103
+ }
104
+ }
105
+ function initRepo(dir) {
106
+ gitCmd(['init', '-b', 'main'], dir);
107
+ gitCmd(['config', 'user.email', 'test@test.com'], dir);
108
+ gitCmd(['config', 'user.name', 'Test'], dir);
109
+ fs.writeFileSync(path.join(dir, 'README.md'), '# test\n');
110
+ gitCmd(['add', '.'], dir);
111
+ gitCmd(['commit', '-m', 'initial commit'], dir);
112
+ }
113
+ (0, node_test_1.describe)('getCurrentBranch (integration)', () => {
114
+ let tmpDir;
115
+ let originalCwd;
116
+ (0, node_test_1.beforeEach)(() => {
117
+ originalCwd = process.cwd();
118
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-git-test-'));
119
+ initRepo(tmpDir);
120
+ process.chdir(tmpDir);
121
+ });
122
+ (0, node_test_1.afterEach)(() => {
123
+ process.chdir(originalCwd);
124
+ fs.rmSync(tmpDir, { recursive: true, force: true });
125
+ });
126
+ (0, node_test_1.it)('returns the current branch name', () => {
127
+ strict_1.default.equal((0, git_1.getCurrentBranch)(), 'main');
128
+ });
129
+ (0, node_test_1.it)('returns the new branch after checkout -b', () => {
130
+ gitCmd(['checkout', '-b', 'feature/test'], tmpDir);
131
+ strict_1.default.equal((0, git_1.getCurrentBranch)(), 'feature/test');
132
+ });
133
+ });
134
+ (0, node_test_1.describe)('createBranch with expectedBase (integration)', () => {
135
+ let tmpDir;
136
+ let originalCwd;
137
+ (0, node_test_1.beforeEach)(() => {
138
+ originalCwd = process.cwd();
139
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-git-test-'));
140
+ initRepo(tmpDir);
141
+ process.chdir(tmpDir);
142
+ });
143
+ (0, node_test_1.afterEach)(() => {
144
+ process.chdir(originalCwd);
145
+ fs.rmSync(tmpDir, { recursive: true, force: true });
146
+ });
147
+ (0, node_test_1.it)('succeeds when on the expected base branch', () => {
148
+ strict_1.default.equal((0, git_1.createBranch)('task123/fix-bug', 'main'), true);
149
+ strict_1.default.equal((0, git_1.getCurrentBranch)(), 'task123/fix-bug');
150
+ });
151
+ (0, node_test_1.it)('fails when not on the expected base branch', () => {
152
+ gitCmd(['checkout', '-b', 'some-other-branch'], tmpDir);
153
+ strict_1.default.equal((0, git_1.createBranch)('task123/fix-bug', 'main'), false);
154
+ strict_1.default.equal((0, git_1.getCurrentBranch)(), 'some-other-branch');
155
+ });
156
+ (0, node_test_1.it)('works without expectedBase (backward compatible)', () => {
157
+ strict_1.default.equal((0, git_1.createBranch)('task123/fix-bug'), true);
158
+ strict_1.default.equal((0, git_1.getCurrentBranch)(), 'task123/fix-bug');
159
+ });
160
+ });
161
+ (0, node_test_1.describe)('commit with expectedBranch (integration)', () => {
162
+ let tmpDir;
163
+ let originalCwd;
164
+ (0, node_test_1.beforeEach)(() => {
165
+ originalCwd = process.cwd();
166
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-git-test-'));
167
+ initRepo(tmpDir);
168
+ process.chdir(tmpDir);
169
+ });
170
+ (0, node_test_1.afterEach)(() => {
171
+ process.chdir(originalCwd);
172
+ fs.rmSync(tmpDir, { recursive: true, force: true });
173
+ });
174
+ (0, node_test_1.it)('succeeds when on the expected branch', () => {
175
+ gitCmd(['checkout', '-b', 'task123/fix-bug'], tmpDir);
176
+ fs.writeFileSync(path.join(tmpDir, 'file.txt'), 'content');
177
+ strict_1.default.equal((0, git_1.addAll)(), true);
178
+ strict_1.default.equal((0, git_1.commit)('test commit', 'task123/fix-bug'), true);
179
+ });
180
+ (0, node_test_1.it)('fails when on a different branch than expected', () => {
181
+ gitCmd(['checkout', '-b', 'task123/fix-bug'], tmpDir);
182
+ gitCmd(['checkout', '-b', 'wrong-branch'], tmpDir);
183
+ fs.writeFileSync(path.join(tmpDir, 'file.txt'), 'content');
184
+ strict_1.default.equal((0, git_1.addAll)(), true);
185
+ strict_1.default.equal((0, git_1.commit)('test commit', 'task123/fix-bug'), false);
186
+ });
187
+ (0, node_test_1.it)('refuses to commit when expectedBranch is a protected branch', () => {
188
+ fs.writeFileSync(path.join(tmpDir, 'file.txt'), 'content');
189
+ strict_1.default.equal((0, git_1.addAll)(), true);
190
+ strict_1.default.equal((0, git_1.commit)('test commit', 'main'), false);
191
+ });
192
+ (0, node_test_1.it)('works without expectedBranch (backward compatible)', () => {
193
+ fs.writeFileSync(path.join(tmpDir, 'file.txt'), 'content');
194
+ strict_1.default.equal((0, git_1.addAll)(), true);
195
+ strict_1.default.equal((0, git_1.commit)('test commit'), true);
196
+ });
197
+ });
198
+ (0, node_test_1.describe)('push validation (integration)', () => {
199
+ let tmpDir;
200
+ let bareDir;
201
+ let originalCwd;
202
+ (0, node_test_1.beforeEach)(() => {
203
+ originalCwd = process.cwd();
204
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-git-test-'));
205
+ bareDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-bare-'));
206
+ gitCmd(['init', '--bare', '-b', 'main'], bareDir);
207
+ initRepo(tmpDir);
208
+ gitCmd(['remote', 'add', 'origin', bareDir], tmpDir);
209
+ gitCmd(['push', 'origin', 'main'], tmpDir);
210
+ process.chdir(tmpDir);
211
+ });
212
+ (0, node_test_1.afterEach)(() => {
213
+ process.chdir(originalCwd);
214
+ fs.rmSync(tmpDir, { recursive: true, force: true });
215
+ fs.rmSync(bareDir, { recursive: true, force: true });
216
+ });
217
+ (0, node_test_1.it)('refuses to push to a protected branch', () => {
218
+ strict_1.default.equal((0, git_1.push)('origin', 'main'), false);
219
+ });
220
+ (0, node_test_1.it)('refuses to push when current branch does not match target', () => {
221
+ gitCmd(['checkout', '-b', 'task123/fix-bug'], tmpDir);
222
+ strict_1.default.equal((0, git_1.push)('origin', 'task456/other-task'), false);
223
+ });
224
+ (0, node_test_1.it)('succeeds when current branch matches target and is not protected', () => {
225
+ gitCmd(['checkout', '-b', 'task123/fix-bug'], tmpDir);
226
+ fs.writeFileSync(path.join(tmpDir, 'file.txt'), 'content');
227
+ gitCmd(['add', '.'], tmpDir);
228
+ gitCmd(['commit', '-m', 'add file'], tmpDir);
229
+ strict_1.default.equal((0, git_1.push)('origin', 'task123/fix-bug'), true);
230
+ });
231
+ (0, node_test_1.it)('uses explicit HEAD refspec so stale local branches are not pushed', () => {
232
+ gitCmd(['checkout', '-b', 'task123/fix-bug'], tmpDir);
233
+ fs.writeFileSync(path.join(tmpDir, 'file.txt'), 'v1');
234
+ gitCmd(['add', '.'], tmpDir);
235
+ gitCmd(['commit', '-m', 'v1'], tmpDir);
236
+ strict_1.default.equal((0, git_1.push)('origin', 'task123/fix-bug'), true);
237
+ fs.writeFileSync(path.join(tmpDir, 'file.txt'), 'v2');
238
+ gitCmd(['add', '.'], tmpDir);
239
+ gitCmd(['commit', '-m', 'v2'], tmpDir);
240
+ strict_1.default.equal((0, git_1.push)('origin', 'task123/fix-bug'), true);
241
+ const log = (0, node_child_process_1.spawnSync)('git', ['log', '--oneline', 'origin/task123/fix-bug'], {
242
+ cwd: tmpDir,
243
+ encoding: 'utf8',
244
+ });
245
+ strict_1.default.ok(log.stdout.includes('v2'));
246
+ });
247
+ });
248
+ (0, node_test_1.describe)('stashChanges (integration)', () => {
249
+ let tmpDir;
250
+ let originalCwd;
251
+ (0, node_test_1.beforeEach)(() => {
252
+ originalCwd = process.cwd();
253
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-git-test-'));
254
+ initRepo(tmpDir);
255
+ process.chdir(tmpDir);
256
+ });
257
+ (0, node_test_1.afterEach)(() => {
258
+ process.chdir(originalCwd);
259
+ fs.rmSync(tmpDir, { recursive: true, force: true });
260
+ });
261
+ (0, node_test_1.it)('returns true and does nothing when working tree is clean', () => {
262
+ strict_1.default.equal((0, git_1.hasChanges)(), false);
263
+ strict_1.default.equal((0, git_1.stashChanges)(), true);
264
+ strict_1.default.equal((0, git_1.hasChanges)(), false);
265
+ });
266
+ (0, node_test_1.it)('stashes uncommitted changes so working tree is clean afterward', () => {
267
+ fs.writeFileSync(path.join(tmpDir, 'dirty.txt'), 'uncommitted');
268
+ strict_1.default.equal((0, git_1.hasChanges)(), true);
269
+ strict_1.default.equal((0, git_1.stashChanges)(), true);
270
+ strict_1.default.equal((0, git_1.hasChanges)(), false);
271
+ });
272
+ (0, node_test_1.it)('stashes untracked files (using -u flag)', () => {
273
+ fs.writeFileSync(path.join(tmpDir, 'untracked.txt'), 'new file');
274
+ strict_1.default.equal((0, git_1.hasChanges)(), true);
275
+ strict_1.default.equal((0, git_1.stashChanges)(), true);
276
+ strict_1.default.equal((0, git_1.hasChanges)(), false);
277
+ });
278
+ });
279
+ (0, node_test_1.describe)('fetchAndCheckout with dirty working tree (integration)', () => {
280
+ let tmpDir;
281
+ let bareDir;
282
+ let originalCwd;
283
+ (0, node_test_1.beforeEach)(() => {
284
+ originalCwd = process.cwd();
285
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-git-test-'));
286
+ bareDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-bare-'));
287
+ gitCmd(['init', '--bare', '-b', 'main'], bareDir);
288
+ initRepo(tmpDir);
289
+ gitCmd(['remote', 'add', 'origin', bareDir], tmpDir);
290
+ gitCmd(['push', 'origin', 'main'], tmpDir);
291
+ process.chdir(tmpDir);
292
+ });
293
+ (0, node_test_1.afterEach)(() => {
294
+ process.chdir(originalCwd);
295
+ fs.rmSync(tmpDir, { recursive: true, force: true });
296
+ fs.rmSync(bareDir, { recursive: true, force: true });
297
+ });
298
+ (0, node_test_1.it)('succeeds even when there are uncommitted changes (stashes them)', () => {
299
+ gitCmd(['checkout', '-b', 'feature/dirty'], tmpDir);
300
+ fs.writeFileSync(path.join(tmpDir, 'leftover.txt'), 'from previous run');
301
+ strict_1.default.equal((0, git_1.hasChanges)(), true);
302
+ strict_1.default.equal((0, git_1.fetchAndCheckout)('origin', 'main'), true);
303
+ strict_1.default.equal((0, git_1.getCurrentBranch)(), 'main');
304
+ });
305
+ (0, node_test_1.it)('succeeds even when there are untracked files (stashes them)', () => {
306
+ fs.writeFileSync(path.join(tmpDir, 'untracked.txt'), 'untracked');
307
+ strict_1.default.equal((0, git_1.hasChanges)(), true);
308
+ strict_1.default.equal((0, git_1.fetchAndCheckout)('origin', 'main'), true);
309
+ strict_1.default.equal((0, git_1.getCurrentBranch)(), 'main');
310
+ });
311
+ });
312
+ (0, node_test_1.describe)('fetchAndCheckout sync verification (integration)', () => {
313
+ let tmpDir;
314
+ let bareDir;
315
+ let originalCwd;
316
+ (0, node_test_1.beforeEach)(() => {
317
+ originalCwd = process.cwd();
318
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-git-test-'));
319
+ bareDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-bare-'));
320
+ gitCmd(['init', '--bare', '-b', 'main'], bareDir);
321
+ initRepo(tmpDir);
322
+ gitCmd(['remote', 'add', 'origin', bareDir], tmpDir);
323
+ gitCmd(['push', 'origin', 'main'], tmpDir);
324
+ process.chdir(tmpDir);
325
+ });
326
+ (0, node_test_1.afterEach)(() => {
327
+ process.chdir(originalCwd);
328
+ fs.rmSync(tmpDir, { recursive: true, force: true });
329
+ fs.rmSync(bareDir, { recursive: true, force: true });
330
+ });
331
+ (0, node_test_1.it)('succeeds when local main matches origin/main', () => {
332
+ gitCmd(['checkout', '-b', 'feature/test'], tmpDir);
333
+ strict_1.default.equal((0, git_1.fetchAndCheckout)('origin', 'main'), true);
334
+ strict_1.default.equal((0, git_1.getCurrentBranch)(), 'main');
335
+ });
336
+ (0, node_test_1.it)('succeeds when origin has new commits (fast-forward)', () => {
337
+ const cloneDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-clone-'));
338
+ try {
339
+ gitCmd(['clone', bareDir, cloneDir], cloneDir);
340
+ gitCmd(['config', 'user.email', 'other@test.com'], cloneDir);
341
+ gitCmd(['config', 'user.name', 'Other'], cloneDir);
342
+ fs.writeFileSync(path.join(cloneDir, 'new.txt'), 'from clone');
343
+ gitCmd(['add', '.'], cloneDir);
344
+ gitCmd(['commit', '-m', 'remote commit'], cloneDir);
345
+ gitCmd(['push', 'origin', 'main'], cloneDir);
346
+ }
347
+ finally {
348
+ fs.rmSync(cloneDir, { recursive: true, force: true });
349
+ }
350
+ gitCmd(['checkout', '-b', 'feature/test'], tmpDir);
351
+ strict_1.default.equal((0, git_1.fetchAndCheckout)('origin', 'main'), true);
352
+ strict_1.default.equal((0, git_1.getCurrentBranch)(), 'main');
353
+ });
354
+ (0, node_test_1.it)('fails when local main has diverged from origin/main', () => {
355
+ const cloneDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-clone-'));
356
+ try {
357
+ gitCmd(['clone', bareDir, cloneDir], cloneDir);
358
+ gitCmd(['config', 'user.email', 'other@test.com'], cloneDir);
359
+ gitCmd(['config', 'user.name', 'Other'], cloneDir);
360
+ fs.writeFileSync(path.join(cloneDir, 'remote.txt'), 'from clone');
361
+ gitCmd(['add', '.'], cloneDir);
362
+ gitCmd(['commit', '-m', 'remote commit'], cloneDir);
363
+ gitCmd(['push', 'origin', 'main'], cloneDir);
364
+ }
365
+ finally {
366
+ fs.rmSync(cloneDir, { recursive: true, force: true });
367
+ }
368
+ fs.writeFileSync(path.join(tmpDir, 'local.txt'), 'local only');
369
+ gitCmd(['add', '.'], tmpDir);
370
+ gitCmd(['commit', '-m', 'local commit'], tmpDir);
371
+ // pull will create a merge commit, making local ahead of origin/main
372
+ strict_1.default.equal((0, git_1.fetchAndCheckout)('origin', 'main'), false);
373
+ });
374
+ });
35
375
  //# sourceMappingURL=git.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git.test.js","sourceRoot":"","sources":["../../src/__tests__/git.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAAyC;AACzC,gEAAwC;AACxC,gCAAiC;AAEjC,IAAA,oBAAQ,EAAC,SAAS,EAAE,GAAG,EAAE;IACvB,IAAA,cAAE,EAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,gBAAM,CAAC,KAAK,CAAC,IAAA,aAAO,EAAC,eAAe,CAAC,EAAE,eAAe,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,gBAAM,CAAC,KAAK,CAAC,IAAA,aAAO,EAAC,eAAe,CAAC,EAAE,eAAe,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,gBAAM,CAAC,KAAK,CAAC,IAAA,aAAO,EAAC,0BAA0B,CAAC,EAAE,uBAAuB,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,gBAAM,CAAC,KAAK,CAAC,IAAA,aAAO,EAAC,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,gBAAM,CAAC,KAAK,CAAC,IAAA,aAAO,EAAC,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,gBAAM,CAAC,KAAK,CAAC,IAAA,aAAO,EAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,gBAAM,CAAC,KAAK,CAAC,IAAA,aAAO,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,gBAAM,CAAC,KAAK,CAAC,IAAA,aAAO,EAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"git.test.js","sourceRoot":"","sources":["../../src/__tests__/git.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=github.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/github.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,209 @@
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 node_test_1 = require("node:test");
40
+ const strict_1 = __importDefault(require("node:assert/strict"));
41
+ const node_child_process_1 = require("node:child_process");
42
+ const fs = __importStar(require("node:fs"));
43
+ const os = __importStar(require("node:os"));
44
+ const path = __importStar(require("node:path"));
45
+ const github_1 = require("../github");
46
+ const run_1 = require("../commands/run");
47
+ const init_1 = require("../commands/init");
48
+ function gitCmd(args, cwd) {
49
+ const result = (0, node_child_process_1.spawnSync)('git', args, { cwd, encoding: 'utf8' });
50
+ if (result.status !== 0) {
51
+ throw new Error(`git ${args.join(' ')} failed: ${result.stderr}`);
52
+ }
53
+ }
54
+ function initRepo(dir) {
55
+ gitCmd(['init', '-b', 'main'], dir);
56
+ gitCmd(['config', 'user.email', 'test@test.com'], dir);
57
+ gitCmd(['config', 'user.name', 'Test'], dir);
58
+ fs.writeFileSync(path.join(dir, 'README.md'), '# test\n');
59
+ gitCmd(['add', '.'], dir);
60
+ gitCmd(['commit', '-m', 'initial commit'], dir);
61
+ }
62
+ // ─── getRemoteUrl ────────────────────────────────────────────────────────────
63
+ (0, node_test_1.describe)('getRemoteUrl', () => {
64
+ let tmpDir;
65
+ let originalCwd;
66
+ (0, node_test_1.beforeEach)(() => {
67
+ originalCwd = process.cwd();
68
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-gh-test-'));
69
+ initRepo(tmpDir);
70
+ process.chdir(tmpDir);
71
+ });
72
+ (0, node_test_1.afterEach)(() => {
73
+ process.chdir(originalCwd);
74
+ fs.rmSync(tmpDir, { recursive: true, force: true });
75
+ });
76
+ (0, node_test_1.it)('returns the remote URL for a valid remote', () => {
77
+ gitCmd(['remote', 'add', 'origin', 'https://github.com/owner/repo.git'], tmpDir);
78
+ strict_1.default.equal((0, github_1.getRemoteUrl)('origin'), 'https://github.com/owner/repo.git');
79
+ });
80
+ (0, node_test_1.it)('returns empty string for a nonexistent remote', () => {
81
+ strict_1.default.equal((0, github_1.getRemoteUrl)('nonexistent'), '');
82
+ });
83
+ (0, node_test_1.it)('returns SSH URL for SSH remotes', () => {
84
+ gitCmd(['remote', 'add', 'origin', 'git@github.com:owner/repo.git'], tmpDir);
85
+ strict_1.default.equal((0, github_1.getRemoteUrl)('origin'), 'git@github.com:owner/repo.git');
86
+ });
87
+ });
88
+ // ─── isGitHubRemote ──────────────────────────────────────────────────────────
89
+ (0, node_test_1.describe)('isGitHubRemote', () => {
90
+ let tmpDir;
91
+ let originalCwd;
92
+ (0, node_test_1.beforeEach)(() => {
93
+ originalCwd = process.cwd();
94
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-gh-test-'));
95
+ initRepo(tmpDir);
96
+ process.chdir(tmpDir);
97
+ });
98
+ (0, node_test_1.afterEach)(() => {
99
+ process.chdir(originalCwd);
100
+ fs.rmSync(tmpDir, { recursive: true, force: true });
101
+ });
102
+ (0, node_test_1.it)('returns true for HTTPS GitHub remote', () => {
103
+ gitCmd(['remote', 'add', 'origin', 'https://github.com/owner/repo.git'], tmpDir);
104
+ strict_1.default.equal((0, github_1.isGitHubRemote)('origin'), true);
105
+ });
106
+ (0, node_test_1.it)('returns true for SSH GitHub remote', () => {
107
+ gitCmd(['remote', 'add', 'origin', 'git@github.com:owner/repo.git'], tmpDir);
108
+ strict_1.default.equal((0, github_1.isGitHubRemote)('origin'), true);
109
+ });
110
+ (0, node_test_1.it)('returns false for non-GitHub remote', () => {
111
+ gitCmd(['remote', 'add', 'origin', 'https://gitlab.com/owner/repo.git'], tmpDir);
112
+ strict_1.default.equal((0, github_1.isGitHubRemote)('origin'), false);
113
+ });
114
+ (0, node_test_1.it)('returns false for nonexistent remote', () => {
115
+ strict_1.default.equal((0, github_1.isGitHubRemote)('nonexistent'), false);
116
+ });
117
+ });
118
+ // ─── isGhInstalled ───────────────────────────────────────────────────────────
119
+ (0, node_test_1.describe)('isGhInstalled', () => {
120
+ (0, node_test_1.it)('returns a boolean', () => {
121
+ const result = (0, github_1.isGhInstalled)();
122
+ strict_1.default.equal(typeof result, 'boolean');
123
+ });
124
+ });
125
+ // ─── tryCreatePR ─────────────────────────────────────────────────────────────
126
+ (0, node_test_1.describe)('tryCreatePR', () => {
127
+ let tmpDir;
128
+ let originalCwd;
129
+ const baseConfig = {
130
+ gitRemote: 'origin',
131
+ githubBaseBranch: 'main',
132
+ githubRepo: 'owner/repo',
133
+ clickupInReviewStatus: 'review',
134
+ };
135
+ const task = {
136
+ id: 'abc123',
137
+ name: 'Fix bug',
138
+ description: 'Fix the login bug',
139
+ status: 'open',
140
+ url: 'https://app.clickup.com/t/abc123',
141
+ tags: ['myproject'],
142
+ };
143
+ (0, node_test_1.beforeEach)(() => {
144
+ originalCwd = process.cwd();
145
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-gh-test-'));
146
+ initRepo(tmpDir);
147
+ process.chdir(tmpDir);
148
+ });
149
+ (0, node_test_1.afterEach)(() => {
150
+ process.chdir(originalCwd);
151
+ fs.rmSync(tmpDir, { recursive: true, force: true });
152
+ });
153
+ (0, node_test_1.it)('falls back to compare URL when remote is not GitHub', () => {
154
+ gitCmd(['remote', 'add', 'origin', 'https://gitlab.com/owner/repo.git'], tmpDir);
155
+ const url = (0, run_1.tryCreatePR)(baseConfig, 'abc123/fix-bug', task);
156
+ strict_1.default.ok(url.includes('github.com/owner/repo/compare/'));
157
+ });
158
+ (0, node_test_1.it)('falls back to compare URL when no remote exists', () => {
159
+ const url = (0, run_1.tryCreatePR)(baseConfig, 'abc123/fix-bug', task);
160
+ strict_1.default.ok(url.includes('github.com/owner/repo/compare/'));
161
+ });
162
+ (0, node_test_1.it)('returns empty string when githubRepo is not configured and gh is not available', () => {
163
+ const url = (0, run_1.tryCreatePR)({ ...baseConfig, githubRepo: '' }, 'abc123/fix-bug', task);
164
+ strict_1.default.equal(url, '');
165
+ });
166
+ });
167
+ // ─── printGhSuggestion ──────────────────────────────────────────────────────
168
+ (0, node_test_1.describe)('printGhSuggestion', () => {
169
+ let tmpDir;
170
+ let originalCwd;
171
+ (0, node_test_1.beforeEach)(() => {
172
+ originalCwd = process.cwd();
173
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aidev-gh-test-'));
174
+ initRepo(tmpDir);
175
+ process.chdir(tmpDir);
176
+ });
177
+ (0, node_test_1.afterEach)(() => {
178
+ process.chdir(originalCwd);
179
+ fs.rmSync(tmpDir, { recursive: true, force: true });
180
+ });
181
+ (0, node_test_1.it)('does not print anything for non-GitHub remotes', () => {
182
+ gitCmd(['remote', 'add', 'origin', 'https://gitlab.com/owner/repo.git'], tmpDir);
183
+ const logs = [];
184
+ const origLog = console.log;
185
+ console.log = (...args) => { logs.push(args.join(' ')); };
186
+ try {
187
+ (0, init_1.printGhSuggestion)('origin');
188
+ strict_1.default.equal(logs.length, 0);
189
+ }
190
+ finally {
191
+ console.log = origLog;
192
+ }
193
+ });
194
+ (0, node_test_1.it)('prints suggestion for GitHub remote', () => {
195
+ gitCmd(['remote', 'add', 'origin', 'https://github.com/owner/repo.git'], tmpDir);
196
+ const logs = [];
197
+ const origLog = console.log;
198
+ console.log = (...args) => { logs.push(args.join(' ')); };
199
+ try {
200
+ (0, init_1.printGhSuggestion)('origin');
201
+ const output = logs.join('\n');
202
+ strict_1.default.ok(output.includes('gh'));
203
+ }
204
+ finally {
205
+ console.log = origLog;
206
+ }
207
+ });
208
+ });
209
+ //# sourceMappingURL=github.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.test.js","sourceRoot":"","sources":["../../src/__tests__/github.test.ts"],"names":[],"mappings":"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"}