@rsaglobaltech/specgate 0.9.0 → 0.11.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.
Files changed (75) hide show
  1. package/CHANGELOG.md +162 -0
  2. package/README.md +10 -18
  3. package/bin/specgate.ts +10 -3
  4. package/dist/bin/specgate.js +8 -3
  5. package/dist/bin/specgate.js.map +1 -1
  6. package/dist/packages/core/src/domain/DerivedMatrix.js +348 -0
  7. package/dist/packages/core/src/domain/DerivedMatrix.js.map +1 -0
  8. package/dist/packages/core/src/domain/DoneVerification.js +22 -1
  9. package/dist/packages/core/src/domain/DoneVerification.js.map +1 -1
  10. package/dist/packages/core/src/domain/GherkinQuality.js +19 -3
  11. package/dist/packages/core/src/domain/GherkinQuality.js.map +1 -1
  12. package/dist/packages/core/src/domain/NewRequirement.js +46 -0
  13. package/dist/packages/core/src/domain/NewRequirement.js.map +1 -0
  14. package/dist/packages/core/src/domain/RequirementPlan.js +1 -0
  15. package/dist/packages/core/src/domain/RequirementPlan.js.map +1 -1
  16. package/dist/packages/core/src/domain/RequirementReadiness.js +2 -2
  17. package/dist/packages/core/src/domain/RequirementReadiness.js.map +1 -1
  18. package/dist/packages/core/src/domain/TraceabilityFormat.js +8 -1
  19. package/dist/packages/core/src/domain/TraceabilityFormat.js.map +1 -1
  20. package/dist/packages/core/src/infrastructure/DerivedMatrixSources.js +157 -0
  21. package/dist/packages/core/src/infrastructure/DerivedMatrixSources.js.map +1 -0
  22. package/dist/packages/core/test/unit/derived-matrix.test.js +196 -0
  23. package/dist/packages/core/test/unit/derived-matrix.test.js.map +1 -0
  24. package/dist/packages/core/test/unit/done-verification.test.js +7 -6
  25. package/dist/packages/core/test/unit/done-verification.test.js.map +1 -1
  26. package/dist/packages/core/test/unit/gherkin-quality.test.js +28 -0
  27. package/dist/packages/core/test/unit/gherkin-quality.test.js.map +1 -1
  28. package/dist/packages/core/test/unit/new-requirement.test.js +67 -0
  29. package/dist/packages/core/test/unit/new-requirement.test.js.map +1 -0
  30. package/dist/scripts/agents/init.js +58 -14
  31. package/dist/scripts/agents/init.js.map +1 -1
  32. package/dist/scripts/check.js +10 -0
  33. package/dist/scripts/check.js.map +1 -0
  34. package/dist/scripts/cli/commands/change/ChangeCommand.js +4 -0
  35. package/dist/scripts/cli/commands/change/ChangeCommand.js.map +1 -1
  36. package/dist/scripts/cli/commands/harness/RunCommand.js +17 -5
  37. package/dist/scripts/cli/commands/harness/RunCommand.js.map +1 -1
  38. package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js +9 -0
  39. package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js.map +1 -1
  40. package/dist/scripts/cli/commands/project/AdoptCommand.js +17 -7
  41. package/dist/scripts/cli/commands/project/AdoptCommand.js.map +1 -1
  42. package/dist/scripts/cli/commands/project/InitProjectCommand.js +51 -1
  43. package/dist/scripts/cli/commands/project/InitProjectCommand.js.map +1 -1
  44. package/dist/scripts/cli/commands/project/UpdateCommand.js +118 -8
  45. package/dist/scripts/cli/commands/project/UpdateCommand.js.map +1 -1
  46. package/dist/scripts/cli/commands/quality/CheckCommand.js +192 -0
  47. package/dist/scripts/cli/commands/quality/CheckCommand.js.map +1 -0
  48. package/dist/scripts/cli/commands/quality/FixCommand.js +20 -0
  49. package/dist/scripts/cli/commands/quality/FixCommand.js.map +1 -1
  50. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js +83 -6
  51. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js.map +1 -1
  52. package/dist/scripts/cli/commands/spec/DoneCommand.js +23 -5
  53. package/dist/scripts/cli/commands/spec/DoneCommand.js.map +1 -1
  54. package/dist/scripts/cli/commands/spec/MatrixCommand.js +305 -0
  55. package/dist/scripts/cli/commands/spec/MatrixCommand.js.map +1 -0
  56. package/dist/scripts/cli/commands/spec/NewCommand.js +183 -0
  57. package/dist/scripts/cli/commands/spec/NewCommand.js.map +1 -0
  58. package/dist/scripts/cli/commands/spec/PlanCommand.js +6 -1
  59. package/dist/scripts/cli/commands/spec/PlanCommand.js.map +1 -1
  60. package/dist/scripts/cli/commands/spec/ReqCommand.js +39 -8
  61. package/dist/scripts/cli/commands/spec/ReqCommand.js.map +1 -1
  62. package/dist/scripts/cli/commands/spec/StatusCommand.js +94 -33
  63. package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
  64. package/dist/scripts/lib/derived-writes.js +91 -0
  65. package/dist/scripts/lib/derived-writes.js.map +1 -0
  66. package/dist/scripts/lib/surface.js +67 -37
  67. package/dist/scripts/lib/surface.js.map +1 -1
  68. package/dist/scripts/matrix.js +11 -0
  69. package/dist/scripts/matrix.js.map +1 -0
  70. package/dist/scripts/new.js +10 -0
  71. package/dist/scripts/new.js.map +1 -0
  72. package/dist/scripts/plugin/gate-hook.js +2 -2
  73. package/dist/scripts/plugin/gate-hook.js.map +1 -1
  74. package/package.json +2 -1
  75. package/templates/harness/harness.config.yaml.tpl +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"TraceabilityFormat.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/TraceabilityFormat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TraceabilityFormat.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/TraceabilityFormat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
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
+ exports.isTestFile = isTestFile;
37
+ exports.readDerivationSources = readDerivationSources;
38
+ const fs = __importStar(require("node:fs"));
39
+ const path = __importStar(require("node:path"));
40
+ /**
41
+ * Reading what a derived matrix is computed from: `spec.md`, every
42
+ * `.feature` under `features/`, and the project's test files.
43
+ *
44
+ * Test files are found by convention, not configuration — the conventions of
45
+ * the stacks `adopt` detects. A team whose tests live elsewhere states the
46
+ * link explicitly (`test=` in the requirement's `csda:trace`), which is what
47
+ * the gate already accepts.
48
+ */
49
+ /** Never descended into: dependencies, build output, and the spec tree itself. */
50
+ const SKIP_DIRS = new Set([
51
+ ".git",
52
+ "node_modules",
53
+ "dist",
54
+ "build",
55
+ "target",
56
+ "out",
57
+ "coverage",
58
+ "vendor",
59
+ ".venv",
60
+ "venv",
61
+ "__pycache__",
62
+ ".gradle",
63
+ ".idea",
64
+ ".vscode",
65
+ ".csda",
66
+ ".specgate",
67
+ ".harness",
68
+ "features",
69
+ "docs",
70
+ "changes",
71
+ "bin",
72
+ "obj",
73
+ ]);
74
+ const TEST_DIR = /^(test|tests|__tests__|spec|specs|testing|integration-tests|e2e)$/i;
75
+ const TEST_NAME = /([._-](test|spec|it)\.[a-z0-9]+$)|(^test_.*\.py$)|(_test\.(go|py|rb|exs|rs|cc|cpp)$)|((Test|Tests|IT|Spec)\.(java|kt|kts|scala|groovy|cs|swift)$)/;
76
+ const CODE_EXT = /\.(js|jsx|mjs|cjs|ts|tsx|mts|cts|py|go|rb|java|kt|kts|scala|groovy|cs|fs|swift|rs|php|ex|exs|c|cc|cpp|h|hpp|feature|sh)$/i;
77
+ const MAX_BYTES = 1_000_000;
78
+ const MAX_FILES = 20_000;
79
+ /** Is this a test file by the conventions of the common stacks? */
80
+ function isTestFile(rel) {
81
+ const parts = rel.split("/");
82
+ const name = parts[parts.length - 1];
83
+ if (!CODE_EXT.test(name))
84
+ return false;
85
+ if (TEST_NAME.test(name))
86
+ return true;
87
+ // `src/test/java/...` (Maven/Gradle) and plain `test/` or `tests/` trees.
88
+ return parts.slice(0, -1).some((p) => TEST_DIR.test(p));
89
+ }
90
+ function walk(root, rel, pick, out) {
91
+ if (out.length >= MAX_FILES)
92
+ return;
93
+ let entries;
94
+ try {
95
+ entries = fs.readdirSync(path.join(root, rel), { withFileTypes: true });
96
+ }
97
+ catch {
98
+ return;
99
+ }
100
+ for (const e of entries) {
101
+ const childRel = rel ? `${rel}/${e.name}` : e.name;
102
+ if (e.isDirectory()) {
103
+ if (!SKIP_DIRS.has(e.name) && !e.name.startsWith("."))
104
+ walk(root, childRel, pick, out);
105
+ }
106
+ else if (e.isFile() && pick(childRel)) {
107
+ out.push(childRel);
108
+ }
109
+ }
110
+ }
111
+ function read(root, rel) {
112
+ try {
113
+ const abs = path.join(root, rel);
114
+ if (fs.statSync(abs).size > MAX_BYTES)
115
+ return null;
116
+ return { path: rel, source: fs.readFileSync(abs, "utf8") };
117
+ }
118
+ catch {
119
+ return null;
120
+ }
121
+ }
122
+ function readDerivationSources(projectDir) {
123
+ const spec = fs.existsSync(path.join(projectDir, "spec.md"))
124
+ ? fs.readFileSync(path.join(projectDir, "spec.md"), "utf8")
125
+ : "";
126
+ const featurePaths = [];
127
+ walk(path.join(projectDir, "features"), "", (r) => r.endsWith(".feature"), featurePaths);
128
+ const features = featurePaths
129
+ .map((r) => read(projectDir, `features/${r}`))
130
+ .filter((f) => f !== null);
131
+ // One walk for both: every source file, split by the test convention.
132
+ const sourcePaths = [];
133
+ walk(projectDir, "", (r) => CODE_EXT.test(r) && !r.endsWith(".feature"), sourcePaths);
134
+ const tests = [];
135
+ const code = [];
136
+ for (const rel of sourcePaths) {
137
+ const f = read(projectDir, rel);
138
+ if (f)
139
+ (isTestFile(rel) ? tests : code).push(f);
140
+ }
141
+ const capDir = path.join(projectDir, "docs", "specs", "capabilities");
142
+ const capabilities = [];
143
+ try {
144
+ for (const e of fs.readdirSync(capDir, { withFileTypes: true })) {
145
+ if (!e.isDirectory())
146
+ continue;
147
+ const f = read(projectDir, `docs/specs/capabilities/${e.name}/spec.md`);
148
+ if (f)
149
+ capabilities.push(f);
150
+ }
151
+ }
152
+ catch {
153
+ /* no capability specs: a spec.md-only project */
154
+ }
155
+ return { spec, features, tests, capabilities, code };
156
+ }
157
+ //# sourceMappingURL=DerivedMatrixSources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DerivedMatrixSources.js","sourceRoot":"","sources":["../../../../../packages/core/src/infrastructure/DerivedMatrixSources.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,gCAOC;AA8BD,sDAkCC;AAxHD,4CAA8B;AAC9B,gDAAkC;AAGlC;;;;;;;;GAQG;AAEH,kFAAkF;AAClF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,MAAM;IACN,cAAc;IACd,MAAM;IACN,OAAO;IACP,QAAQ;IACR,KAAK;IACL,UAAU;IACV,QAAQ;IACR,OAAO;IACP,MAAM;IACN,aAAa;IACb,SAAS;IACT,OAAO;IACP,SAAS;IACT,OAAO;IACP,WAAW;IACX,UAAU;IACV,UAAU;IACV,MAAM;IACN,SAAS;IACT,KAAK;IACL,KAAK;CACN,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,oEAAoE,CAAC;AACtF,MAAM,SAAS,GACb,mJAAmJ,CAAC;AACtJ,MAAM,QAAQ,GACZ,2HAA2H,CAAC;AAC9H,MAAM,SAAS,GAAG,SAAS,CAAC;AAC5B,MAAM,SAAS,GAAG,MAAM,CAAC;AAEzB,mEAAmE;AACnE,SAAgB,UAAU,CAAC,GAAW;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,0EAA0E;IAC1E,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,IAAI,CAAC,IAAY,EAAE,GAAW,EAAE,IAA8B,EAAE,GAAa;IACpF,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO;IACpC,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACzF,CAAC;aAAM,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CAAC,IAAY,EAAE,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,SAAS;YAAE,OAAO,IAAI,CAAC;QACnD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,qBAAqB,CAAC,UAAkB;IACtD,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAC3D,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;IACzF,MAAM,QAAQ,GAAG,YAAY;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;SAC7C,MAAM,CAAC,CAAC,CAAC,EAAmB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAE9C,sEAAsE;IACtE,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC;IACtF,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAiB,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC;YAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IACtE,MAAM,YAAY,GAAiB,EAAE,CAAC;IACtC,IAAI,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;gBAAE,SAAS;YAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC;YACxE,IAAI,CAAC;gBAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACvD,CAAC"}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ /**
3
+ * The matrix as a projection of spec.md, feature tags and tests (phase 3).
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const node_test_1 = require("node:test");
40
+ const assert = __importStar(require("node:assert/strict"));
41
+ const DerivedMatrix_1 = require("../../src/domain/DerivedMatrix");
42
+ const SPEC = [
43
+ "# Shop — Specification",
44
+ "",
45
+ "## REQ-002 — Totals are rounded half-up",
46
+ "",
47
+ "The system MUST round totals half-up.",
48
+ "",
49
+ "## REQ-003 — Orders can be cancelled",
50
+ "",
51
+ "<!-- csda:trace status=Implemented artifact=lib/orders.js -->",
52
+ "",
53
+ "The system MUST let a customer cancel an unshipped order.",
54
+ "",
55
+ ].join("\n");
56
+ const FEATURE = {
57
+ path: "features/totals.feature",
58
+ source: [
59
+ "Feature: Totals",
60
+ "",
61
+ " @REQ-002 @SCN-002",
62
+ " Scenario: Half a cent rounds up",
63
+ " Given an order of 10.005 EUR",
64
+ " When the total is computed",
65
+ " Then it is 10.01 EUR",
66
+ "",
67
+ " @REQ-002 @SCN-002b",
68
+ " Scenario: Below half a cent rounds down",
69
+ " Given an order of 10.004 EUR",
70
+ " When the total is computed",
71
+ " Then it is 10.00 EUR",
72
+ ].join("\n"),
73
+ };
74
+ const sources = (over = {}) => ({
75
+ spec: SPEC,
76
+ features: [FEATURE],
77
+ tests: [
78
+ { path: "test/totals.test.js", source: "// covers REQ-002\n" },
79
+ { path: "test/other.test.js", source: "// REQ-0021 is a different requirement\n" },
80
+ { path: "test/cancel.test.js", source: "describe('REQ-003 cancel', () => {})\n" },
81
+ ],
82
+ ...over,
83
+ });
84
+ (0, node_test_1.test)("requirements come from spec.md sections, with their csda:trace", () => {
85
+ const reqs = (0, DerivedMatrix_1.requirementsIn)(SPEC);
86
+ assert.deepEqual(reqs.map((r) => r.id), ["REQ-002", "REQ-003"]);
87
+ assert.equal(reqs[0].title, "Totals are rounded half-up");
88
+ assert.equal(reqs[1].trace.status, "Implemented");
89
+ });
90
+ (0, node_test_1.test)("one row per tagged scenario, the test found by mentioning the id", () => {
91
+ const rows = (0, DerivedMatrix_1.deriveRows)(sources());
92
+ const req2 = rows.filter((r) => r.requirement === "REQ-002");
93
+ assert.deepEqual(req2.map((r) => r.scenarioId), ["SCN-002", "SCN-002b"]);
94
+ assert.equal(req2[0].featureFile, "`features/totals.feature`");
95
+ assert.equal(req2[0].testArtifact, "test/totals.test.js", "REQ-0021 is not REQ-002");
96
+ assert.equal(req2[0].useCase, "Totals are rounded half-up");
97
+ assert.equal(req2[0].status, "Draft");
98
+ });
99
+ (0, node_test_1.test)("an explicit csda:trace key wins over what is derived", () => {
100
+ const rows = (0, DerivedMatrix_1.deriveRows)(sources());
101
+ const req3 = rows.find((r) => r.requirement === "REQ-003");
102
+ assert.equal(req3.status, "Implemented");
103
+ assert.equal(req3.technicalArtifact, "`lib/orders.js`");
104
+ assert.equal(req3.testArtifact, "test/cancel.test.js");
105
+ assert.equal(req3.scenarioId, "-", "no tagged scenario, nothing invented");
106
+ });
107
+ (0, node_test_1.test)("setTraceFields creates, updates in a stable order, and removes", () => {
108
+ const created = (0, DerivedMatrix_1.setTraceFields)(SPEC, "REQ-002", { test: "t.js", status: "Implemented" });
109
+ assert.match(created, /## REQ-002 — Totals are rounded half-up\n\n<!-- csda:trace status=Implemented test=t.js -->/);
110
+ const updated = (0, DerivedMatrix_1.setTraceFields)(created, "REQ-002", { status: "Verified" });
111
+ assert.match(updated, /<!-- csda:trace status=Verified test=t.js -->/);
112
+ assert.equal((updated.match(/csda:trace/g) || []).length, 2, "one comment per section");
113
+ const removed = (0, DerivedMatrix_1.setTraceFields)(updated, "REQ-002", { status: "", test: "" });
114
+ assert.equal((removed.match(/csda:trace/g) || []).length, 1);
115
+ assert.equal((0, DerivedMatrix_1.setTraceFields)(SPEC, "REQ-999", { status: "x" }), null);
116
+ });
117
+ (0, node_test_1.test)("a value with spaces survives the round trip", () => {
118
+ const spec = (0, DerivedMatrix_1.setTraceFields)(SPEC, "REQ-002", {
119
+ test: "npm test",
120
+ artifact: "existing codebase",
121
+ });
122
+ assert.equal((0, DerivedMatrix_1.requirementsIn)(spec)[0].trace.test, "npm test");
123
+ assert.equal((0, DerivedMatrix_1.requirementsIn)(spec)[0].trace.artifact, "existing codebase");
124
+ });
125
+ (0, node_test_1.test)("the rendered matrix is marked as generated and reads back the same rows", () => {
126
+ const rows = (0, DerivedMatrix_1.deriveRows)(sources());
127
+ const md = (0, DerivedMatrix_1.renderDerivedMatrix)(rows, "shop");
128
+ assert.ok((0, DerivedMatrix_1.isDerivedMatrix)(md));
129
+ assert.match(md, /# Traceability Matrix — shop/);
130
+ assert.deepEqual((0, DerivedMatrix_1.diffRows)(rows, (0, DerivedMatrix_1.rowsOf)(md)), { missing: [], extra: [] });
131
+ });
132
+ (0, node_test_1.test)("migration writes only what derivation would get wrong", () => {
133
+ const src = sources();
134
+ const req = (0, DerivedMatrix_1.requirementsIn)(SPEC)[0];
135
+ const derived = (0, DerivedMatrix_1.deriveRows)(src).filter((r) => r.requirement === "REQ-002");
136
+ const plan = (0, DerivedMatrix_1.fieldsToReproduce)(req, derived, src);
137
+ assert.deepEqual(plan, { fields: {} }, "tags and test names already carry everything");
138
+ const hand = [{ ...derived[0], status: "Implemented", technicalArtifact: "`lib/totals.js`" }];
139
+ const one = (0, DerivedMatrix_1.fieldsToReproduce)(req, hand, { ...src, features: [] });
140
+ assert.ok("fields" in one);
141
+ assert.equal(one.fields.status, "Implemented");
142
+ assert.equal(one.fields.artifact, "lib/totals.js");
143
+ });
144
+ (0, node_test_1.test)("several rows that tags cannot tell apart block the migration, with the reason", () => {
145
+ const req = (0, DerivedMatrix_1.requirementsIn)(SPEC)[0];
146
+ const rows = [
147
+ { requirement: "REQ-002", scenarioId: "SCN-X", featureFile: "`a.feature`", status: "Draft" },
148
+ { requirement: "REQ-002", scenarioId: "SCN-Y", featureFile: "`a.feature`", status: "Draft" },
149
+ ];
150
+ const plan = (0, DerivedMatrix_1.fieldsToReproduce)(req, rows, sources({ features: [] }));
151
+ assert.ok("reason" in plan);
152
+ assert.match(plan.reason, /not tagged @REQ-002/);
153
+ });
154
+ (0, node_test_1.test)("a value with a single quote is stored in double quotes, and read back", () => {
155
+ const value = "echo 'configure your test command'";
156
+ const spec = (0, DerivedMatrix_1.setTraceFields)(SPEC, "REQ-002", { test: value });
157
+ assert.equal((0, DerivedMatrix_1.requirementsIn)(spec)[0].trace.test, value);
158
+ });
159
+ (0, node_test_1.test)("requirements archived into capability specs are rows too", () => {
160
+ const capability = {
161
+ path: "docs/specs/capabilities/billing/spec.md",
162
+ source: [
163
+ "# Billing",
164
+ "",
165
+ "## Requirements",
166
+ "",
167
+ "### Requirement: REQ-100 — Invoices carry VAT",
168
+ "",
169
+ "<!-- csda:trace scn=SCN-100 feature=features/billing.feature status=Implemented -->",
170
+ "",
171
+ "The system SHALL add VAT to every invoice.",
172
+ "",
173
+ "#### Scenario: SCN-100 VAT is added",
174
+ "- WHEN an invoice is issued",
175
+ "- THEN it carries VAT",
176
+ ].join("\n"),
177
+ };
178
+ const rows = (0, DerivedMatrix_1.deriveRows)(sources({ capabilities: [capability] }));
179
+ const r = rows.find((x) => x.requirement === "REQ-100");
180
+ assert.ok(r, JSON.stringify(rows.map((x) => x.requirement)));
181
+ assert.equal(r.status, "Implemented");
182
+ assert.equal(r.scenarioId, "SCN-100");
183
+ });
184
+ (0, node_test_1.test)("the code column comes from source files that mention the requirement", () => {
185
+ const rows = (0, DerivedMatrix_1.deriveRows)(sources({
186
+ code: [
187
+ { path: "lib/totals.js", source: "// REQ-002: half-up rounding\n" },
188
+ { path: "lib/other.js", source: "// REQ-0021\n" },
189
+ ],
190
+ }));
191
+ const r = rows.find((x) => x.requirement === "REQ-002");
192
+ assert.equal(r.technicalArtifact, "`lib/totals.js`");
193
+ const r3 = rows.find((x) => x.requirement === "REQ-003");
194
+ assert.equal(r3.technicalArtifact, "`lib/orders.js`", "an explicit artifact still wins");
195
+ });
196
+ //# sourceMappingURL=derived-matrix.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derived-matrix.test.js","sourceRoot":"","sources":["../../../../../packages/core/test/unit/derived-matrix.test.ts"],"names":[],"mappings":"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"}
@@ -52,13 +52,14 @@ const DoneVerification_1 = require("../../src/domain/DoneVerification");
52
52
  (0, node_test_1.test)("--strict asks for the gate the project can actually give", () => {
53
53
  // Following the documentation must not leave you with a weaker gate than the
54
54
  // tool supports — that was a cold evaluator's packaging complaint.
55
+ // The whole gate: the old subset left out --strict-scenarios, so a scenario
56
+ // of unfilled <placeholder> steps closed as Implemented.
55
57
  const plan = (0, DoneVerification_1.planDoneVerification)("/p", { check: true, strict: true });
56
- assert.deepEqual(plan.steps[0].argv, [
57
- "/p",
58
- "--strict-tdd",
59
- "--strict-links",
60
- "--strict-coverage",
61
- ]);
58
+ assert.deepEqual(plan.steps[0].argv, ["/p", "--strict"]);
59
+ });
60
+ (0, node_test_1.test)("the requirement being closed is checked as delivered", () => {
61
+ const plan = (0, DoneVerification_1.planDoneVerification)("/p", { check: true, strict: true, reqId: "REQ-007" });
62
+ assert.deepEqual(plan.steps[0].argv, ["/p", "--strict", "--delivering", "REQ-007"]);
62
63
  });
63
64
  (0, node_test_1.test)("a configured test command runs, and it runs after validate", () => {
64
65
  // validate is fast and its failures carry fixes; running a whole suite first
@@ -1 +1 @@
1
- {"version":3,"file":"done-verification.test.js","sourceRoot":"","sources":["../../../../../packages/core/test/unit/done-verification.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"done-verification.test.js","sourceRoot":"","sources":["../../../../../packages/core/test/unit/done-verification.test.ts"],"names":[],"mappings":"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"}
@@ -148,4 +148,32 @@ const GOOD = {
148
148
  ].join("\n");
149
149
  assert.deepEqual((0, GherkinQuality_1.analyseGherkinSource)(es, "features/facturacion.feature"), []);
150
150
  });
151
+ (0, node_test_1.test)("an unfilled <placeholder> in a plain Scenario is an error", () => {
152
+ // Three steps, a real title, no vague word — it passed every gate with its
153
+ // requirement Implemented. A template nobody filled in describes nothing.
154
+ const template = {
155
+ ...GOOD,
156
+ steps: [
157
+ { keyword: "given", text: "<the state before the action>" },
158
+ { keyword: "when", text: "<the action under test>" },
159
+ { keyword: "then", text: "<the observable outcome>" },
160
+ ],
161
+ };
162
+ const found = (0, GherkinQuality_1.analyseScenario)(template, "t");
163
+ assert.deepEqual(codesOf(found), Array(3).fill(GherkinQuality_1.QUALITY_CODES.PLACEHOLDER_STEP));
164
+ assert.equal(byCode(found, GherkinQuality_1.QUALITY_CODES.PLACEHOLDER_STEP).severity, "error");
165
+ });
166
+ (0, node_test_1.test)("in an Outline, <x> is a parameter, not a placeholder", () => {
167
+ const outline = {
168
+ ...GOOD,
169
+ outline: true,
170
+ hasExamples: true,
171
+ steps: [
172
+ { keyword: "given", text: "an order of <amount>" },
173
+ { keyword: "when", text: "the total is computed" },
174
+ { keyword: "then", text: "the total is <total>" },
175
+ ],
176
+ };
177
+ assert.deepEqual((0, GherkinQuality_1.analyseScenario)(outline, "t"), []);
178
+ });
151
179
  //# sourceMappingURL=gherkin-quality.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gherkin-quality.test.js","sourceRoot":"","sources":["../../../../../packages/core/test/unit/gherkin-quality.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gherkin-quality.test.js","sourceRoot":"","sources":["../../../../../packages/core/test/unit/gherkin-quality.test.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yCAAiC;AACjC,2DAA6C;AAE7C,oEAMyC;AAEzC,MAAM,OAAO,GAAG,CAAC,QAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjE,MAAM,MAAM,GAAG,CAAC,QAAe,EAAE,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAExF,MAAM,IAAI,GAAG;IACX,IAAI,EAAE,mCAAmC;IACzC,KAAK,EAAE;QACL,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,uCAAuC,EAAE;QACnE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,iDAAiD,EAAE;QAC5E,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE;KACpD;IACD,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF,IAAA,gBAAI,EAAC,uCAAuC,EAAE,GAAG,EAAE;IACjD,MAAM,CAAC,SAAS,CAAC,IAAA,gCAAe,EAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,gDAAgD,EAAE,GAAG,EAAE;IAC1D,8DAA8D;IAC9D,2EAA2E;IAC3E,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,8BAAa,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,8BAAa,CAAC,QAAQ,SAAS,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,uDAAuD,CAAC,CAAC;IAChF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,gCAAgC,CAAC,CAAC;AACpF,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,sEAAsE,EAAE,GAAG,EAAE;IAChF,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IACzF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,8BAAa,CAAC,wBAAwB,CAAC,CAAC;IACtE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACnB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,kEAAkE,EAAE,GAAG,EAAE;IAC5E,2EAA2E;IAC3E,sEAAsE;IACtE,MAAM,IAAI,GAAG,IAAA,gCAAe,EAC1B,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,EAC3D,SAAS,CACV,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,8BAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC5E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,8BAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACtE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,8BAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEtE,MAAM,KAAK,GAAG,IAAA,gCAAe,EAC3B,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,EAAE,EACpF,SAAS,CACV,CAAC;IACF,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,8BAAa,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,sCAAsC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,iEAAiE,EAAE,GAAG,EAAE;IAC3E,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;IACvF,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,gDAAgD,EAAE,GAAG,EAAE;IAC1D,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;QACjF,MAAM,CAAC,KAAK,CAAC,IAAA,+BAAc,EAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAA,+BAAc,EAAC,mCAAmC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3E,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,mEAAmE,EAAE,GAAG,EAAE;IAC7E,MAAM,MAAM,GAAG;QACb,gBAAgB;QAChB,+CAA+C;QAC/C,0BAA0B;QAC1B,kCAAkC;QAClC,iCAAiC;QACjC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,KAAK,GAAG,IAAA,mCAAkB,EAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACnE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,qBAAqB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5E,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,8BAAa,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;IACtD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,4EAA4E,EAAE,GAAG,EAAE;IACtF,0EAA0E;IAC1E,oEAAoE;IACpE,MAAM,MAAM,GAAG;QACb,gBAAgB;QAChB,+CAA+C;QAC/C,0BAA0B;QAC1B,kCAAkC;QAClC,iCAAiC;QACjC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,KAAK,GAAG,OAAO,CAAC,IAAA,qCAAoB,EAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAC9E,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,8BAAa,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9E,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,8BAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,wDAAwD,EAAE,GAAG,EAAE;IAClE,MAAM,EAAE,GAAG;QACT,gBAAgB;QAChB,6BAA6B;QAC7B,sDAAsD;QACtD,kCAAkC;QAClC,4CAA4C;QAC5C,qCAAqC;QACrC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,CAAC,SAAS,CAAC,IAAA,qCAAoB,EAAC,EAAE,EAAE,8BAA8B,CAAC,EAAE,EAAE,CAAC,CAAC;AACjF,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,2DAA2D,EAAE,GAAG,EAAE;IACrE,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,QAAQ,GAAG;QACf,GAAG,IAAI;QACP,KAAK,EAAE;YACL,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAC3D,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE;YACpD,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,EAAE;SACtD;KACF,CAAC;IACF,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7C,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,8BAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAChF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,8BAAa,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChF,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,sDAAsD,EAAE,GAAG,EAAE;IAChE,MAAM,OAAO,GAAG;QACd,GAAG,IAAI;QACP,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE;YACL,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAClD,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE;YAClD,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE;SAClD;KACF,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,IAAA,gCAAe,EAAC,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ /**
3
+ * What `specgate new` writes: a slug, and a tagged scenario of placeholders.
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const node_test_1 = require("node:test");
40
+ const assert = __importStar(require("node:assert/strict"));
41
+ const NewRequirement_1 = require("../../src/domain/NewRequirement");
42
+ const GherkinQuality_1 = require("../../src/domain/GherkinQuality");
43
+ const GherkinTags_1 = require("../../src/domain/GherkinTags");
44
+ (0, node_test_1.test)("a slug is the first six words, lowercased and ascii", () => {
45
+ assert.equal((0, NewRequirement_1.slugFor)("Totals are rounded half-up"), "totals-are-rounded-half-up");
46
+ assert.equal((0, NewRequirement_1.slugFor)("Facturación: el IVA se redondea"), "facturacion-el-iva-se-redondea");
47
+ assert.equal((0, NewRequirement_1.slugFor)("one two three four five six seven"), "one-two-three-four-five-six");
48
+ assert.equal((0, NewRequirement_1.slugFor)("!!!"), "requirement");
49
+ });
50
+ (0, node_test_1.test)("the scenario carries the tags validate ties to the matrix row", () => {
51
+ const source = (0, NewRequirement_1.featureWithScenario)(null, "Totals", (0, NewRequirement_1.scenarioBlock)("REQ-007", "SCN-007", "Totals"));
52
+ const tags = (0, GherkinTags_1.csdaTagsIn)(source);
53
+ assert.ok(JSON.stringify(tags).includes("REQ-007"), JSON.stringify(tags));
54
+ assert.ok(JSON.stringify(tags).includes("SCN-007"), JSON.stringify(tags));
55
+ });
56
+ (0, node_test_1.test)("the scenario is three placeholders the gate refuses on delivery", () => {
57
+ const source = (0, NewRequirement_1.featureWithScenario)(null, "Totals are rounded", (0, NewRequirement_1.scenarioBlock)("REQ-1", "SCN-1", "Totals are rounded"));
58
+ const codes = (0, GherkinQuality_1.analyseGherkinSource)(source, "f.feature").map((d) => d.code);
59
+ assert.deepEqual(codes, Array(3).fill("scenario_placeholder_step"));
60
+ });
61
+ (0, node_test_1.test)("an existing feature file gets the scenario appended, not replaced", () => {
62
+ const out = (0, NewRequirement_1.featureWithScenario)("Feature: Totals\n\n Scenario: old one\n", "x", " @REQ-2 @SCN-2\n Scenario: x\n");
63
+ assert.match(out, /^Feature: Totals/);
64
+ assert.match(out, /Scenario: old one/);
65
+ assert.match(out, /@REQ-2 @SCN-2\n {2}Scenario: x/);
66
+ });
67
+ //# sourceMappingURL=new-requirement.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-requirement.test.js","sourceRoot":"","sources":["../../../../../packages/core/test/unit/new-requirement.test.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yCAAiC;AACjC,2DAA6C;AAE7C,oEAA8F;AAC9F,oEAAuE;AACvE,8DAA0D;AAE1D,IAAA,gBAAI,EAAC,qDAAqD,EAAE,GAAG,EAAE;IAC/D,MAAM,CAAC,KAAK,CAAC,IAAA,wBAAO,EAAC,4BAA4B,CAAC,EAAE,4BAA4B,CAAC,CAAC;IAClF,MAAM,CAAC,KAAK,CAAC,IAAA,wBAAO,EAAC,iCAAiC,CAAC,EAAE,gCAAgC,CAAC,CAAC;IAC3F,MAAM,CAAC,KAAK,CAAC,IAAA,wBAAO,EAAC,mCAAmC,CAAC,EAAE,6BAA6B,CAAC,CAAC;IAC1F,MAAM,CAAC,KAAK,CAAC,IAAA,wBAAO,EAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,+DAA+D,EAAE,GAAG,EAAE;IACzE,MAAM,MAAM,GAAG,IAAA,oCAAmB,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAA,8BAAa,EAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClG,MAAM,IAAI,GAAG,IAAA,wBAAU,EAAC,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,iEAAiE,EAAE,GAAG,EAAE;IAC3E,MAAM,MAAM,GAAG,IAAA,oCAAmB,EAChC,IAAI,EACJ,oBAAoB,EACpB,IAAA,8BAAa,EAAC,OAAO,EAAE,OAAO,EAAE,oBAAoB,CAAC,CACtD,CAAC;IACF,MAAM,KAAK,GAAG,IAAA,qCAAoB,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,mEAAmE,EAAE,GAAG,EAAE;IAC7E,MAAM,GAAG,GAAG,IAAA,oCAAmB,EAC7B,0CAA0C,EAC1C,GAAG,EACH,kCAAkC,CACnC,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACtC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,gCAAgC,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC"}