@vibe-validate/extractors 0.15.0-rc.4 → 0.15.0-rc.6
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/dist/jasmine-extractor.d.ts.map +1 -1
- package/dist/jasmine-extractor.js +6 -52
- package/dist/jasmine-extractor.js.map +1 -1
- package/dist/mocha-extractor.d.ts.map +1 -1
- package/dist/mocha-extractor.js +6 -52
- package/dist/mocha-extractor.js.map +1 -1
- package/dist/utils/test-framework-utils.d.ts +39 -0
- package/dist/utils/test-framework-utils.d.ts.map +1 -0
- package/dist/utils/test-framework-utils.js +84 -0
- package/dist/utils/test-framework-utils.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jasmine-extractor.d.ts","sourceRoot":"","sources":["../src/jasmine-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"jasmine-extractor.d.ts","sourceRoot":"","sources":["../src/jasmine-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGvD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAkCzE"}
|
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @package @vibe-validate/extractors
|
|
7
7
|
*/
|
|
8
|
-
import {
|
|
9
|
-
import { generateGuidanceFromPatterns } from './utils/guidance-generator.js';
|
|
8
|
+
import { processTestFailures } from './utils/test-framework-utils.js';
|
|
10
9
|
/**
|
|
11
10
|
* Extract errors from Jasmine test output
|
|
12
11
|
*
|
|
@@ -41,59 +40,14 @@ export function extractJasmineErrors(output) {
|
|
|
41
40
|
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses Jasmine test framework summary (controlled output), not user input
|
|
42
41
|
const failureMatch = /(\d+) spec(?:s)?, (\d+) failure(?:s)?/.exec(output);
|
|
43
42
|
const failureCount = failureMatch ? Number.parseInt(failureMatch[2], 10) : 0;
|
|
44
|
-
if (failureCount === 0) {
|
|
45
|
-
return {
|
|
46
|
-
summary: '0 test(s) failed',
|
|
47
|
-
errors: [],
|
|
48
|
-
totalErrors: 0,
|
|
49
|
-
errorSummary: '',
|
|
50
|
-
guidance: '',
|
|
51
|
-
metadata: {
|
|
52
|
-
confidence: 100,
|
|
53
|
-
completeness: 100,
|
|
54
|
-
issues: []
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
43
|
// Extract all failures
|
|
59
44
|
const failures = extractFailures(output);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const file = failure.file ?? 'unknown';
|
|
64
|
-
const message = failure.message ?? 'Test failed';
|
|
65
|
-
const context = failure.testName ?? '';
|
|
66
|
-
const isComplete = file !== 'unknown' && failure.line && message;
|
|
67
|
-
if (isComplete) {
|
|
68
|
-
completeCount++;
|
|
69
|
-
}
|
|
70
|
-
errors.push({
|
|
71
|
-
file,
|
|
72
|
-
line: failure.line,
|
|
73
|
-
message,
|
|
74
|
-
context
|
|
75
|
-
});
|
|
45
|
+
// Early return if no failures detected (but failure count suggested there should be)
|
|
46
|
+
if (failureCount === 0 && failures.length === 0) {
|
|
47
|
+
return processTestFailures([], 95);
|
|
76
48
|
}
|
|
77
|
-
//
|
|
78
|
-
|
|
79
|
-
// Generate guidance
|
|
80
|
-
const guidance = generateGuidanceFromPatterns(failures);
|
|
81
|
-
// Calculate quality metadata
|
|
82
|
-
const completeness = failures.length > 0 ? (completeCount / failures.length) * 100 : 100;
|
|
83
|
-
const confidence = failures.length > 0 ? 95 : 100; // High confidence for Jasmine
|
|
84
|
-
const metadata = {
|
|
85
|
-
confidence,
|
|
86
|
-
completeness,
|
|
87
|
-
issues: []
|
|
88
|
-
};
|
|
89
|
-
return {
|
|
90
|
-
summary,
|
|
91
|
-
errors,
|
|
92
|
-
totalErrors: failures.length,
|
|
93
|
-
errorSummary: formatCleanOutput(errors),
|
|
94
|
-
guidance,
|
|
95
|
-
metadata
|
|
96
|
-
};
|
|
49
|
+
// Process failures using shared utility
|
|
50
|
+
return processTestFailures(failures, 95);
|
|
97
51
|
}
|
|
98
52
|
/**
|
|
99
53
|
* Extract failure information from Jasmine output
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jasmine-extractor.js","sourceRoot":"","sources":["../src/jasmine-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"jasmine-extractor.js","sourceRoot":"","sources":["../src/jasmine-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mocha-extractor.d.ts","sourceRoot":"","sources":["../src/mocha-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"mocha-extractor.d.ts","sourceRoot":"","sources":["../src/mocha-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGvD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAkCvE"}
|
package/dist/mocha-extractor.js
CHANGED
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @package @vibe-validate/extractors
|
|
7
7
|
*/
|
|
8
|
-
import {
|
|
9
|
-
import { generateGuidanceFromPatterns } from './utils/guidance-generator.js';
|
|
8
|
+
import { processTestFailures } from './utils/test-framework-utils.js';
|
|
10
9
|
/**
|
|
11
10
|
* Extract errors from Mocha test output
|
|
12
11
|
*
|
|
@@ -41,59 +40,14 @@ export function extractMochaErrors(output) {
|
|
|
41
40
|
// eslint-disable-next-line sonarjs/slow-regex -- Safe: only parses Mocha test framework summary (controlled output), not user input
|
|
42
41
|
const failingMatch = /(\d+) failing/.exec(output);
|
|
43
42
|
const failureCount = failingMatch ? Number.parseInt(failingMatch[1], 10) : 0;
|
|
44
|
-
if (failureCount === 0) {
|
|
45
|
-
return {
|
|
46
|
-
summary: '0 test(s) failed',
|
|
47
|
-
errors: [],
|
|
48
|
-
totalErrors: 0,
|
|
49
|
-
errorSummary: '',
|
|
50
|
-
guidance: '',
|
|
51
|
-
metadata: {
|
|
52
|
-
confidence: 100,
|
|
53
|
-
completeness: 100,
|
|
54
|
-
issues: []
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
43
|
// Extract all failures
|
|
59
44
|
const failures = extractFailures(output);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const file = failure.file ?? 'unknown';
|
|
64
|
-
const message = failure.message ?? 'Test failed';
|
|
65
|
-
const context = failure.testName ?? '';
|
|
66
|
-
const isComplete = file !== 'unknown' && failure.line && message;
|
|
67
|
-
if (isComplete) {
|
|
68
|
-
completeCount++;
|
|
69
|
-
}
|
|
70
|
-
errors.push({
|
|
71
|
-
file,
|
|
72
|
-
line: failure.line,
|
|
73
|
-
message,
|
|
74
|
-
context
|
|
75
|
-
});
|
|
45
|
+
// Early return if no failures detected (but failure count suggested there should be)
|
|
46
|
+
if (failureCount === 0 && failures.length === 0) {
|
|
47
|
+
return processTestFailures([], 95);
|
|
76
48
|
}
|
|
77
|
-
//
|
|
78
|
-
|
|
79
|
-
// Generate guidance
|
|
80
|
-
const guidance = generateGuidanceFromPatterns(failures);
|
|
81
|
-
// Calculate quality metadata
|
|
82
|
-
const completeness = failures.length > 0 ? (completeCount / failures.length) * 100 : 100;
|
|
83
|
-
const confidence = failures.length > 0 ? 95 : 100; // High confidence for Mocha
|
|
84
|
-
const metadata = {
|
|
85
|
-
confidence,
|
|
86
|
-
completeness,
|
|
87
|
-
issues: []
|
|
88
|
-
};
|
|
89
|
-
return {
|
|
90
|
-
summary,
|
|
91
|
-
errors,
|
|
92
|
-
totalErrors: failures.length,
|
|
93
|
-
errorSummary: formatCleanOutput(errors),
|
|
94
|
-
guidance,
|
|
95
|
-
metadata
|
|
96
|
-
};
|
|
49
|
+
// Process failures using shared utility
|
|
50
|
+
return processTestFailures(failures, 95);
|
|
97
51
|
}
|
|
98
52
|
/**
|
|
99
53
|
* Extract failure information from Mocha output
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mocha-extractor.js","sourceRoot":"","sources":["../src/mocha-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mocha-extractor.js","sourceRoot":"","sources":["../src/mocha-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for test framework extractors
|
|
3
|
+
*
|
|
4
|
+
* Common logic for processing test failures across different frameworks
|
|
5
|
+
* (Jasmine, Mocha, AVA, TAP, etc.)
|
|
6
|
+
*
|
|
7
|
+
* @package @vibe-validate/extractors
|
|
8
|
+
*/
|
|
9
|
+
import type { ErrorExtractorResult } from '../types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Common failure information structure across test frameworks
|
|
12
|
+
*/
|
|
13
|
+
export interface TestFailureInfo {
|
|
14
|
+
file?: string;
|
|
15
|
+
line?: number;
|
|
16
|
+
message?: string;
|
|
17
|
+
testName?: string;
|
|
18
|
+
errorType?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Process test failures into structured error results
|
|
22
|
+
*
|
|
23
|
+
* This function encapsulates the common logic shared across test framework extractors:
|
|
24
|
+
* - Converts parsed failures to FormattedError objects
|
|
25
|
+
* - Generates summaries and guidance
|
|
26
|
+
* - Calculates quality metadata (completeness, confidence)
|
|
27
|
+
*
|
|
28
|
+
* @param failures - Array of parsed failure information
|
|
29
|
+
* @param frameworkConfidence - Framework-specific confidence score (0-100)
|
|
30
|
+
* @returns Structured error extraction result
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const failures = extractMochaFailures(output);
|
|
35
|
+
* return processTestFailures(failures, 95); // 95% confidence for Mocha
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function processTestFailures(failures: TestFailureInfo[], frameworkConfidence?: number): ErrorExtractorResult;
|
|
39
|
+
//# sourceMappingURL=test-framework-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-framework-utils.d.ts","sourceRoot":"","sources":["../../src/utils/test-framework-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAsC,MAAM,aAAa,CAAC;AAI5F;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EAAE,EAC3B,mBAAmB,GAAE,MAAW,GAC/B,oBAAoB,CA+DtB"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for test framework extractors
|
|
3
|
+
*
|
|
4
|
+
* Common logic for processing test failures across different frameworks
|
|
5
|
+
* (Jasmine, Mocha, AVA, TAP, etc.)
|
|
6
|
+
*
|
|
7
|
+
* @package @vibe-validate/extractors
|
|
8
|
+
*/
|
|
9
|
+
import { formatCleanOutput } from './formatter-utils.js';
|
|
10
|
+
import { generateGuidanceFromPatterns } from './guidance-generator.js';
|
|
11
|
+
/**
|
|
12
|
+
* Process test failures into structured error results
|
|
13
|
+
*
|
|
14
|
+
* This function encapsulates the common logic shared across test framework extractors:
|
|
15
|
+
* - Converts parsed failures to FormattedError objects
|
|
16
|
+
* - Generates summaries and guidance
|
|
17
|
+
* - Calculates quality metadata (completeness, confidence)
|
|
18
|
+
*
|
|
19
|
+
* @param failures - Array of parsed failure information
|
|
20
|
+
* @param frameworkConfidence - Framework-specific confidence score (0-100)
|
|
21
|
+
* @returns Structured error extraction result
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const failures = extractMochaFailures(output);
|
|
26
|
+
* return processTestFailures(failures, 95); // 95% confidence for Mocha
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export function processTestFailures(failures, frameworkConfidence = 95) {
|
|
30
|
+
// Handle no failures case
|
|
31
|
+
if (failures.length === 0) {
|
|
32
|
+
return {
|
|
33
|
+
summary: '0 test(s) failed',
|
|
34
|
+
errors: [],
|
|
35
|
+
totalErrors: 0,
|
|
36
|
+
errorSummary: '',
|
|
37
|
+
guidance: '',
|
|
38
|
+
metadata: {
|
|
39
|
+
confidence: 100,
|
|
40
|
+
completeness: 100,
|
|
41
|
+
issues: []
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// Convert failures to formatted errors
|
|
46
|
+
const errors = [];
|
|
47
|
+
let completeCount = 0;
|
|
48
|
+
for (const failure of failures) {
|
|
49
|
+
const file = failure.file ?? 'unknown';
|
|
50
|
+
const message = failure.message ?? 'Test failed';
|
|
51
|
+
const context = failure.testName ?? '';
|
|
52
|
+
const isComplete = file !== 'unknown' && failure.line && message;
|
|
53
|
+
if (isComplete) {
|
|
54
|
+
completeCount++;
|
|
55
|
+
}
|
|
56
|
+
errors.push({
|
|
57
|
+
file,
|
|
58
|
+
line: failure.line,
|
|
59
|
+
message,
|
|
60
|
+
context
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
// Generate summary
|
|
64
|
+
const summary = `${failures.length} test(s) failed`;
|
|
65
|
+
// Generate guidance
|
|
66
|
+
const guidance = generateGuidanceFromPatterns(failures);
|
|
67
|
+
// Calculate quality metadata
|
|
68
|
+
const completeness = (completeCount / failures.length) * 100;
|
|
69
|
+
const confidence = frameworkConfidence;
|
|
70
|
+
const metadata = {
|
|
71
|
+
confidence,
|
|
72
|
+
completeness,
|
|
73
|
+
issues: []
|
|
74
|
+
};
|
|
75
|
+
return {
|
|
76
|
+
summary,
|
|
77
|
+
errors,
|
|
78
|
+
totalErrors: failures.length,
|
|
79
|
+
errorSummary: formatCleanOutput(errors),
|
|
80
|
+
guidance,
|
|
81
|
+
metadata
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=test-framework-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-framework-utils.js","sourceRoot":"","sources":["../../src/utils/test-framework-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAavE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAA2B,EAC3B,sBAA8B,EAAE;IAEhC,0BAA0B;IAC1B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,kBAAkB;YAC3B,MAAM,EAAE,EAAE;YACV,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE;gBACR,UAAU,EAAE,GAAG;gBACf,YAAY,EAAE,GAAG;gBACjB,MAAM,EAAE,EAAE;aACX;SACF,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,aAAa,CAAC;QACjD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QAEvC,MAAM,UAAU,GAAG,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC;QACjE,IAAI,UAAU,EAAE,CAAC;YACf,aAAa,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;YACV,IAAI;YACJ,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO;YACP,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB;IACnB,MAAM,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,iBAAiB,CAAC;IAEpD,oBAAoB;IACpB,MAAM,QAAQ,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IAExD,6BAA6B;IAC7B,MAAM,YAAY,GAAG,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;IAC7D,MAAM,UAAU,GAAG,mBAAmB,CAAC;IAEvC,MAAM,QAAQ,GAAuB;QACnC,UAAU;QACV,YAAY;QACZ,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,OAAO;QACL,OAAO;QACP,MAAM;QACN,WAAW,EAAE,QAAQ,CAAC,MAAM;QAC5B,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC;QACvC,QAAQ;QACR,QAAQ;KACT,CAAC;AACJ,CAAC"}
|