@provartesting/provardx-cli 1.5.0-beta.13 → 1.5.0-beta.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.
- package/lib/commands/provar/mcp/start.d.ts +2 -0
- package/lib/commands/provar/mcp/start.js +14 -1
- package/lib/commands/provar/mcp/start.js.map +1 -1
- package/lib/mcp/server.d.ts +5 -0
- package/lib/mcp/server.js +8 -1
- package/lib/mcp/server.js.map +1 -1
- package/lib/mcp/tools/automationTools.js +2 -0
- package/lib/mcp/tools/automationTools.js.map +1 -1
- package/lib/mcp/tools/projectValidateFromPath.js +28 -11
- package/lib/mcp/tools/projectValidateFromPath.js.map +1 -1
- package/lib/mcp/tools/testCaseGenerate.js +16 -9
- package/lib/mcp/tools/testCaseGenerate.js.map +1 -1
- package/lib/mcp/tools/testCaseValidate.js +43 -28
- package/lib/mcp/tools/testCaseValidate.js.map +1 -1
- package/lib/mcp/update/updateChecker.d.ts +14 -0
- package/lib/mcp/update/updateChecker.js +228 -0
- package/lib/mcp/update/updateChecker.js.map +1 -0
- package/lib/services/projectValidation.d.ts +5 -2
- package/lib/services/projectValidation.js +77 -31
- package/lib/services/projectValidation.js.map +1 -1
- package/messages/sf.provar.mcp.start.md +84 -48
- package/oclif.manifest.json +14 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testCaseValidate.js","sourceRoot":"","sources":["../../../src/mcp/tools/testCaseValidate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testCaseValidate.js","sourceRoot":"","sources":["../../../src/mcp/tools/testCaseValidate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface CheckForUpdateResult {
|
|
2
|
+
currentVersion: string;
|
|
3
|
+
latestVersion: string | null;
|
|
4
|
+
updateAvailable: boolean;
|
|
5
|
+
updateCommand: string | null;
|
|
6
|
+
fromCache: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function deriveChannel(version: string): string;
|
|
9
|
+
export declare function isNewer(current: string, latest: string): boolean;
|
|
10
|
+
export declare function detectInstallMethod(): 'sf-plugin' | 'npm-global' | 'linked';
|
|
11
|
+
export declare function checkForUpdate(opts: {
|
|
12
|
+
noUpdateCheck: boolean;
|
|
13
|
+
autoUpdate: boolean;
|
|
14
|
+
}): Promise<CheckForUpdateResult>;
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Provar Limited.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
* Licensed under the BSD 3-Clause license.
|
|
5
|
+
* For full license text, see LICENSE.md file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
6
|
+
*/
|
|
7
|
+
import fs from 'node:fs';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import os from 'node:os';
|
|
10
|
+
import { fileURLToPath } from 'node:url';
|
|
11
|
+
import { spawnSync } from 'node:child_process';
|
|
12
|
+
import { createRequire } from 'node:module';
|
|
13
|
+
import { log } from '../logging/logger.js';
|
|
14
|
+
const requireJson = createRequire(import.meta.url);
|
|
15
|
+
const CURRENT_SERVER_VERSION = requireJson('../../../package.json').version;
|
|
16
|
+
const UPDATE_TTL_MS = 4 * 60 * 60 * 1000;
|
|
17
|
+
const UPDATE_GRACE_MS = 48 * 60 * 60 * 1000;
|
|
18
|
+
const SPAWN_OPTS = {
|
|
19
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
20
|
+
timeout: 30000,
|
|
21
|
+
shell: process.platform === 'win32',
|
|
22
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
23
|
+
};
|
|
24
|
+
const SEMVER_RE = /^\d+\.\d+\.\d+(-[a-zA-Z0-9.]+)?$/;
|
|
25
|
+
function cacheDir() {
|
|
26
|
+
const provarHome = process.env['PROVAR_HOME'] ?? path.join(os.homedir(), 'Provar');
|
|
27
|
+
return path.join(provarHome, '.cache');
|
|
28
|
+
}
|
|
29
|
+
function cacheFile() {
|
|
30
|
+
return path.join(cacheDir(), '.mcp-update-cache.json');
|
|
31
|
+
}
|
|
32
|
+
// Derives the dist-tag channel from the current version's prerelease identifier.
|
|
33
|
+
// '1.5.0-beta.10' → 'beta', '1.5.0' → 'latest'
|
|
34
|
+
// Same-channel assumption: we fetch dist-tags.{channel} and compare within that channel.
|
|
35
|
+
// Cross-label comparison (e.g. beta vs rc) is explicitly out of scope.
|
|
36
|
+
export function deriveChannel(version) {
|
|
37
|
+
const hyphen = version.indexOf('-');
|
|
38
|
+
if (hyphen === -1)
|
|
39
|
+
return 'latest';
|
|
40
|
+
return version.slice(hyphen + 1).split('.')[0] ?? 'latest';
|
|
41
|
+
}
|
|
42
|
+
export function isNewer(current, latest) {
|
|
43
|
+
if (current === latest)
|
|
44
|
+
return false;
|
|
45
|
+
if (!SEMVER_RE.test(latest))
|
|
46
|
+
return false;
|
|
47
|
+
const split = (v) => {
|
|
48
|
+
const [main, pre = ''] = v.split('-');
|
|
49
|
+
const [major, minor, patch] = (main ?? '').split('.').map(Number);
|
|
50
|
+
// Infinity for stable versions so stable is always newer than any prerelease
|
|
51
|
+
const preN = pre ? parseInt(pre.split('.').pop() ?? '0', 10) : Infinity;
|
|
52
|
+
return [major, minor, patch, preN];
|
|
53
|
+
};
|
|
54
|
+
const [cm, cn, cp, cpN] = split(current);
|
|
55
|
+
const [lm, ln, lp, lpN] = split(latest);
|
|
56
|
+
for (const [c, l] of [
|
|
57
|
+
[cm, lm],
|
|
58
|
+
[cn, ln],
|
|
59
|
+
[cp, lp],
|
|
60
|
+
[cpN, lpN],
|
|
61
|
+
]) {
|
|
62
|
+
if (l > c)
|
|
63
|
+
return true;
|
|
64
|
+
if (l < c)
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
export function detectInstallMethod() {
|
|
70
|
+
const modulePath = fileURLToPath(import.meta.url);
|
|
71
|
+
const sfDataDirs = [
|
|
72
|
+
path.join('.local', 'share', 'sf'),
|
|
73
|
+
path.join('AppData', 'Local', 'sf'),
|
|
74
|
+
path.join('AppData', 'Roaming', 'sf'),
|
|
75
|
+
path.join('.local', 'share', 'sfdx'),
|
|
76
|
+
];
|
|
77
|
+
if (sfDataDirs.some((d) => modulePath.includes(d)))
|
|
78
|
+
return 'sf-plugin';
|
|
79
|
+
if (modulePath.includes('node_modules'))
|
|
80
|
+
return 'npm-global';
|
|
81
|
+
return 'linked';
|
|
82
|
+
}
|
|
83
|
+
function readUpdateCache() {
|
|
84
|
+
try {
|
|
85
|
+
const raw = fs.readFileSync(cacheFile(), 'utf-8');
|
|
86
|
+
return JSON.parse(raw);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function writeUpdateCache(entry) {
|
|
93
|
+
try {
|
|
94
|
+
fs.mkdirSync(cacheDir(), { recursive: true });
|
|
95
|
+
const file = cacheFile();
|
|
96
|
+
fs.writeFileSync(file, JSON.stringify(entry, null, 2), { encoding: 'utf-8', mode: 0o600 });
|
|
97
|
+
try {
|
|
98
|
+
fs.chmodSync(file, 0o600);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// best effort
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
log('warn', 'updateChecker: failed to write cache', { error: String(err) });
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function buildUpdateCommand(latestVersion) {
|
|
109
|
+
const method = detectInstallMethod();
|
|
110
|
+
if (method === 'npm-global') {
|
|
111
|
+
return 'npm install -g @provartesting/provardx-cli@' + latestVersion;
|
|
112
|
+
}
|
|
113
|
+
return 'sf plugins install @provartesting/provardx-cli@' + latestVersion;
|
|
114
|
+
}
|
|
115
|
+
function resultFromCache(cached, currentVersion) {
|
|
116
|
+
const updateAvailable = cached.latestVersion ? isNewer(currentVersion, cached.latestVersion) : false;
|
|
117
|
+
const updateCommand = updateAvailable && cached.latestVersion ? buildUpdateCommand(cached.latestVersion) : null;
|
|
118
|
+
return { currentVersion, latestVersion: cached.latestVersion, updateAvailable, updateCommand, fromCache: true };
|
|
119
|
+
}
|
|
120
|
+
async function fetchLatestVersion(channel) {
|
|
121
|
+
const controller = new AbortController();
|
|
122
|
+
const timer = setTimeout(() => controller.abort(), 5000);
|
|
123
|
+
try {
|
|
124
|
+
const resp = await fetch('https://registry.npmjs.org/@provartesting/provardx-cli', {
|
|
125
|
+
signal: controller.signal,
|
|
126
|
+
headers: { Accept: 'application/json' },
|
|
127
|
+
});
|
|
128
|
+
if (!resp.ok) {
|
|
129
|
+
log('warn', 'updateChecker: registry returned non-200', { status: resp.status });
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
const data = (await resp.json());
|
|
133
|
+
const distTags = data['dist-tags'];
|
|
134
|
+
const candidate = distTags?.[channel];
|
|
135
|
+
if (!candidate) {
|
|
136
|
+
log('warn', 'updateChecker: dist-tag not found in registry', { channel });
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
if (!SEMVER_RE.test(candidate)) {
|
|
140
|
+
log('warn', 'updateChecker: registry returned invalid semver', { candidate });
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
return candidate;
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
clearTimeout(timer);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function applyAutoUpdate(latestVersion) {
|
|
150
|
+
const method = detectInstallMethod();
|
|
151
|
+
if (method === 'linked') {
|
|
152
|
+
process.stderr.write('[provar-mcp] Auto-update skipped: running from development link. Install manually:\n' +
|
|
153
|
+
' sf plugins install @provartesting/provardx-cli@' +
|
|
154
|
+
latestVersion +
|
|
155
|
+
'\n');
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const args = method === 'sf-plugin'
|
|
159
|
+
? ['plugins', 'install', '@provartesting/provardx-cli@' + latestVersion]
|
|
160
|
+
: ['install', '-g', '@provartesting/provardx-cli@' + latestVersion];
|
|
161
|
+
const cmd = method === 'sf-plugin' ? 'sf' : 'npm';
|
|
162
|
+
log('info', 'updateChecker: running auto-update', { cmd, args });
|
|
163
|
+
const result = spawnSync(cmd, args, SPAWN_OPTS);
|
|
164
|
+
if (result.error != null || result.status !== 0 || result.signal != null) {
|
|
165
|
+
const detail = result.stderr?.toString().trim() ?? '';
|
|
166
|
+
log('error', 'updateChecker: auto-update failed', { status: result.status, signal: result.signal, detail });
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
process.stderr.write('[provar-mcp] Updated to ' + latestVersion + '. Restart your MCP connection to use the new version.\n');
|
|
170
|
+
process.exit(0);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
export async function checkForUpdate(opts) {
|
|
174
|
+
const currentVersion = CURRENT_SERVER_VERSION;
|
|
175
|
+
const earlyExit = {
|
|
176
|
+
currentVersion,
|
|
177
|
+
latestVersion: null,
|
|
178
|
+
updateAvailable: false,
|
|
179
|
+
updateCommand: null,
|
|
180
|
+
fromCache: false,
|
|
181
|
+
};
|
|
182
|
+
if (process.env.NODE_ENV === 'test')
|
|
183
|
+
return earlyExit;
|
|
184
|
+
if (process.env['PROVAR_NO_UPDATE_CHECK'])
|
|
185
|
+
return earlyExit;
|
|
186
|
+
if (opts.noUpdateCheck)
|
|
187
|
+
return earlyExit;
|
|
188
|
+
const channel = deriveChannel(currentVersion);
|
|
189
|
+
const cached = readUpdateCache();
|
|
190
|
+
if (cached != null &&
|
|
191
|
+
cached.channel === channel &&
|
|
192
|
+
cached.currentVersion === currentVersion &&
|
|
193
|
+
Date.now() - cached.checkedAt < UPDATE_TTL_MS) {
|
|
194
|
+
log('info', 'updateChecker: cache hit', { channel, latestVersion: cached.latestVersion, fromCache: true });
|
|
195
|
+
return resultFromCache(cached, currentVersion);
|
|
196
|
+
}
|
|
197
|
+
let latestVersion = null;
|
|
198
|
+
try {
|
|
199
|
+
latestVersion = await fetchLatestVersion(channel);
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
203
|
+
log('warn', 'updateChecker: registry fetch failed', { error: errMsg });
|
|
204
|
+
if (cached != null && Date.now() - cached.checkedAt < UPDATE_GRACE_MS) {
|
|
205
|
+
return resultFromCache(cached, currentVersion);
|
|
206
|
+
}
|
|
207
|
+
return earlyExit;
|
|
208
|
+
}
|
|
209
|
+
writeUpdateCache({ checkedAt: Date.now(), currentVersion, latestVersion, channel });
|
|
210
|
+
const updateAvailable = latestVersion ? isNewer(currentVersion, latestVersion) : false;
|
|
211
|
+
const updateCommand = updateAvailable && latestVersion ? buildUpdateCommand(latestVersion) : null;
|
|
212
|
+
if (updateAvailable && latestVersion) {
|
|
213
|
+
process.stderr.write('[provar-mcp] Update available: ' +
|
|
214
|
+
latestVersion +
|
|
215
|
+
' (current: ' +
|
|
216
|
+
currentVersion +
|
|
217
|
+
')\n' +
|
|
218
|
+
' Run: ' +
|
|
219
|
+
(updateCommand ?? '') +
|
|
220
|
+
'\n');
|
|
221
|
+
log('info', 'updateChecker: update available', { currentVersion, latestVersion, updateCommand });
|
|
222
|
+
if (opts.autoUpdate) {
|
|
223
|
+
applyAutoUpdate(latestVersion);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return { currentVersion, latestVersion, updateAvailable, updateCommand, fromCache: false };
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=updateChecker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateChecker.js","sourceRoot":"","sources":["../../../src/mcp/update/updateChecker.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,8 @@ export interface ProjectValidationResult {
|
|
|
62
62
|
uncovered_test_cases: string[];
|
|
63
63
|
};
|
|
64
64
|
saved_to: string | null;
|
|
65
|
+
/** Directories within plans/ that are missing a .planitem file and will be silently ignored by the Provar runner. */
|
|
66
|
+
plan_integrity_warnings?: string[];
|
|
65
67
|
/** Set when save_results was requested but the write failed (disk full, permissions, etc.). */
|
|
66
68
|
save_error?: string;
|
|
67
69
|
}
|
|
@@ -88,11 +90,12 @@ export declare function readProjectContext(projectPath: string): {
|
|
|
88
90
|
context: ProjectContext;
|
|
89
91
|
};
|
|
90
92
|
export declare function resolveTestInstance(instancePath: string, projectPath: string): TestCaseInput | null;
|
|
91
|
-
export declare function readSuiteDirectory(dirPath: string, name: string, projectPath: string, depth?: number, coveredPaths?: Set<string>, idMap?: Map<string, string
|
|
92
|
-
export declare function readPlanDirectory(planPath: string, name: string, projectPath: string, coveredPaths?: Set<string>, idMap?: Map<string, string
|
|
93
|
+
export declare function readSuiteDirectory(dirPath: string, name: string, projectPath: string, depth?: number, coveredPaths?: Set<string>, idMap?: Map<string, string>, planIntegrityWarnings?: string[]): TestSuiteInput;
|
|
94
|
+
export declare function readPlanDirectory(planPath: string, name: string, projectPath: string, coveredPaths?: Set<string>, idMap?: Map<string, string>, planIntegrityWarnings?: string[]): TestPlanInput;
|
|
93
95
|
export declare function readPlansDir(projectPath: string): {
|
|
94
96
|
plans: TestPlanInput[];
|
|
95
97
|
coveredPaths: Set<string>;
|
|
98
|
+
planIntegrityWarnings: string[];
|
|
96
99
|
};
|
|
97
100
|
/**
|
|
98
101
|
* Collects all .testcase file basenames (without extension) found under tests/.
|
|
@@ -70,7 +70,9 @@ export function resolveProjectRoot(givenPath) {
|
|
|
70
70
|
candidates.push(sub);
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
catch {
|
|
73
|
+
catch {
|
|
74
|
+
/* skip */
|
|
75
|
+
}
|
|
74
76
|
if (candidates.length === 1)
|
|
75
77
|
return { root: candidates[0], candidates: [] };
|
|
76
78
|
return { root: givenPath, candidates }; // caller handles 0 or multiple
|
|
@@ -127,7 +129,9 @@ export function readProjectContext(projectPath) {
|
|
|
127
129
|
unencryptedSecretCount++;
|
|
128
130
|
}
|
|
129
131
|
}
|
|
130
|
-
catch {
|
|
132
|
+
catch {
|
|
133
|
+
/* skip */
|
|
134
|
+
}
|
|
131
135
|
}
|
|
132
136
|
return {
|
|
133
137
|
projectName,
|
|
@@ -158,16 +162,17 @@ function resolveTestInstanceFull(instancePath, projectPath) {
|
|
|
158
162
|
// Bounds check: only read test case files within the project directory
|
|
159
163
|
const tcInBounds = tcFullPath === projResolved || tcFullPath.startsWith(projResolved + path.sep);
|
|
160
164
|
// Derive name from the bounds-checked resolved path to prevent injection via crafted testCasePath
|
|
161
|
-
const tcName = tcInBounds
|
|
162
|
-
? path.basename(tcFullPath, '.testcase')
|
|
163
|
-
: path.basename(testCasePath, '.testcase');
|
|
165
|
+
const tcName = tcInBounds ? path.basename(tcFullPath, '.testcase') : path.basename(testCasePath, '.testcase');
|
|
164
166
|
if (tcInBounds && fs.existsSync(tcFullPath)) {
|
|
165
167
|
try {
|
|
166
168
|
xml_content = fs.readFileSync(tcFullPath, 'utf-8');
|
|
167
169
|
}
|
|
168
|
-
catch {
|
|
170
|
+
catch {
|
|
171
|
+
/* xml_content stays undefined */
|
|
172
|
+
}
|
|
169
173
|
}
|
|
170
|
-
|
|
174
|
+
// Only expose testCasePath when in-bounds — out-of-bounds paths must not affect coverage totals
|
|
175
|
+
return { testCase: { name: tcName, xml_content }, testCasePath: tcInBounds ? testCasePath : null, testCaseId };
|
|
171
176
|
}
|
|
172
177
|
catch {
|
|
173
178
|
return { testCase: null, testCasePath: null, testCaseId: null };
|
|
@@ -188,7 +193,7 @@ function accumulateCoveredPath(testCasePath, testCaseId, coveredPaths, idMap) {
|
|
|
188
193
|
coveredPaths.add(resolved);
|
|
189
194
|
}
|
|
190
195
|
}
|
|
191
|
-
export function readSuiteDirectory(dirPath, name, projectPath, depth = 0, coveredPaths, idMap) {
|
|
196
|
+
export function readSuiteDirectory(dirPath, name, projectPath, depth = 0, coveredPaths, idMap, planIntegrityWarnings) {
|
|
192
197
|
const testCases = [];
|
|
193
198
|
const testSuites = [];
|
|
194
199
|
if (depth > MAX_SUITE_DEPTH)
|
|
@@ -200,7 +205,12 @@ export function readSuiteDirectory(dirPath, name, projectPath, depth = 0, covere
|
|
|
200
205
|
continue;
|
|
201
206
|
const fullPath = path.join(dirPath, entry.name);
|
|
202
207
|
if (entry.isDirectory() && !entry.name.startsWith('.')) {
|
|
203
|
-
|
|
208
|
+
const subHasPlanItem = fs.existsSync(path.join(fullPath, '.planitem'));
|
|
209
|
+
if (planIntegrityWarnings && !subHasPlanItem) {
|
|
210
|
+
const rel = path.relative(projectPath, fullPath).replace(/\\/g, '/');
|
|
211
|
+
planIntegrityWarnings.push(`${rel}/ is missing a .planitem file — test instances in this suite will be invisible to the runner.`);
|
|
212
|
+
}
|
|
213
|
+
testSuites.push(readSuiteDirectory(fullPath, entry.name, projectPath, depth + 1, subHasPlanItem ? coveredPaths : undefined, subHasPlanItem ? idMap : undefined, planIntegrityWarnings));
|
|
204
214
|
}
|
|
205
215
|
else if (entry.name.endsWith('.testinstance')) {
|
|
206
216
|
const { testCase, testCasePath, testCaseId } = resolveTestInstanceFull(fullPath, projectPath);
|
|
@@ -211,10 +221,12 @@ export function readSuiteDirectory(dirPath, name, projectPath, depth = 0, covere
|
|
|
211
221
|
}
|
|
212
222
|
}
|
|
213
223
|
}
|
|
214
|
-
catch {
|
|
224
|
+
catch {
|
|
225
|
+
/* skip */
|
|
226
|
+
}
|
|
215
227
|
return { name, test_cases: testCases, test_suites: testSuites };
|
|
216
228
|
}
|
|
217
|
-
export function readPlanDirectory(planPath, name, projectPath, coveredPaths, idMap) {
|
|
229
|
+
export function readPlanDirectory(planPath, name, projectPath, coveredPaths, idMap, planIntegrityWarnings) {
|
|
218
230
|
const testCases = [];
|
|
219
231
|
const testSuites = [];
|
|
220
232
|
try {
|
|
@@ -224,7 +236,12 @@ export function readPlanDirectory(planPath, name, projectPath, coveredPaths, idM
|
|
|
224
236
|
continue;
|
|
225
237
|
const fullPath = path.join(planPath, entry.name);
|
|
226
238
|
if (entry.isDirectory() && !entry.name.startsWith('.')) {
|
|
227
|
-
|
|
239
|
+
const suiteHasPlanItem = fs.existsSync(path.join(fullPath, '.planitem'));
|
|
240
|
+
if (planIntegrityWarnings && !suiteHasPlanItem) {
|
|
241
|
+
const rel = path.relative(projectPath, fullPath).replace(/\\/g, '/');
|
|
242
|
+
planIntegrityWarnings.push(`${rel}/ is missing a .planitem file — test instances in this suite will be invisible to the runner.`);
|
|
243
|
+
}
|
|
244
|
+
testSuites.push(readSuiteDirectory(fullPath, entry.name, projectPath, 0, suiteHasPlanItem ? coveredPaths : undefined, suiteHasPlanItem ? idMap : undefined, planIntegrityWarnings));
|
|
228
245
|
}
|
|
229
246
|
else if (entry.name.endsWith('.testinstance')) {
|
|
230
247
|
const { testCase, testCasePath, testCaseId } = resolveTestInstanceFull(fullPath, projectPath);
|
|
@@ -235,14 +252,17 @@ export function readPlanDirectory(planPath, name, projectPath, coveredPaths, idM
|
|
|
235
252
|
}
|
|
236
253
|
}
|
|
237
254
|
}
|
|
238
|
-
catch {
|
|
255
|
+
catch {
|
|
256
|
+
/* skip */
|
|
257
|
+
}
|
|
239
258
|
return { name, test_cases: testCases, test_suites: testSuites };
|
|
240
259
|
}
|
|
241
260
|
export function readPlansDir(projectPath) {
|
|
242
261
|
const plansDir = path.join(projectPath, 'plans');
|
|
243
262
|
const coveredPaths = new Set();
|
|
263
|
+
const planIntegrityWarnings = [];
|
|
244
264
|
if (!fs.existsSync(plansDir))
|
|
245
|
-
return { plans: [], coveredPaths };
|
|
265
|
+
return { plans: [], coveredPaths, planIntegrityWarnings };
|
|
246
266
|
// Build UUID→path map once so the plan walk can resolve testCaseId fallbacks
|
|
247
267
|
// without a separate pass over the tests/ directory later.
|
|
248
268
|
const idMap = buildTestCaseIdMap(projectPath);
|
|
@@ -253,11 +273,17 @@ export function readPlansDir(projectPath) {
|
|
|
253
273
|
if (!entry.isDirectory() || entry.name.startsWith('.') || entry.name === 'node_modules')
|
|
254
274
|
continue;
|
|
255
275
|
const planPath = path.join(plansDir, entry.name);
|
|
256
|
-
|
|
276
|
+
const planHasPlanItem = fs.existsSync(path.join(planPath, '.planitem'));
|
|
277
|
+
if (!planHasPlanItem) {
|
|
278
|
+
planIntegrityWarnings.push(`plans/${entry.name}/ is missing a .planitem file — this plan will not be recognised by the Provar runner.`);
|
|
279
|
+
}
|
|
280
|
+
plans.push(readPlanDirectory(planPath, entry.name, projectPath, planHasPlanItem ? coveredPaths : undefined, planHasPlanItem ? idMap : undefined, planIntegrityWarnings));
|
|
257
281
|
}
|
|
258
282
|
}
|
|
259
|
-
catch {
|
|
260
|
-
|
|
283
|
+
catch {
|
|
284
|
+
/* skip */
|
|
285
|
+
}
|
|
286
|
+
return { plans, coveredPaths, planIntegrityWarnings };
|
|
261
287
|
}
|
|
262
288
|
/**
|
|
263
289
|
* Builds a map of testcase UUID (registryId / id / guid) → project-relative path.
|
|
@@ -284,15 +310,20 @@ function buildTestCaseIdMap(projectPath) {
|
|
|
284
310
|
const rel = path.relative(projectPath, fullPath).replace(/\\/g, '/');
|
|
285
311
|
for (const attr of ['registryId', 'id', 'guid']) {
|
|
286
312
|
const m = content.match(new RegExp(`${attr}=["']([^"']+)["']`));
|
|
287
|
-
|
|
313
|
+
// Skip id="1" — new generator emits this literal and it is not UUID-unique
|
|
314
|
+
if (m?.[1] && m[1] !== '1' && !idMap.has(m[1]))
|
|
288
315
|
idMap.set(m[1], rel);
|
|
289
316
|
}
|
|
290
317
|
}
|
|
291
|
-
catch {
|
|
318
|
+
catch {
|
|
319
|
+
/* skip */
|
|
320
|
+
}
|
|
292
321
|
}
|
|
293
322
|
}
|
|
294
323
|
}
|
|
295
|
-
catch {
|
|
324
|
+
catch {
|
|
325
|
+
/* skip */
|
|
326
|
+
}
|
|
296
327
|
}
|
|
297
328
|
walk(testsDir);
|
|
298
329
|
return idMap;
|
|
@@ -320,7 +351,9 @@ export function collectAllTestCaseNames(projectPath) {
|
|
|
320
351
|
names.push(path.basename(entry.name, '.testcase'));
|
|
321
352
|
}
|
|
322
353
|
}
|
|
323
|
-
catch {
|
|
354
|
+
catch {
|
|
355
|
+
/* skip */
|
|
356
|
+
}
|
|
324
357
|
}
|
|
325
358
|
walk(testsDir);
|
|
326
359
|
return names;
|
|
@@ -360,11 +393,15 @@ export function collectCoveredPathsFromDisk(projectPath) {
|
|
|
360
393
|
covered.add(resolvedPath);
|
|
361
394
|
}
|
|
362
395
|
}
|
|
363
|
-
catch {
|
|
396
|
+
catch {
|
|
397
|
+
/* skip */
|
|
398
|
+
}
|
|
364
399
|
}
|
|
365
400
|
}
|
|
366
401
|
}
|
|
367
|
-
catch {
|
|
402
|
+
catch {
|
|
403
|
+
/* skip */
|
|
404
|
+
}
|
|
368
405
|
}
|
|
369
406
|
walk(plansDir);
|
|
370
407
|
return covered;
|
|
@@ -390,7 +427,9 @@ export function findUncoveredTestCases(projectPath, coveredPaths) {
|
|
|
390
427
|
}
|
|
391
428
|
}
|
|
392
429
|
}
|
|
393
|
-
catch {
|
|
430
|
+
catch {
|
|
431
|
+
/* skip */
|
|
432
|
+
}
|
|
394
433
|
}
|
|
395
434
|
walk(testsDir);
|
|
396
435
|
return uncovered.sort();
|
|
@@ -426,7 +465,7 @@ function tcIssuesToQhViolations(tc) {
|
|
|
426
465
|
appliesTo: issue.applies_to,
|
|
427
466
|
});
|
|
428
467
|
}
|
|
429
|
-
for (const bp of
|
|
468
|
+
for (const bp of tc.best_practices_violations ?? []) {
|
|
430
469
|
violations.push({
|
|
431
470
|
number: num++,
|
|
432
471
|
ruleId: bp.rule_id,
|
|
@@ -530,7 +569,13 @@ export function buildQhReport(result, projectName) {
|
|
|
530
569
|
return {
|
|
531
570
|
reportInfo: {
|
|
532
571
|
name: `VR-LOCAL-${now.toISOString().replace(/[:.]/g, '-').slice(0, 19)}`,
|
|
533
|
-
generatedAt: now.toLocaleDateString('en-US', {
|
|
572
|
+
generatedAt: now.toLocaleDateString('en-US', {
|
|
573
|
+
year: 'numeric',
|
|
574
|
+
month: 'short',
|
|
575
|
+
day: 'numeric',
|
|
576
|
+
hour: '2-digit',
|
|
577
|
+
minute: '2-digit',
|
|
578
|
+
}),
|
|
534
579
|
exportedAt: now.toISOString(),
|
|
535
580
|
source: 'provar-mcp-local',
|
|
536
581
|
},
|
|
@@ -551,9 +596,7 @@ export function buildQhReport(result, projectName) {
|
|
|
551
596
|
};
|
|
552
597
|
}
|
|
553
598
|
export function saveResults(projectPath, resultsDir, report, projectName) {
|
|
554
|
-
const targetDir = resultsDir
|
|
555
|
-
? path.resolve(resultsDir)
|
|
556
|
-
: path.join(projectPath, 'provardx', 'validation');
|
|
599
|
+
const targetDir = resultsDir ? path.resolve(resultsDir) : path.join(projectPath, 'provardx', 'validation');
|
|
557
600
|
fs.mkdirSync(targetDir, { recursive: true });
|
|
558
601
|
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
|
|
559
602
|
const safeName = projectName.replace(/[^a-zA-Z0-9_-]/g, '-').toLowerCase();
|
|
@@ -582,7 +625,9 @@ export function validateProjectFromPath(options) {
|
|
|
582
625
|
}
|
|
583
626
|
const { root: projectRoot, candidates } = resolveProjectRoot(resolved);
|
|
584
627
|
if (candidates.length > 1) {
|
|
585
|
-
throw new ProjectValidationError('AMBIGUOUS_PROJECT', `Multiple Provar projects found under "${resolved}". Specify the exact project directory: ${candidates
|
|
628
|
+
throw new ProjectValidationError('AMBIGUOUS_PROJECT', `Multiple Provar projects found under "${resolved}". Specify the exact project directory: ${candidates
|
|
629
|
+
.map((c) => path.basename(c))
|
|
630
|
+
.join(', ')}`);
|
|
586
631
|
}
|
|
587
632
|
if (!fs.existsSync(path.join(projectRoot, '.testproject'))) {
|
|
588
633
|
throw new ProjectValidationError('NOT_A_PROJECT', `No Provar project found at "${projectRoot}". Ensure the path points to a directory containing a .testproject file.`);
|
|
@@ -592,7 +637,7 @@ export function validateProjectFromPath(options) {
|
|
|
592
637
|
const { projectName, context } = readProjectContext(projectRoot);
|
|
593
638
|
// 2. Read plan hierarchy from plans/ directory; covered paths are computed
|
|
594
639
|
// as a byproduct of the walk — no second traversal needed.
|
|
595
|
-
const { plans: testPlans, coveredPaths } = readPlansDir(projectRoot);
|
|
640
|
+
const { plans: testPlans, coveredPaths, planIntegrityWarnings } = readPlansDir(projectRoot);
|
|
596
641
|
// 3. Validate
|
|
597
642
|
const input = {
|
|
598
643
|
name: projectName,
|
|
@@ -672,6 +717,7 @@ export function validateProjectFromPath(options) {
|
|
|
672
717
|
uncovered_test_cases: uncoveredTestCases,
|
|
673
718
|
},
|
|
674
719
|
saved_to: savedTo,
|
|
720
|
+
...(planIntegrityWarnings.length > 0 ? { plan_integrity_warnings: planIntegrityWarnings } : {}),
|
|
675
721
|
save_error: saveError,
|
|
676
722
|
};
|
|
677
723
|
}
|