@encore-os/eos-spec 0.3.1 → 0.4.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/dist/commands/complete.js +3 -1
- package/dist/commands/complete.js.map +1 -1
- package/dist/commands/gen-tests.js +5 -2
- package/dist/commands/gen-tests.js.map +1 -1
- package/dist/commands/init.js +96 -22
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/next.js +6 -3
- package/dist/commands/next.js.map +1 -1
- package/dist/commands/precedent.d.ts +2 -0
- package/dist/commands/precedent.js +12 -3
- package/dist/commands/precedent.js.map +1 -1
- package/dist/commands/verify-acs.js +7 -4
- package/dist/commands/verify-acs.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/code-evidence.js +2 -1
- package/dist/lib/code-evidence.js.map +1 -1
- package/dist/lib/coherence.d.ts +2 -2
- package/dist/lib/coherence.js +7 -6
- package/dist/lib/coherence.js.map +1 -1
- package/dist/lib/config.d.ts +34 -0
- package/dist/lib/config.js +46 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/discovery-defaults.d.ts +20 -0
- package/dist/lib/discovery-defaults.js +21 -0
- package/dist/lib/discovery-defaults.js.map +1 -0
- package/dist/lib/migration-collision.d.ts +5 -4
- package/dist/lib/migration-collision.js +8 -6
- package/dist/lib/migration-collision.js.map +1 -1
- package/dist/lib/scaffold-templates.d.ts +30 -0
- package/dist/lib/scaffold-templates.js +203 -0
- package/dist/lib/scaffold-templates.js.map +1 -0
- package/dist/lib/test-generator.d.ts +1 -1
- package/dist/lib/test-generator.js +3 -2
- package/dist/lib/test-generator.js.map +1 -1
- package/dist/lib/verifies-scan.d.ts +5 -1
- package/dist/lib/verifies-scan.js +9 -3
- package/dist/lib/verifies-scan.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DEFAULT_GENERATED_TESTS_DIR } from './discovery-defaults.js';
|
|
1
2
|
const UI_KEYWORDS = [
|
|
2
3
|
'page',
|
|
3
4
|
'click',
|
|
@@ -22,9 +23,9 @@ export function classifyLane(acs) {
|
|
|
22
23
|
.toLowerCase();
|
|
23
24
|
return UI_KEYWORDS.some((k) => new RegExp(`\\b${k}\\b`).test(hay)) ? 'ui' : 'integration';
|
|
24
25
|
}
|
|
25
|
-
export function generatedRelPath(specId, lane) {
|
|
26
|
+
export function generatedRelPath(specId, lane, generatedDir = DEFAULT_GENERATED_TESTS_DIR) {
|
|
26
27
|
const slug = specId.toLowerCase();
|
|
27
|
-
return lane === 'ui' ?
|
|
28
|
+
return lane === 'ui' ? `${generatedDir}/${slug}.generated.spec.ts` : `${generatedDir}/${slug}.generated.int.test.ts`;
|
|
28
29
|
}
|
|
29
30
|
function steps(ac) {
|
|
30
31
|
const lines = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-generator.js","sourceRoot":"","sources":["../../src/lib/test-generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-generator.js","sourceRoot":"","sources":["../../src/lib/test-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,5 +5,9 @@
|
|
|
5
5
|
* while the trailing AC/US run is still attributed correctly.
|
|
6
6
|
*/
|
|
7
7
|
export declare function parseVerifies(fileText: string): Map<string, Set<string>>;
|
|
8
|
-
/** Walk the repo's test trees and build specId → Set(verified AC/US ids).
|
|
8
|
+
/** Walk the repo's test trees and build specId → Set(verified AC/US ids).
|
|
9
|
+
* `roots` is config-resolvable (TOOL-03): when omitted it reads
|
|
10
|
+
* `paths.verifies_scan_roots` from `specs/config.yaml`, falling back to the
|
|
11
|
+
* fork-layout default when the config or key is absent. Callers that pass `roots`
|
|
12
|
+
* explicitly (e.g. an isolated unit test) bypass the config read. */
|
|
9
13
|
export declare function scanVerifies(repoRoot: string, roots?: string[]): Map<string, Set<string>>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { readdirSync, readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
+
import { resolveDiscoveryPaths } from './config.js';
|
|
3
4
|
const TEST_FILE = /\.(test|spec)\.tsx?$/;
|
|
4
5
|
const SKIP_DIRS = new Set(['node_modules', '.git', 'dist', 'build', 'coverage']);
|
|
5
6
|
/**
|
|
@@ -35,8 +36,13 @@ export function parseVerifies(fileText) {
|
|
|
35
36
|
}
|
|
36
37
|
return out;
|
|
37
38
|
}
|
|
38
|
-
/** Walk the repo's test trees and build specId → Set(verified AC/US ids).
|
|
39
|
-
|
|
39
|
+
/** Walk the repo's test trees and build specId → Set(verified AC/US ids).
|
|
40
|
+
* `roots` is config-resolvable (TOOL-03): when omitted it reads
|
|
41
|
+
* `paths.verifies_scan_roots` from `specs/config.yaml`, falling back to the
|
|
42
|
+
* fork-layout default when the config or key is absent. Callers that pass `roots`
|
|
43
|
+
* explicitly (e.g. an isolated unit test) bypass the config read. */
|
|
44
|
+
export function scanVerifies(repoRoot, roots) {
|
|
45
|
+
const effectiveRoots = roots ?? resolveDiscoveryPaths(repoRoot).verifiesScanRoots;
|
|
40
46
|
const merged = new Map();
|
|
41
47
|
const excludedDirs = new Set(TOOLING_TEST_DIRS.map((d) => join(repoRoot, d)));
|
|
42
48
|
const visit = (dir) => {
|
|
@@ -66,7 +72,7 @@ export function scanVerifies(repoRoot, roots = ['tests', 'src']) {
|
|
|
66
72
|
}
|
|
67
73
|
}
|
|
68
74
|
};
|
|
69
|
-
for (const root of
|
|
75
|
+
for (const root of effectiveRoots)
|
|
70
76
|
visit(join(repoRoot, root));
|
|
71
77
|
return merged;
|
|
72
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifies-scan.js","sourceRoot":"","sources":["../../src/lib/verifies-scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"verifies-scan.js","sourceRoot":"","sources":["../../src/lib/verifies-scan.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@encore-os/eos-spec",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Portable, config-driven spec-pipeline engine + quality harness. One canonical engine consumed as a library (with a client-safe /pure subpath) by every Encore-OS repo.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|