@mytechtoday/augment-sdd 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/beads/BeadsAdapter.js +30 -0
- package/out/beads/BeadsAdapter.js.map +1 -0
- package/out/beads/ClassicBeadsAdapter.js +84 -0
- package/out/beads/ClassicBeadsAdapter.js.map +1 -0
- package/out/beads/PowerShellBeadsAdapter.js +118 -0
- package/out/beads/PowerShellBeadsAdapter.js.map +1 -0
- package/out/beads/getBeadsAdapter.js +94 -0
- package/out/beads/getBeadsAdapter.js.map +1 -0
- package/out/commands/executeBeadsBatch.js +29 -15
- package/out/commands/executeBeadsBatch.js.map +1 -1
- package/out/commands/generateBeads.js +25 -22
- package/out/commands/generateBeads.js.map +1 -1
- package/out/commands/initWizard.js +184 -0
- package/out/commands/initWizard.js.map +1 -0
- package/out/extension.js +10 -0
- package/out/extension.js.map +1 -1
- package/out/test/integration/executeBeadsBatch.test.js +83 -57
- package/out/test/integration/executeBeadsBatch.test.js.map +1 -1
- package/out/test/integration/generateBeads.test.js +156 -0
- package/out/test/integration/generateBeads.test.js.map +1 -0
- package/out/test/integration/generateOpenSpec.test.js +16 -39
- package/out/test/integration/generateOpenSpec.test.js.map +1 -1
- package/out/test/unit/ClassicBeadsAdapter.test.js +121 -0
- package/out/test/unit/ClassicBeadsAdapter.test.js.map +1 -0
- package/out/test/unit/PowerShellBeadsAdapter.test.js +120 -0
- package/out/test/unit/PowerShellBeadsAdapter.test.js.map +1 -0
- package/out/test/unit/getBeadsAdapter.test.js +97 -0
- package/out/test/unit/getBeadsAdapter.test.js.map +1 -0
- package/out/test/unit/initWizard.test.js +170 -0
- package/out/test/unit/initWizard.test.js.map +1 -0
- package/out/test/unit/runCli.test.js +11 -24
- package/out/test/unit/runCli.test.js.map +1 -1
- package/out/utils/detectCli.js +47 -1
- package/out/utils/detectCli.js.map +1 -1
- package/out/utils/runCli.js +9 -3
- package/out/utils/runCli.js.map +1 -1
- package/package.json +22 -1
- package/.eslintrc.json +0 -20
- package/src/commands/executeBeadsBatch.ts +0 -153
- package/src/commands/fullPipeline.ts +0 -120
- package/src/commands/generateBeads.ts +0 -127
- package/src/commands/generateOpenSpec.ts +0 -227
- package/src/dashboard/DashboardPanel.ts +0 -168
- package/src/extension.ts +0 -77
- package/src/parsers/parseBeadUpdates.ts +0 -26
- package/src/parsers/parseTasksMarkdown.ts +0 -61
- package/src/test/integration/executeBeadsBatch.test.ts +0 -129
- package/src/test/integration/generateOpenSpec.test.ts +0 -129
- package/src/test/runTest.ts +0 -15
- package/src/test/suite/index.ts +0 -37
- package/src/test/unit/parseBeadUpdates.test.ts +0 -48
- package/src/test/unit/parseTasksMarkdown.test.ts +0 -41
- package/src/test/unit/runCli.test.ts +0 -109
- package/src/utils/detectCli.ts +0 -28
- package/src/utils/getConfig.ts +0 -25
- package/src/utils/logger.ts +0 -42
- package/src/utils/runCli.ts +0 -102
- package/tsconfig.json +0 -18
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateBeads.test.js","sourceRoot":"","sources":["../../../src/test/integration/generateBeads.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,41 +38,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
38
38
|
* IT-1: Happy path — proposal.md written, validate passes.
|
|
39
39
|
* IT-2: Auggie returns empty output on both attempts → showErrorMessage called.
|
|
40
40
|
*
|
|
41
|
-
* Strategy: stub
|
|
42
|
-
*
|
|
41
|
+
* Strategy: stub runCli module export instead of cp.spawn.
|
|
42
|
+
* Avoids the non-configurable spawn descriptor error in VS Code Electron.
|
|
43
|
+
* runCli call sequence: init → instructions/proposal → auggie → validate.
|
|
43
44
|
*/
|
|
44
45
|
const assert = __importStar(require("assert"));
|
|
45
|
-
const cp = __importStar(require("child_process"));
|
|
46
46
|
const fs = __importStar(require("fs"));
|
|
47
47
|
const os = __importStar(require("os"));
|
|
48
48
|
const path = __importStar(require("path"));
|
|
49
49
|
const sinon = __importStar(require("sinon"));
|
|
50
50
|
const vscode = __importStar(require("vscode"));
|
|
51
|
-
const events_1 = require("events");
|
|
52
51
|
const generateOpenSpec_1 = require("../../commands/generateOpenSpec");
|
|
53
|
-
|
|
54
|
-
// Fake process factory (mirrors the one in runCli.test.ts)
|
|
55
|
-
// ---------------------------------------------------------------------------
|
|
56
|
-
function fakeProc(opts) {
|
|
57
|
-
const stdoutEE = new events_1.EventEmitter();
|
|
58
|
-
const procEE = new events_1.EventEmitter();
|
|
59
|
-
const proc = {
|
|
60
|
-
stdout: stdoutEE,
|
|
61
|
-
stderr: new events_1.EventEmitter(),
|
|
62
|
-
kill: () => { },
|
|
63
|
-
on: procEE.on.bind(procEE),
|
|
64
|
-
once: procEE.once.bind(procEE),
|
|
65
|
-
removeListener: procEE.removeListener.bind(procEE),
|
|
66
|
-
emit: procEE.emit.bind(procEE),
|
|
67
|
-
};
|
|
68
|
-
setImmediate(() => {
|
|
69
|
-
if (opts.stdout) {
|
|
70
|
-
stdoutEE.emit('data', Buffer.from(opts.stdout));
|
|
71
|
-
}
|
|
72
|
-
procEE.emit('close', opts.code ?? 0);
|
|
73
|
-
});
|
|
74
|
-
return proc;
|
|
75
|
-
}
|
|
52
|
+
const runCliModule = __importStar(require("../../utils/runCli"));
|
|
76
53
|
// ---------------------------------------------------------------------------
|
|
77
54
|
// Helpers
|
|
78
55
|
// ---------------------------------------------------------------------------
|
|
@@ -105,13 +82,13 @@ function stubWorkspace(dir) {
|
|
|
105
82
|
suite('generateOpenSpec — integration tests', () => {
|
|
106
83
|
let tmpDir = '';
|
|
107
84
|
let restoreWF;
|
|
108
|
-
let
|
|
85
|
+
let runCliStub;
|
|
109
86
|
let infoStub;
|
|
110
87
|
let errStub;
|
|
111
88
|
setup(() => {
|
|
112
89
|
tmpDir = makeTempWorkspace();
|
|
113
90
|
restoreWF = stubWorkspace(tmpDir);
|
|
114
|
-
|
|
91
|
+
runCliStub = sinon.stub(runCliModule, 'runCli');
|
|
115
92
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
116
93
|
infoStub = sinon.stub(vscode.window, 'showInformationMessage').resolves(undefined);
|
|
117
94
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -123,11 +100,11 @@ suite('generateOpenSpec — integration tests', () => {
|
|
|
123
100
|
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
124
101
|
});
|
|
125
102
|
test('IT-1: happy path — proposal.md written, validate exits 0', async () => {
|
|
126
|
-
//
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
103
|
+
// runCli call order: openspec init → openspec instructions → auggie → openspec validate
|
|
104
|
+
runCliStub.onCall(0).resolves(''); // openspec init
|
|
105
|
+
runCliStub.onCall(1).resolves('{"template":"Write a proposal."}'); // openspec instructions
|
|
106
|
+
runCliStub.onCall(2).resolves('# Proposal\nContent here.'); // auggie
|
|
107
|
+
runCliStub.onCall(3).resolves('OK'); // openspec validate
|
|
131
108
|
await (0, generateOpenSpec_1.generateOpenSpec)();
|
|
132
109
|
// proposal.md must have been written
|
|
133
110
|
const proposalPath = path.join(tmpDir, 'openspec', 'changes', 'test-change', 'proposal.md');
|
|
@@ -139,11 +116,11 @@ suite('generateOpenSpec — integration tests', () => {
|
|
|
139
116
|
assert.ok(!errStub.called, 'showErrorMessage should NOT be called on success');
|
|
140
117
|
});
|
|
141
118
|
test('IT-2: Auggie returns empty on both attempts → showErrorMessage called', async () => {
|
|
142
|
-
// init → instructions → auggie (empty) → auggie retry (empty)
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
119
|
+
// runCli order: init → instructions → auggie (empty) → auggie retry (empty) → throws
|
|
120
|
+
runCliStub.onCall(0).resolves(''); // openspec init
|
|
121
|
+
runCliStub.onCall(1).resolves('{"template":"template"}'); // openspec instructions
|
|
122
|
+
runCliStub.onCall(2).resolves(''); // auggie attempt 1 → empty
|
|
123
|
+
runCliStub.onCall(3).resolves(''); // auggie retry → empty
|
|
147
124
|
await (0, generateOpenSpec_1.generateOpenSpec)();
|
|
148
125
|
// Error message must be shown; no proposal file written
|
|
149
126
|
assert.ok(errStub.called, 'showErrorMessage should be called after two empty Auggie attempts');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateOpenSpec.test.js","sourceRoot":"","sources":["../../../src/test/integration/generateOpenSpec.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"generateOpenSpec.test.js","sourceRoot":"","sources":["../../../src/test/integration/generateOpenSpec.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
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
|
+
/**
|
|
37
|
+
* Unit tests for ClassicBeadsAdapter (UT-1, UT-2 - ps-fix test-spec.md)
|
|
38
|
+
*
|
|
39
|
+
* Strategy: stub runCli module export so no real bd CLI is required.
|
|
40
|
+
* Avoids cp.spawn non-configurable property issue in VS Code Electron.
|
|
41
|
+
*/
|
|
42
|
+
const assert = __importStar(require("assert"));
|
|
43
|
+
const sinon = __importStar(require("sinon"));
|
|
44
|
+
const runCliModule = __importStar(require("../../utils/runCli"));
|
|
45
|
+
const ClassicBeadsAdapter_1 = require("../../beads/ClassicBeadsAdapter");
|
|
46
|
+
const BeadsAdapter_1 = require("../../beads/BeadsAdapter");
|
|
47
|
+
suite('ClassicBeadsAdapter - unit tests', () => {
|
|
48
|
+
const ROOT = '/fake/workspace';
|
|
49
|
+
let runCliStub;
|
|
50
|
+
setup(() => {
|
|
51
|
+
runCliStub = sinon.stub(runCliModule, 'runCli');
|
|
52
|
+
});
|
|
53
|
+
teardown(() => {
|
|
54
|
+
sinon.restore();
|
|
55
|
+
});
|
|
56
|
+
test('UT-1: ready() parses JSON array and passes ready/--json args', async () => {
|
|
57
|
+
const beads = [
|
|
58
|
+
{ id: 'bd-001', title: 'Alpha', description: 'Do alpha', status: 'open', priority: 2 },
|
|
59
|
+
];
|
|
60
|
+
runCliStub.resolves(JSON.stringify(beads));
|
|
61
|
+
const adapter = new ClassicBeadsAdapter_1.ClassicBeadsAdapter(ROOT);
|
|
62
|
+
const result = await adapter.ready();
|
|
63
|
+
assert.deepStrictEqual(result, beads);
|
|
64
|
+
const [cmd, args] = runCliStub.firstCall.args;
|
|
65
|
+
assert.strictEqual(cmd, 'bd');
|
|
66
|
+
assert.ok(args.includes('ready'));
|
|
67
|
+
assert.ok(args.includes('--json'));
|
|
68
|
+
});
|
|
69
|
+
test('UT-1b: ready(limit) appends --limit to args', async () => {
|
|
70
|
+
runCliStub.resolves('[]');
|
|
71
|
+
const adapter = new ClassicBeadsAdapter_1.ClassicBeadsAdapter(ROOT);
|
|
72
|
+
await adapter.ready(5);
|
|
73
|
+
const [, args] = runCliStub.firstCall.args;
|
|
74
|
+
const limitIdx = args.indexOf('--limit');
|
|
75
|
+
assert.ok(limitIdx !== -1);
|
|
76
|
+
assert.strictEqual(args[limitIdx + 1], '5');
|
|
77
|
+
});
|
|
78
|
+
test('UT-1c: ready() throws BeadsParseError on malformed JSON', async () => {
|
|
79
|
+
runCliStub.resolves('NOT_JSON');
|
|
80
|
+
const adapter = new ClassicBeadsAdapter_1.ClassicBeadsAdapter(ROOT);
|
|
81
|
+
await assert.rejects(adapter.ready(), BeadsAdapter_1.BeadsParseError);
|
|
82
|
+
});
|
|
83
|
+
test('UT-2: create() returns id from {"id":"bd-abc"}', async () => {
|
|
84
|
+
runCliStub.resolves(JSON.stringify({ id: 'bd-abc' }));
|
|
85
|
+
const adapter = new ClassicBeadsAdapter_1.ClassicBeadsAdapter(ROOT);
|
|
86
|
+
const id = await adapter.create('My Task', 'Some description');
|
|
87
|
+
assert.strictEqual(id, 'bd-abc');
|
|
88
|
+
const [cmd, args] = runCliStub.firstCall.args;
|
|
89
|
+
assert.strictEqual(cmd, 'bd');
|
|
90
|
+
assert.ok(args.includes('create'));
|
|
91
|
+
assert.ok(args.includes('--json'));
|
|
92
|
+
assert.ok(args.includes('My Task'));
|
|
93
|
+
});
|
|
94
|
+
test('UT-2b: create() throws BeadsParseError on malformed JSON', async () => {
|
|
95
|
+
runCliStub.resolves('oops');
|
|
96
|
+
const adapter = new ClassicBeadsAdapter_1.ClassicBeadsAdapter(ROOT);
|
|
97
|
+
await assert.rejects(adapter.create('T', 'D'), BeadsAdapter_1.BeadsParseError);
|
|
98
|
+
});
|
|
99
|
+
test('update() calls bd with correct args', async () => {
|
|
100
|
+
runCliStub.resolves('');
|
|
101
|
+
const adapter = new ClassicBeadsAdapter_1.ClassicBeadsAdapter(ROOT);
|
|
102
|
+
await adapter.update('bd-xyz', 'done');
|
|
103
|
+
const [cmd, args] = runCliStub.firstCall.args;
|
|
104
|
+
assert.strictEqual(cmd, 'bd');
|
|
105
|
+
assert.ok(args.includes('update'));
|
|
106
|
+
assert.ok(args.includes('bd-xyz'));
|
|
107
|
+
assert.ok(args.includes('--status'));
|
|
108
|
+
assert.ok(args.includes('done'));
|
|
109
|
+
});
|
|
110
|
+
test('search() parses JSON array', async () => {
|
|
111
|
+
const beads = [{ id: 'bd-s1', title: 'Search hit', description: '', status: 'open', priority: 3 }];
|
|
112
|
+
runCliStub.resolves(JSON.stringify(beads));
|
|
113
|
+
const adapter = new ClassicBeadsAdapter_1.ClassicBeadsAdapter(ROOT);
|
|
114
|
+
const result = await adapter.search('hit');
|
|
115
|
+
assert.deepStrictEqual(result, beads);
|
|
116
|
+
const [, args] = runCliStub.firstCall.args;
|
|
117
|
+
assert.ok(args.includes('search'));
|
|
118
|
+
assert.ok(args.includes('hit'));
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=ClassicBeadsAdapter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassicBeadsAdapter.test.js","sourceRoot":"","sources":["../../../src/test/unit/ClassicBeadsAdapter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
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
|
+
/**
|
|
37
|
+
* Unit tests for PowerShellBeadsAdapter (UT-3 - ps-fix test-spec.md)
|
|
38
|
+
*
|
|
39
|
+
* Strategy: stub runCli and detectCli module exports.
|
|
40
|
+
* Avoids cp.spawn non-configurable property issue in VS Code Electron.
|
|
41
|
+
*/
|
|
42
|
+
const assert = __importStar(require("assert"));
|
|
43
|
+
const sinon = __importStar(require("sinon"));
|
|
44
|
+
const runCliModule = __importStar(require("../../utils/runCli"));
|
|
45
|
+
const detectCliModule = __importStar(require("../../utils/detectCli"));
|
|
46
|
+
const PowerShellBeadsAdapter_1 = require("../../beads/PowerShellBeadsAdapter");
|
|
47
|
+
const BeadsAdapter_1 = require("../../beads/BeadsAdapter");
|
|
48
|
+
const SCRIPT = '/workspace/scripts/beads-query.ps1';
|
|
49
|
+
const ROOT = '/workspace';
|
|
50
|
+
suite('PowerShellBeadsAdapter - unit tests', () => {
|
|
51
|
+
let runCliStub;
|
|
52
|
+
let detectCliStub;
|
|
53
|
+
setup(() => {
|
|
54
|
+
runCliStub = sinon.stub(runCliModule, 'runCli');
|
|
55
|
+
detectCliStub = sinon.stub(detectCliModule, 'detectCli');
|
|
56
|
+
});
|
|
57
|
+
teardown(() => {
|
|
58
|
+
sinon.restore();
|
|
59
|
+
});
|
|
60
|
+
test('UT-3: ready() passes correct pwsh -File <script> ready -Json args', async () => {
|
|
61
|
+
const beads = [
|
|
62
|
+
{ id: 'bd-ps1', title: 'PS Bead', description: 'Do it', status: 'open', priority: 2 },
|
|
63
|
+
];
|
|
64
|
+
detectCliStub.withArgs('pwsh').resolves(true);
|
|
65
|
+
runCliStub.resolves(JSON.stringify(beads));
|
|
66
|
+
const adapter = new PowerShellBeadsAdapter_1.PowerShellBeadsAdapter(ROOT, SCRIPT);
|
|
67
|
+
const result = await adapter.ready();
|
|
68
|
+
assert.deepStrictEqual(result, beads);
|
|
69
|
+
const [cmd, args] = runCliStub.firstCall.args;
|
|
70
|
+
assert.strictEqual(cmd, 'pwsh');
|
|
71
|
+
assert.strictEqual(args[0], '-File');
|
|
72
|
+
assert.strictEqual(args[1], SCRIPT);
|
|
73
|
+
assert.strictEqual(args[2], 'ready');
|
|
74
|
+
assert.ok(args.includes('-Json'));
|
|
75
|
+
});
|
|
76
|
+
test('UT-3b: ready(limit) appends -Limit to args', async () => {
|
|
77
|
+
detectCliStub.withArgs('pwsh').resolves(true);
|
|
78
|
+
runCliStub.resolves('[]');
|
|
79
|
+
const adapter = new PowerShellBeadsAdapter_1.PowerShellBeadsAdapter(ROOT, SCRIPT);
|
|
80
|
+
await adapter.ready(4);
|
|
81
|
+
const [, args] = runCliStub.firstCall.args;
|
|
82
|
+
const limitIdx = args.indexOf('-Limit');
|
|
83
|
+
assert.ok(limitIdx !== -1);
|
|
84
|
+
assert.strictEqual(args[limitIdx + 1], '4');
|
|
85
|
+
});
|
|
86
|
+
test('UT-3c: ready() throws BeadsParseError on malformed JSON', async () => {
|
|
87
|
+
detectCliStub.withArgs('pwsh').resolves(true);
|
|
88
|
+
runCliStub.resolves('NOT_JSON');
|
|
89
|
+
const adapter = new PowerShellBeadsAdapter_1.PowerShellBeadsAdapter(ROOT, SCRIPT);
|
|
90
|
+
await assert.rejects(adapter.ready(), BeadsAdapter_1.BeadsParseError);
|
|
91
|
+
});
|
|
92
|
+
test('update() maps in_progress -> in-progress for PS convention', async () => {
|
|
93
|
+
detectCliStub.withArgs('pwsh').resolves(true);
|
|
94
|
+
runCliStub.resolves('');
|
|
95
|
+
const adapter = new PowerShellBeadsAdapter_1.PowerShellBeadsAdapter(ROOT, SCRIPT);
|
|
96
|
+
await adapter.update('bd-xyz', 'in_progress');
|
|
97
|
+
const [, args] = runCliStub.firstCall.args;
|
|
98
|
+
const statusIdx = args.indexOf('-Status');
|
|
99
|
+
assert.ok(statusIdx !== -1);
|
|
100
|
+
assert.strictEqual(args[statusIdx + 1], 'in-progress');
|
|
101
|
+
});
|
|
102
|
+
test('update() passes done unchanged', async () => {
|
|
103
|
+
detectCliStub.withArgs('pwsh').resolves(true);
|
|
104
|
+
runCliStub.resolves('');
|
|
105
|
+
const adapter = new PowerShellBeadsAdapter_1.PowerShellBeadsAdapter(ROOT, SCRIPT);
|
|
106
|
+
await adapter.update('bd-xyz', 'done');
|
|
107
|
+
const [, args] = runCliStub.firstCall.args;
|
|
108
|
+
const statusIdx = args.indexOf('-Status');
|
|
109
|
+
assert.strictEqual(args[statusIdx + 1], 'done');
|
|
110
|
+
});
|
|
111
|
+
test('falls back to powershell when pwsh is absent', async () => {
|
|
112
|
+
detectCliStub.withArgs('pwsh').resolves(false);
|
|
113
|
+
runCliStub.resolves('[]');
|
|
114
|
+
const adapter = new PowerShellBeadsAdapter_1.PowerShellBeadsAdapter(ROOT, SCRIPT);
|
|
115
|
+
await adapter.ready();
|
|
116
|
+
const [cmd] = runCliStub.firstCall.args;
|
|
117
|
+
assert.strictEqual(cmd, 'powershell');
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=PowerShellBeadsAdapter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PowerShellBeadsAdapter.test.js","sourceRoot":"","sources":["../../../src/test/unit/PowerShellBeadsAdapter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
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
|
+
/**
|
|
37
|
+
* Unit tests for getBeadsAdapter factory (UT-4 - ps-fix test-spec.md)
|
|
38
|
+
*
|
|
39
|
+
* Strategy: stub detectCli module export instead of cp.spawn.
|
|
40
|
+
*/
|
|
41
|
+
const assert = __importStar(require("assert"));
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const os = __importStar(require("os"));
|
|
45
|
+
const sinon = __importStar(require("sinon"));
|
|
46
|
+
const vscode = __importStar(require("vscode"));
|
|
47
|
+
const detectCliModule = __importStar(require("../../utils/detectCli"));
|
|
48
|
+
const getBeadsAdapter_1 = require("../../beads/getBeadsAdapter");
|
|
49
|
+
const ClassicBeadsAdapter_1 = require("../../beads/ClassicBeadsAdapter");
|
|
50
|
+
const PowerShellBeadsAdapter_1 = require("../../beads/PowerShellBeadsAdapter");
|
|
51
|
+
function stubBackend(backend) {
|
|
52
|
+
sinon.stub(vscode.workspace, 'getConfiguration').returns({
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
54
|
+
get: (key, def) => key === 'beadsBackend' ? backend : def,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
suite('getBeadsAdapter - unit tests', () => {
|
|
58
|
+
let tmpDir;
|
|
59
|
+
setup(() => {
|
|
60
|
+
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'augsdd-gba-'));
|
|
61
|
+
});
|
|
62
|
+
teardown(() => {
|
|
63
|
+
sinon.restore();
|
|
64
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
65
|
+
});
|
|
66
|
+
test('UT-4a: backend="bd" -> ClassicBeadsAdapter', async () => {
|
|
67
|
+
stubBackend('bd');
|
|
68
|
+
const adapter = await (0, getBeadsAdapter_1.getBeadsAdapter)(tmpDir);
|
|
69
|
+
assert.ok(adapter instanceof ClassicBeadsAdapter_1.ClassicBeadsAdapter);
|
|
70
|
+
});
|
|
71
|
+
test('UT-4b: backend="beads-ps1" -> PowerShellBeadsAdapter', async () => {
|
|
72
|
+
stubBackend('beads-ps1');
|
|
73
|
+
const adapter = await (0, getBeadsAdapter_1.getBeadsAdapter)(tmpDir);
|
|
74
|
+
assert.ok(adapter instanceof PowerShellBeadsAdapter_1.PowerShellBeadsAdapter);
|
|
75
|
+
});
|
|
76
|
+
test('UT-4c: auto + bd on PATH -> ClassicBeadsAdapter', async () => {
|
|
77
|
+
stubBackend('auto');
|
|
78
|
+
sinon.stub(detectCliModule, 'detectCli').withArgs('bd').resolves(true);
|
|
79
|
+
const adapter = await (0, getBeadsAdapter_1.getBeadsAdapter)(tmpDir);
|
|
80
|
+
assert.ok(adapter instanceof ClassicBeadsAdapter_1.ClassicBeadsAdapter);
|
|
81
|
+
});
|
|
82
|
+
test('UT-4d: auto + bd absent + script present -> PowerShellBeadsAdapter', async () => {
|
|
83
|
+
stubBackend('auto');
|
|
84
|
+
sinon.stub(detectCliModule, 'detectCli').withArgs('bd').resolves(false);
|
|
85
|
+
const scriptsDir = path.join(tmpDir, 'scripts');
|
|
86
|
+
fs.mkdirSync(scriptsDir);
|
|
87
|
+
fs.writeFileSync(path.join(scriptsDir, 'beads-query.ps1'), '# stub');
|
|
88
|
+
const adapter = await (0, getBeadsAdapter_1.getBeadsAdapter)(tmpDir);
|
|
89
|
+
assert.ok(adapter instanceof PowerShellBeadsAdapter_1.PowerShellBeadsAdapter);
|
|
90
|
+
});
|
|
91
|
+
test('UT-4e: auto + neither present -> throws actionable error', async () => {
|
|
92
|
+
stubBackend('auto');
|
|
93
|
+
sinon.stub(detectCliModule, 'detectCli').withArgs('bd').resolves(false);
|
|
94
|
+
await assert.rejects((0, getBeadsAdapter_1.getBeadsAdapter)(tmpDir), /augmentSdd\.init/i);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=getBeadsAdapter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBeadsAdapter.test.js","sourceRoot":"","sources":["../../../src/test/unit/getBeadsAdapter.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;GAIG;AACH,+CAAiC;AACjC,uCAA6B;AAC7B,2CAA+B;AAC/B,uCAA6B;AAC7B,6CAAgC;AAChC,+CAAiC;AACjC,uEAAyD;AACzD,iEAAuE;AACvE,yEAA2E;AAC3E,+EAA8E;AAE9E,SAAS,WAAW,CAAC,OAAe;IAClC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAC;QACvD,8DAA8D;QAC9D,GAAG,EAAE,CAAC,GAAW,EAAE,GAAS,EAAE,EAAE,CAAC,GAAG,KAAK,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;KAChB,CAAC,CAAC;AAC7D,CAAC;AAED,KAAK,CAAC,8BAA8B,EAAE,GAAG,EAAE;IACzC,IAAI,MAAc,CAAC;IAEnB,KAAK,CAAC,GAAG,EAAE;QACT,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,GAAG,EAAE;QACZ,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC5D,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAe,EAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,OAAO,YAAY,yCAAmB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACtE,WAAW,CAAC,WAAW,CAAC,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAe,EAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,OAAO,YAAY,+CAAsB,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QACjE,WAAW,CAAC,MAAM,CAAC,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEvE,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAe,EAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,OAAO,YAAY,yCAAmB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QACpF,WAAW,CAAC,MAAM,CAAC,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAExE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAChD,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,QAAQ,CAAC,CAAC;QAErE,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAe,EAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,OAAO,YAAY,+CAAsB,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAC1E,WAAW,CAAC,MAAM,CAAC,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAExE,MAAM,MAAM,CAAC,OAAO,CAClB,IAAA,iCAAe,EAAC,MAAM,CAAC,EACvB,mBAAmB,CACpB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|