spec-controller 0.1.0-alpha.25 → 0.1.0-alpha.26

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,14 @@
1
1
  /**
2
2
  * Ingest the target's feature files — the IMPURE reader that walks features/ on disk
3
- * and parses each file's feature code + scenario codes into DiscoveredFeature
4
- * records (split out of the old spec/featureCodes.ts). The pure per-source
5
- * parsers (extractFeatureCode / parseScenarioCodes) live here with their sole consumer;
6
- * the `scnId → feature-code` grammar helper is engine-side (packages/core/src/lib/
3
+ * and reads each file's header code into DiscoveredFeature records (split out of the old
4
+ * spec/featureCodes.ts). The pure header parser (extractFeatureCode) lives here with its sole
5
+ * consumer; the `scnId → feature-code` grammar helper is engine-side (packages/core/src/lib/
7
6
  * featureCode.ts); the duplicate-code lint is engine-side too since 3F-3313, as @SCN-STG-010 in
8
- * parse/corpusFaults.ts, and no longer a private check under tests/checks/.
7
+ * parse/scenarioCodeErrors.ts, and no longer a private check under tests/checks/.
8
+ *
9
+ * NO PER-FILE LIST OF SCENARIO CODES (3F-3636). One used to ride here, read by a copy of the
10
+ * @SCN grammar of its own, and nothing but its own test read it; a scenario's code is read by the
11
+ * engine's scenario walk, which is the reading the ledger's accounts are minted from.
9
12
  *
10
13
  * The foundation, folded into the @LDG runtime spine.
11
14
  */
@@ -16,8 +19,6 @@ export interface DiscoveredFeature {
16
19
  /** Absolute path to the feature file. */
17
20
  path: string;
18
21
  featureCode: string | null;
19
- /** Every @SCN-<FFF>-<NNN> scenario code in the file, in order, duplicates kept. */
20
- scenarioCodes: string[];
21
22
  }
22
23
  /**
23
24
  * Read the Feature-level @<FFF> header tag from a feature file's source — the
@@ -25,13 +26,6 @@ export interface DiscoveredFeature {
25
26
  * or a recognised evidence/routing tag. Returns null if absent.
26
27
  */
27
28
  export declare function extractFeatureCode(source: string): string | null;
28
- /**
29
- * Parse every @SCN-<FFF>-<NNN> scenario code in a feature file's source, in
30
- * document order, duplicates preserved. Only genuine TAG LINES are scanned (a
31
- * line whose first non-blank character is `@` and whose every whitespace-
32
- * separated token is a tag) — prose that merely mentions a code is skipped.
33
- */
34
- export declare function parseScenarioCodes(source: string): string[];
35
29
  /**
36
30
  * Discover every feature file on disk and its header code — REFUSING a corpus the Gherkin
37
31
  * parser rejects (@SCN-GPG-001, 3F-2817).
@@ -1 +1 @@
1
- {"version":3,"file":"ingestScenarios.d.ts","sourceRoot":"","sources":["../../src/ingest/ingestScenarios.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAeH,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,mFAAmF;IACnF,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsBhE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAc3D;AAwCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,iBAAiB,EAAE,CAkBjF"}
1
+ {"version":3,"file":"ingestScenarios.d.ts","sourceRoot":"","sources":["../../src/ingest/ingestScenarios.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAeH,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKhE;AA8DD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,iBAAiB,EAAE,CAiBjF"}
@@ -1,11 +1,14 @@
1
1
  /**
2
2
  * Ingest the target's feature files — the IMPURE reader that walks features/ on disk
3
- * and parses each file's feature code + scenario codes into DiscoveredFeature
4
- * records (split out of the old spec/featureCodes.ts). The pure per-source
5
- * parsers (extractFeatureCode / parseScenarioCodes) live here with their sole consumer;
6
- * the `scnId → feature-code` grammar helper is engine-side (packages/core/src/lib/
3
+ * and reads each file's header code into DiscoveredFeature records (split out of the old
4
+ * spec/featureCodes.ts). The pure header parser (extractFeatureCode) lives here with its sole
5
+ * consumer; the `scnId → feature-code` grammar helper is engine-side (packages/core/src/lib/
7
6
  * featureCode.ts); the duplicate-code lint is engine-side too since 3F-3313, as @SCN-STG-010 in
8
- * parse/corpusFaults.ts, and no longer a private check under tests/checks/.
7
+ * parse/scenarioCodeErrors.ts, and no longer a private check under tests/checks/.
8
+ *
9
+ * NO PER-FILE LIST OF SCENARIO CODES (3F-3636). One used to ride here, read by a copy of the
10
+ * @SCN grammar of its own, and nothing but its own test read it; a scenario's code is read by the
11
+ * engine's scenario walk, which is the reading the ledger's accounts are minted from.
9
12
  *
10
13
  * The foundation, folded into the @LDG runtime spine.
11
14
  */
@@ -21,56 +24,32 @@ const CODE_PATTERN = /^[A-Z0-9]{2,5}$/;
21
24
  */
22
25
  export function extractFeatureCode(source) {
23
26
  const lines = source.split(/\r?\n/);
24
- for (let i = 0; i < lines.length; i++) {
25
- const line = lines[i].trim();
26
- if (line === "" || line.startsWith("#"))
27
- continue;
28
- if (line.startsWith("Feature:")) {
29
- for (let j = i - 1; j >= 0; j--) {
30
- const prev = lines[j].trim();
31
- if (prev === "")
32
- continue;
33
- if (!prev.startsWith("@"))
34
- break;
35
- const tags = prev.split(/\s+/).filter((t) => t.startsWith("@"));
36
- for (const tag of tags) {
37
- const bare = tag.slice(1);
38
- if (bare.startsWith("SCN-"))
39
- continue;
40
- if (["unit", "integration", "e2e", "performance", "smoke"].includes(bare))
41
- continue;
42
- if (CODE_PATTERN.test(bare))
43
- return bare;
44
- }
45
- }
46
- return null;
47
- }
48
- }
49
- return null;
27
+ const featureLine = lines.findIndex((line) => line.trim().startsWith("Feature:"));
28
+ if (featureLine < 0)
29
+ return null;
30
+ return headerTagsAbove(lines, featureLine).find(isHeaderCode) ?? null;
31
+ }
32
+ /** The tags a tier or routing concern owns, which are never a file's header code. */
33
+ const NON_CODE_TAGS = ["unit", "integration", "e2e", "performance", "smoke"];
34
+ /** Is this bare tag the file's header code — not an @SCN id, not a tier tag, and code-shaped? */
35
+ function isHeaderCode(bare) {
36
+ return !bare.startsWith("SCN-") && !NON_CODE_TAGS.includes(bare) && CODE_PATTERN.test(bare);
50
37
  }
51
38
  /**
52
- * Parse every @SCN-<FFF>-<NNN> scenario code in a feature file's source, in
53
- * document order, duplicates preserved. Only genuine TAG LINES are scanned (a
54
- * line whose first non-blank character is `@` and whose every whitespace-
55
- * separated token is a tag) — prose that merely mentions a code is skipped.
39
+ * The bare tags on the tag lines directly above the `Feature:` line, nearest line first and each
40
+ * line left to right. Blank lines are passed over; the first line that is not a tag line ends it.
56
41
  */
57
- export function parseScenarioCodes(source) {
58
- const codes = [];
59
- const codePattern = /^SCN-[A-Z0-9]+-\d+$/;
60
- for (const rawLine of source.split(/\r?\n/)) {
61
- const line = rawLine.trim();
62
- if (!line.startsWith("@"))
63
- continue;
64
- const tokens = line.split(/\s+/);
65
- if (!tokens.every((t) => t.startsWith("@")))
42
+ function headerTagsAbove(lines, featureLine) {
43
+ const tags = [];
44
+ for (let j = featureLine - 1; j >= 0; j--) {
45
+ const prev = lines[j].trim();
46
+ if (prev === "")
66
47
  continue;
67
- for (const token of tokens) {
68
- const bare = token.slice(1);
69
- if (codePattern.test(bare))
70
- codes.push(bare);
71
- }
48
+ if (!prev.startsWith("@"))
49
+ break;
50
+ tags.push(...prev.split(/\s+/).filter((t) => t.startsWith("@")).map((t) => t.slice(1)));
72
51
  }
73
- return codes;
52
+ return tags;
74
53
  }
75
54
  /**
76
55
  * Locate the default features/ directory — `./features` under the current
@@ -88,10 +67,9 @@ function featuresDir() {
88
67
  *
89
68
  * Absence stays a REFUSAL AT THE READER — what changed is that it is typed, so a caller can decide.
90
69
  * `balance` opts in to reporting on a target that has no corpus (most targets have no `features/`
91
- * at all, and `new-client` is a supported adoption state); `tags` keeps refusing, unedited, because
92
- * a `MissingFeatureCorpusError` is still an `Error` and still lands in its generic catch. Returning
93
- * `[]` here instead would make that decision for both, and measured it turns two named refusals
94
- * into `tags: OK …` at exit 0.
70
+ * at all, and `new-client` is a supported adoption state) by catching `MissingFeatureCorpusError` by
71
+ * name. Returning `[]` here instead would make that decision for every caller, and one that
72
+ * certifies a corpus would certify an absent one as empty.
95
73
  *
96
74
  * ONLY `ENOENT`. A `features` path that exists but is a FILE, or one the process may not read, is
97
75
  * a different fault and is not ours to reinterpret — it rethrows.
@@ -142,7 +120,6 @@ export function discoverFeatures(dir = featuresDir()) {
142
120
  slug: name.replace(/\.feature$/, ""),
143
121
  path,
144
122
  featureCode: extractFeatureCode(source),
145
- scenarioCodes: parseScenarioCodes(source),
146
123
  }));
147
124
  }
148
125
  //# sourceMappingURL=ingestScenarios.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ingestScenarios.js","sourceRoot":"","sources":["../../src/ingest/ingestScenarios.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingestScenarios.js","sourceRoot":"","sources":["../../src/ingest/ingestScenarios.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-controller",
3
- "version": "0.1.0-alpha.25",
3
+ "version": "0.1.0-alpha.26",
4
4
  "description": "Reconcile the behaviour your scenarios name against the evidence that actually ran — the deterministic `balance` CLI.",
5
5
  "keywords": [
6
6
  "reconciliation",
@@ -25,7 +25,7 @@
25
25
  "@cucumber/gherkin": "^41.0.0",
26
26
  "@cucumber/messages": "^34.0.1",
27
27
  "yaml": "^2.9.0",
28
- "@3f-consulting/spec-controller-core": "0.1.0-alpha.25"
28
+ "@3f-consulting/spec-controller-core": "0.1.0-alpha.26"
29
29
  },
30
30
  "publishConfig": {
31
31
  "access": "public"