spec-box-tms-sync 0.3.0 → 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.
Files changed (76) hide show
  1. package/README.md +28 -2
  2. package/dist/cli.js +2 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/markdown.d.ts +4 -0
  5. package/dist/commands/markdown.d.ts.map +1 -0
  6. package/dist/commands/markdown.js +21 -0
  7. package/dist/commands/markdown.js.map +1 -0
  8. package/dist/commands/sync.d.ts.map +1 -1
  9. package/dist/commands/sync.js +10 -16
  10. package/dist/commands/sync.js.map +1 -1
  11. package/dist/commands/upload-stat.d.ts +2 -2
  12. package/dist/commands/upload-stat.d.ts.map +1 -1
  13. package/dist/commands/upload-stat.js +15 -8
  14. package/dist/commands/upload-stat.js.map +1 -1
  15. package/dist/commands/validate-only.d.ts.map +1 -1
  16. package/dist/commands/validate-only.js +10 -15
  17. package/dist/commands/validate-only.js.map +1 -1
  18. package/dist/lib/config/index.d.ts +4 -0
  19. package/dist/lib/config/index.d.ts.map +1 -1
  20. package/dist/lib/config/index.js +16 -1
  21. package/dist/lib/config/index.js.map +1 -1
  22. package/dist/lib/config/models.d.ts +13 -2
  23. package/dist/lib/config/models.d.ts.map +1 -1
  24. package/dist/lib/config/models.js +8 -3
  25. package/dist/lib/config/models.js.map +1 -1
  26. package/dist/lib/markdown/build-index.d.ts +3 -0
  27. package/dist/lib/markdown/build-index.d.ts.map +1 -0
  28. package/dist/lib/markdown/build-index.js +23 -0
  29. package/dist/lib/markdown/build-index.js.map +1 -0
  30. package/dist/lib/markdown/feature-to-markdown.d.ts +3 -0
  31. package/dist/lib/markdown/feature-to-markdown.d.ts.map +1 -0
  32. package/dist/lib/markdown/feature-to-markdown.js +42 -0
  33. package/dist/lib/markdown/feature-to-markdown.js.map +1 -0
  34. package/dist/lib/markdown/index.d.ts +3 -0
  35. package/dist/lib/markdown/index.d.ts.map +1 -0
  36. package/dist/lib/markdown/index.js +37 -0
  37. package/dist/lib/markdown/index.js.map +1 -0
  38. package/dist/lib/test-matcher/index.d.ts +7 -0
  39. package/dist/lib/test-matcher/index.d.ts.map +1 -0
  40. package/dist/lib/test-matcher/index.js +47 -0
  41. package/dist/lib/test-matcher/index.js.map +1 -0
  42. package/dist/lib/test-matcher/jest/index.d.ts +3 -0
  43. package/dist/lib/test-matcher/jest/index.d.ts.map +1 -0
  44. package/dist/lib/test-matcher/jest/index.js +40 -0
  45. package/dist/lib/test-matcher/jest/index.js.map +1 -0
  46. package/dist/lib/{jest → test-matcher/jest}/models.d.ts +8 -7
  47. package/dist/lib/test-matcher/jest/models.d.ts.map +1 -0
  48. package/dist/lib/test-matcher/jest/models.js.map +1 -0
  49. package/dist/lib/test-matcher/junit/index.d.ts +3 -0
  50. package/dist/lib/test-matcher/junit/index.d.ts.map +1 -0
  51. package/dist/lib/test-matcher/junit/index.js +43 -0
  52. package/dist/lib/test-matcher/junit/index.js.map +1 -0
  53. package/dist/lib/test-matcher/junit/models.d.ts +40 -0
  54. package/dist/lib/test-matcher/junit/models.d.ts.map +1 -0
  55. package/dist/lib/test-matcher/junit/models.js +42 -0
  56. package/dist/lib/test-matcher/junit/models.js.map +1 -0
  57. package/dist/lib/test-matcher/models.d.ts +13 -0
  58. package/dist/lib/test-matcher/models.d.ts.map +1 -0
  59. package/dist/lib/test-matcher/models.js +3 -0
  60. package/dist/lib/test-matcher/models.js.map +1 -0
  61. package/dist/lib/upload/upload-jest-stat.d.ts +2 -2
  62. package/dist/lib/upload/upload-jest-stat.d.ts.map +1 -1
  63. package/dist/lib/upload/upload-jest-stat.js +6 -9
  64. package/dist/lib/upload/upload-jest-stat.js.map +1 -1
  65. package/dist/lib/validators/validator.d.ts +2 -1
  66. package/dist/lib/validators/validator.d.ts.map +1 -1
  67. package/dist/lib/validators/validator.js +5 -5
  68. package/dist/lib/validators/validator.js.map +1 -1
  69. package/package.json +3 -1
  70. package/dist/lib/jest/index.d.ts +0 -24
  71. package/dist/lib/jest/index.d.ts.map +0 -1
  72. package/dist/lib/jest/index.js +0 -57
  73. package/dist/lib/jest/index.js.map +0 -1
  74. package/dist/lib/jest/models.d.ts.map +0 -1
  75. package/dist/lib/jest/models.js.map +0 -1
  76. /package/dist/lib/{jest → test-matcher/jest}/models.js +0 -0
package/README.md CHANGED
@@ -209,10 +209,13 @@ trees:
209
209
  jest --json --outputFile=jest-report.json
210
210
  ```
211
211
 
212
- Чтобы добавить в выгрузку ФТ информацию из отчета jest, добавьте в корень [конфигурационного файла](#формат-конфига) секцию `"jest"`:
212
+ Чтобы добавить в выгрузку ФТ информацию из отчета jest или JUnit, добавьте в корень [конфигурационного файла](#формат-конфига) секцию `"jest"` или `"JUnit"`
213
+
214
+ Если в проекте один набор тестов, то указать следует только один отчет.
215
+
216
+ Если в проекте выполняется несколько наборов тестов с разными форматами отчетов, то можно указать обе секции
213
217
 
214
218
  ```js
215
- {
216
219
  // ...
217
220
  "jest": {
218
221
  // путь к файлу с отчетом о выполнении тестов
@@ -221,6 +224,12 @@ jest --json --outputFile=jest-report.json
221
224
  // сегменты идентификатора для сопоставления автотестов с ФТ
222
225
  "keys": ["featureTitle", "groupTitle", "assertionTitle"]
223
226
  }
227
+
228
+ "JUnit": {
229
+ "reportPath": "test-results/junit.xml",
230
+
231
+ "keys": ["featureCode", "featureTitle", "groupTitle", "assertionTitle"]
232
+ }
224
233
  ```
225
234
 
226
235
  Для каждого ФТ, описанного в yml файлах проекта, будет сформирован уникальный идентификатор на основе поля `"keys"`. Если в отчете jest есть тест, полное имя которого совпадает с идентификатором ФТ, то считается, что проверка этого ФТ — автоматизирована.
@@ -248,6 +257,20 @@ describe('Главная страница', () => {
248
257
  - `@<attribute>` — значение указанного атрибута (идентификатор значения)
249
258
  - `$<attribute>` — значение указанного атрибута (человеко-понятное название)
250
259
 
260
+ ## Экспорт спецификаций в формате Markdown
261
+
262
+ Можно выполнить экспорт спецификаций в формате Markdown, по-умолчанию экспорт происходит в папку `docs` - значение можно переопределить в файле конфигурации
263
+
264
+ ```json
265
+ "markdown": {
266
+ "path": "documentation"
267
+ }
268
+ ```
269
+
270
+ Результат экспорта повторяет структуру папок спецификаций, ссылки заменяются на стандартные ссылки формата wiki `[[feature-path | $feature-code]]`.
271
+
272
+ Папку можно преобразовать в статический сайт с документацией при помощи [MkDocs](https://www.mkdocs.org)
273
+
251
274
  ## Формат конфига
252
275
 
253
276
  Ниже указаны все возможные параметры конфигурационного файла:
@@ -270,6 +293,9 @@ describe('Главная страница', () => {
270
293
  "tests/unit/**/*.spec.yml"
271
294
  ]
272
295
  },
296
+ "markdown": {
297
+ "path": "documentation"
298
+ },
273
299
  // настройки для сопоставления ФТ с отчетами jest
274
300
  "jest": {
275
301
  "reportPath": "jest-report.json", // путь к файлу с отчетом о выполнении тестов
package/dist/cli.js CHANGED
@@ -6,10 +6,12 @@ const helpers_1 = require("yargs/helpers");
6
6
  const sync_1 = require("./commands/sync");
7
7
  const upload_stat_1 = require("./commands/upload-stat");
8
8
  const validate_only_1 = require("./commands/validate-only");
9
+ const markdown_1 = require("./commands/markdown");
9
10
  (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
10
11
  .command(sync_1.cmdSync)
11
12
  .command(upload_stat_1.cmdUploadStat)
12
13
  .command(validate_only_1.cmdValidateOnly)
14
+ .command(markdown_1.cmdMarkdown)
13
15
  .option('config', {
14
16
  alias: 'c',
15
17
  type: 'string',
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAAA,gEAAgC;AAChC,2CAAwC;AAExC,0CAA0C;AAC1C,wDAAuD;AACvD,4DAA2D;AAE3D,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB,OAAO,CAAC,cAAO,CAAC;KAChB,OAAO,CAAC,2BAAa,CAAC;KACtB,OAAO,CAAC,+BAAe,CAAC;KACxB,MAAM,CAAC,QAAQ,EAAE;IAChB,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,aAAa;CAC3B,CAAC;KACD,OAAO,CAAC,YAAY,EAAE;IACrB,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,iBAAiB;CAC/B,CAAC;KACD,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAAA,gEAAgC;AAChC,2CAAwC;AAExC,0CAA0C;AAC1C,wDAAuD;AACvD,4DAA2D;AAC3D,kDAAkD;AAElD,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB,OAAO,CAAC,cAAO,CAAC;KAChB,OAAO,CAAC,2BAAa,CAAC;KACtB,OAAO,CAAC,+BAAe,CAAC;KACxB,OAAO,CAAC,sBAAW,CAAC;KACpB,MAAM,CAAC,QAAQ,EAAE;IAChB,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,aAAa;CAC3B,CAAC;KACD,OAAO,CAAC,YAAY,EAAE;IACrB,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,iBAAiB;CAC/B,CAAC;KACD,KAAK,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { CommandModule } from "yargs";
2
+ import { CommonOptions } from "../lib/utils";
3
+ export declare const cmdMarkdown: CommandModule<{}, CommonOptions>;
4
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/commands/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,EAAE,EAAE,aAAa,CAuBxD,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cmdMarkdown = void 0;
4
+ const config_1 = require("../lib/config");
5
+ const markdown_1 = require("../lib/markdown");
6
+ exports.cmdMarkdown = {
7
+ command: 'markdown',
8
+ handler: async (args) => {
9
+ console.log('Export to Markdown');
10
+ const { config } = args;
11
+ const { yml, api, markdown, projectPath } = await (0, config_1.loadConfig)(config);
12
+ const { projectData, validationContext } = await (0, config_1.loadProject)(yml.metaPath, yml.files, projectPath);
13
+ validationContext.printReport();
14
+ if (validationContext.hasCriticalErrors) {
15
+ throw Error('Экспорт невозможен из-за наличия критических ошибок');
16
+ }
17
+ await (0, markdown_1.exportMarkdown)(projectData, (markdown === null || markdown === void 0 ? void 0 : markdown.path) || 'docs');
18
+ console.log(`Экспорт проекта ${api.project} завершен успешно`);
19
+ }
20
+ };
21
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/commands/markdown.ts"],"names":[],"mappings":";;;AAGA,0CAAwD;AACxD,8CAAiD;AAEpC,QAAA,WAAW,GAAqC;IAC3D,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;QAErE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,MAAM,IAAA,oBAAW,EAC1D,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,KAAK,EACT,WAAW,CACZ,CAAC;QAGF,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,iBAAiB,CAAC,iBAAiB,EAAE;YACvC,MAAM,KAAK,CAAC,qDAAqD,CAAC,CAAC;SACpE;QAED,MAAM,IAAA,yBAAc,EAAC,WAAW,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,KAAI,MAAM,CAAC,CAAC;QAE5D,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC;IACjE,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAQ7C,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,aAAa,CAmCpD,CAAC"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAOtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,aAAa,CAkCpD,CAAC"}
@@ -1,31 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.cmdSync = void 0;
4
- const tslib_1 = require("tslib");
5
- const fast_glob_1 = tslib_1.__importDefault(require("fast-glob"));
6
4
  const config_1 = require("../lib/config");
7
- const yaml_1 = require("../lib/yaml");
5
+ const test_matcher_1 = require("../lib/test-matcher");
6
+ const jest_1 = require("../lib/test-matcher/jest");
7
+ const junit_1 = require("../lib/test-matcher/junit");
8
8
  const upload_entities_1 = require("../lib/upload/upload-entities");
9
- const jest_1 = require("../lib/jest");
10
- const domain_1 = require("../lib/domain");
11
- const validators_1 = require("../lib/validators");
12
9
  exports.cmdSync = {
13
10
  command: 'sync',
14
11
  handler: async (args) => {
15
12
  console.log('SYNC');
16
13
  const { config, prjversion: version } = args;
17
- const validationContext = new validators_1.Validator();
18
- const { yml, api, jest, projectPath } = await (0, config_1.loadConfig)(config);
19
- const meta = await (0, config_1.loadMeta)(validationContext, yml.metaPath, projectPath);
20
- const files = await (0, fast_glob_1.default)(yml.files, { cwd: projectPath });
21
- const yamls = await Promise.all(files.map((path) => (0, yaml_1.loadYaml)(validationContext, path, projectPath)));
22
- const successYamls = new Array();
23
- yamls.forEach((yaml) => yaml && successYamls.push(yaml));
24
- const projectData = (0, domain_1.processYamlFiles)(successYamls, meta);
25
- validationContext.validate(projectData);
14
+ const { yml, api, jest, JUnit, projectPath } = await (0, config_1.loadConfig)(config);
15
+ const { projectData, validationContext } = await (0, config_1.loadProject)(yml.metaPath, yml.files, projectPath);
26
16
  if (jest) {
27
17
  const jestReport = await (0, jest_1.loadJestReport)(jest.reportPath, projectPath);
28
- (0, jest_1.applyJestReport)(validationContext, projectData, jestReport, jest.keys);
18
+ (0, test_matcher_1.applyTestReport)(validationContext, projectData, jestReport, jest.keys);
19
+ }
20
+ if (JUnit) {
21
+ const junitReport = await (0, junit_1.loadJUnitReport)(JUnit.reportPath, projectPath);
22
+ (0, test_matcher_1.applyTestReport)(validationContext, projectData, junitReport, JUnit.keys);
29
23
  }
30
24
  validationContext.printReport();
31
25
  if (validationContext.hasCriticalErrors) {
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":";;;;AACA,kEAA6B;AAG7B,0CAAqD;AACrD,sCAAiD;AACjD,mEAA+D;AAC/D,sCAA8D;AAC9D,0CAAiD;AACjD,kDAA8C;AAEjC,QAAA,OAAO,GAAqC;IACvD,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC7C,MAAM,iBAAiB,GAAG,IAAI,sBAAS,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;QAEjE,MAAM,IAAI,GAAG,MAAM,IAAA,iBAAQ,EAAC,iBAAiB,EAAE,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAI,EAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QAE1D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,eAAQ,EAAC,iBAAiB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CACpE,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,KAAK,EAAY,CAAC;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzD,MAAM,WAAW,GAAG,IAAA,yBAAgB,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACzD,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAExC,IAAI,IAAI,EAAE;YACR,MAAM,UAAU,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEtE,IAAA,sBAAe,EAAC,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACxE;QAED,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,iBAAiB,CAAC,iBAAiB,EAAE;YACvC,MAAM,KAAK,CAAC,sDAAsD,CAAC,CAAC;SACrE;QAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,OAAO,WAAW,OAAO,EAAE,CAAC,CAAC;QACjE,MAAM,IAAA,gCAAc,EAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":";;;AAEA,0CAAwD;AACxD,sDAAsD;AACtD,mDAA0D;AAC1D,qDAA4D;AAC5D,mEAA+D;AAGlD,QAAA,OAAO,GAAqC;IACvD,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC7C,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;QAExE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,MAAM,IAAA,oBAAW,EAC1D,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,KAAK,EACT,WAAW,CACZ,CAAC;QAEF,IAAI,IAAI,EAAE;YACR,MAAM,UAAU,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEtE,IAAA,8BAAe,EAAC,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACxE;QAED,IAAI,KAAK,EAAE;YACT,MAAM,WAAW,GAAG,MAAM,IAAA,uBAAe,EAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEzE,IAAA,8BAAe,EAAC,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;SAC1E;QAED,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,iBAAiB,CAAC,iBAAiB,EAAE;YACvC,MAAM,KAAK,CAAC,sDAAsD,CAAC,CAAC;SACrE;QAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,OAAO,WAAW,OAAO,EAAE,CAAC,CAAC;QACjE,MAAM,IAAA,gCAAc,EAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;CACF,CAAC"}
@@ -1,4 +1,4 @@
1
- import { CommandModule } from "yargs";
2
- import { CommonOptions } from "../lib/utils";
1
+ import { CommandModule } from 'yargs';
2
+ import { CommonOptions } from '../lib/utils';
3
3
  export declare const cmdUploadStat: CommandModule<{}, CommonOptions>;
4
4
  //# sourceMappingURL=upload-stat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"upload-stat.d.ts","sourceRoot":"","sources":["../../src/commands/upload-stat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAK7C,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,EAAE,EAAE,aAAa,CAiB1D,CAAC"}
1
+ {"version":3,"file":"upload-stat.d.ts","sourceRoot":"","sources":["../../src/commands/upload-stat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAM7C,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,EAAE,EAAE,aAAa,CAyB1D,CAAC"}
@@ -3,19 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.cmdUploadStat = void 0;
4
4
  const config_1 = require("../lib/config");
5
5
  const upload_jest_stat_1 = require("../lib/upload/upload-jest-stat");
6
- const jest_1 = require("../lib/jest");
6
+ const jest_1 = require("../lib/test-matcher/jest");
7
+ const junit_1 = require("../lib/test-matcher/junit");
7
8
  exports.cmdUploadStat = {
8
- command: "upload-stat",
9
+ command: 'upload-stat',
9
10
  handler: async (args) => {
10
- console.log("Upload Jest stat");
11
+ console.log('Upload Jest stat');
11
12
  const { config, prjversion: version } = args;
12
- const { api, jest, projectPath } = await (0, config_1.loadConfig)(config);
13
- if (!jest) {
14
- console.log("Jest settings are not specified");
13
+ const { api, jest, JUnit, projectPath } = await (0, config_1.loadConfig)(config);
14
+ if (!jest && !JUnit) {
15
+ console.log('Jest settings are not specified');
15
16
  process.exit(1);
16
17
  }
17
- const jestReport = await (0, jest_1.loadJestReport)(jest.reportPath, projectPath);
18
- await (0, upload_jest_stat_1.uploadJestStat)(jestReport, api, version);
18
+ if (jest) {
19
+ const jestReport = await (0, jest_1.loadJestReport)(jest.reportPath, projectPath);
20
+ await (0, upload_jest_stat_1.uploadTestStat)(jestReport, api, version);
21
+ }
22
+ if (JUnit) {
23
+ const junitReport = await (0, junit_1.loadJUnitReport)(JUnit.reportPath, projectPath);
24
+ await (0, upload_jest_stat_1.uploadTestStat)(junitReport, api, version);
25
+ }
19
26
  },
20
27
  };
21
28
  //# sourceMappingURL=upload-stat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"upload-stat.js","sourceRoot":"","sources":["../../src/commands/upload-stat.ts"],"names":[],"mappings":";;;AAGA,0CAA2C;AAC3C,qEAAgE;AAChE,sCAA6C;AAEhC,QAAA,aAAa,GAAqC;IAC7D,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAE7C,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;QAE5D,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;QAED,MAAM,UAAU,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAEtE,MAAM,IAAA,iCAAc,EAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"upload-stat.js","sourceRoot":"","sources":["../../src/commands/upload-stat.ts"],"names":[],"mappings":";;;AAGA,0CAA2C;AAC3C,qEAAgE;AAChE,mDAA0D;AAC1D,qDAA4D;AAE/C,QAAA,aAAa,GAAqC;IAC7D,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAE7C,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;QAEnE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;QAED,IAAI,IAAI,EAAE;YACR,MAAM,UAAU,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEtE,MAAM,IAAA,iCAAc,EAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;SAChD;QAED,IAAI,KAAK,EAAE;YACT,MAAM,WAAW,GAAG,MAAM,IAAA,uBAAe,EAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEzE,MAAM,IAAA,iCAAc,EAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;SACjD;IACH,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate-only.d.ts","sourceRoot":"","sources":["../../src/commands/validate-only.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAO7C,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,EAAE,EAAE,aAAa,CA4B5D,CAAC"}
1
+ {"version":3,"file":"validate-only.d.ts","sourceRoot":"","sources":["../../src/commands/validate-only.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAMtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,EAAE,EAAE,aAAa,CA2B5D,CAAC"}
@@ -2,27 +2,22 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.cmdValidateOnly = void 0;
4
4
  const config_1 = require("../lib/config");
5
- const validators_1 = require("../lib/validators");
6
- const fast_glob_1 = require("fast-glob");
7
- const yaml_1 = require("../lib/yaml");
8
- const domain_1 = require("../lib/domain");
9
- const jest_1 = require("../lib/jest");
5
+ const test_matcher_1 = require("../lib/test-matcher");
6
+ const jest_1 = require("../lib/test-matcher/jest");
7
+ const junit_1 = require("../lib/test-matcher/junit");
10
8
  exports.cmdValidateOnly = {
11
9
  command: 'validate',
12
10
  handler: async (args) => {
13
11
  console.log('VALIDATION');
14
- const { yml, jest, projectPath } = await (0, config_1.loadConfig)(args.config);
15
- const validationContext = new validators_1.Validator();
16
- const meta = await (0, config_1.loadMeta)(validationContext, yml.metaPath, projectPath);
17
- const files = await (0, fast_glob_1.glob)(yml.files, { cwd: projectPath });
18
- const yamls = await Promise.all(files.map((path) => (0, yaml_1.loadYaml)(validationContext, path, projectPath)));
19
- const successYamls = new Array();
20
- yamls.forEach((yaml) => yaml && successYamls.push(yaml));
21
- const projectData = (0, domain_1.processYamlFiles)(successYamls, meta);
22
- validationContext.validate(projectData);
12
+ const { yml, jest, JUnit, projectPath } = await (0, config_1.loadConfig)(args.config);
13
+ const { projectData, validationContext } = await (0, config_1.loadProject)(yml.metaPath, yml.files, projectPath);
23
14
  if (jest) {
24
15
  const jestReport = await (0, jest_1.loadJestReport)(jest.reportPath, projectPath);
25
- (0, jest_1.applyJestReport)(validationContext, projectData, jestReport, jest.keys);
16
+ (0, test_matcher_1.applyTestReport)(validationContext, projectData, jestReport, jest.keys);
17
+ }
18
+ if (JUnit) {
19
+ const junitReport = await (0, junit_1.loadJUnitReport)(JUnit.reportPath, projectPath);
20
+ (0, test_matcher_1.applyTestReport)(validationContext, projectData, junitReport, JUnit.keys);
26
21
  }
27
22
  validationContext.printReport();
28
23
  },
@@ -1 +1 @@
1
- {"version":3,"file":"validate-only.js","sourceRoot":"","sources":["../../src/commands/validate-only.ts"],"names":[],"mappings":";;;AAEA,0CAAqD;AAErD,kDAA8C;AAC9C,yCAAiC;AACjC,sCAAiD;AACjD,0CAAiD;AACjD,sCAA8D;AAEjD,QAAA,eAAe,GAAqC;IAC/D,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE1B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,mBAAU,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,iBAAiB,GAAG,IAAI,sBAAS,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAA,iBAAQ,EAAC,iBAAiB,EAAE,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE1E,MAAM,KAAK,GAAG,MAAM,IAAA,gBAAI,EAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QAE1D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,eAAQ,EAAC,iBAAiB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CACpE,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,KAAK,EAAY,CAAC;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzD,MAAM,WAAW,GAAG,IAAA,yBAAgB,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAEzD,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAExC,IAAI,IAAI,EAAE;YACR,MAAM,UAAU,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEtE,IAAA,sBAAe,EAAC,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACxE;QACD,iBAAiB,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"validate-only.js","sourceRoot":"","sources":["../../src/commands/validate-only.ts"],"names":[],"mappings":";;;AAEA,0CAAwD;AACxD,sDAAsD;AACtD,mDAA0D;AAC1D,qDAA4D;AAG/C,QAAA,eAAe,GAAqC;IAC/D,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE1B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,mBAAU,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAExE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,MAAM,IAAA,oBAAW,EAC1D,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,KAAK,EACT,WAAW,CACZ,CAAC;QAEF,IAAI,IAAI,EAAE;YACR,MAAM,UAAU,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEtE,IAAA,8BAAe,EAAC,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACxE;QAED,IAAI,KAAK,EAAE;YACT,MAAM,WAAW,GAAG,MAAM,IAAA,uBAAe,EAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEzE,IAAA,8BAAe,EAAC,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;SAC1E;QAED,iBAAiB,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;CACF,CAAC"}
@@ -8,4 +8,8 @@ export declare const loadMeta: (validationContext: Validator, path?: string, bas
8
8
  filePath: string;
9
9
  meta: Meta;
10
10
  }>;
11
+ export declare const loadProject: (metaPath: string | undefined, filePaths: string[], projectPath: string | undefined) => Promise<{
12
+ projectData: import("../domain").ProjectData;
13
+ validationContext: Validator;
14
+ }>;
11
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/config/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAc,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,IAAI,EAAE,UAAU,EAA8B,MAAM,UAAU,CAAC;AAExE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAE3E,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAEtD,eAAO,MAAM,UAAU,qBAEpB,QAAQ,UAAU,CAOpB,CAAC;AAEF,eAAO,MAAM,QAAQ,sBACA,SAAS,SACrB,MAAM,aACH,MAAM;cACK,MAAM;UAAQ,IAAI;EAexC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/config/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAc,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,IAAI,EAAE,UAAU,EAA8B,MAAM,UAAU,CAAC;AAIxE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAE3E,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAEtD,eAAO,MAAM,UAAU,qBAEpB,QAAQ,UAAU,CAOpB,CAAC;AAEF,eAAO,MAAM,QAAQ,sBACA,SAAS,SACrB,MAAM,aACH,MAAM;cACK,MAAM;UAAQ,IAAI;EAexC,CAAC;AAEF,eAAO,MAAM,WAAW,aACZ,MAAM,GAAG,SAAS,aACjB,MAAM,EAAE,eACN,MAAM,GAAG,SAAS;;;EAgBhC,CAAC"}
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadMeta = exports.loadConfig = exports.DEFAULT_META_PATH = exports.DEFAULT_CONFIG_PATH = void 0;
3
+ exports.loadProject = exports.loadMeta = exports.loadConfig = exports.DEFAULT_META_PATH = exports.DEFAULT_CONFIG_PATH = void 0;
4
+ const fast_glob_1 = require("fast-glob");
4
5
  const utils_1 = require("../utils");
5
6
  const validators_1 = require("../validators");
6
7
  const validator_1 = require("../validators/validator");
7
8
  const models_1 = require("./models");
9
+ const yaml_1 = require("../yaml");
10
+ const domain_1 = require("../domain");
8
11
  exports.DEFAULT_CONFIG_PATH = '.tms.json';
9
12
  exports.DEFAULT_META_PATH = '.spec-box-meta.yml';
10
13
  const loadConfig = async (path = exports.DEFAULT_CONFIG_PATH) => {
@@ -31,4 +34,16 @@ const loadMeta = async (validationContext, path, basePath = utils_1.CWD // TODO:
31
34
  }
32
35
  };
33
36
  exports.loadMeta = loadMeta;
37
+ const loadProject = async (metaPath, filePaths, projectPath) => {
38
+ const validationContext = new validators_1.Validator();
39
+ const meta = await (0, exports.loadMeta)(validationContext, metaPath, projectPath);
40
+ const files = await (0, fast_glob_1.glob)(filePaths, { cwd: projectPath });
41
+ const yamls = await Promise.all(files.map((path) => (0, yaml_1.loadYaml)(validationContext, path, projectPath)));
42
+ const successYamls = new Array();
43
+ yamls.forEach((yaml) => yaml && successYamls.push(yaml));
44
+ const projectData = (0, domain_1.processYamlFiles)(successYamls, meta);
45
+ validationContext.validate(projectData);
46
+ return { projectData, validationContext };
47
+ };
48
+ exports.loadProject = loadProject;
34
49
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/config/index.ts"],"names":[],"mappings":";;;AAAA,oCAMkB;AAClB,8CAAsD;AACtD,uDAAyD;AACzD,qCAAwE;AAI3D,QAAA,mBAAmB,GAAG,WAAW,CAAC;AAClC,QAAA,iBAAiB,GAAG,oBAAoB,CAAC;AAE/C,MAAM,UAAU,GAAG,KAAK,EAC7B,IAAI,GAAG,2BAAmB,EACL,EAAE;IACvB,MAAM,IAAI,GAAG,MAAM,IAAA,oBAAY,EAAC,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE9B,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAC;IAEhD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AATW,QAAA,UAAU,cASrB;AAEK,MAAM,QAAQ,GAAG,KAAK,EAC3B,iBAA4B,EAC5B,IAAa,EACb,WAAmB,WAAG,CAAC,gCAAgC;EACZ,EAAE;IAC7C,MAAM,QAAQ,GAAG,IAAI,IAAI,yBAAiB,CAAC;IAC3C,IAAI,UAAU,GAAG,IAAI;QACnB,CAAC,CAAC,IAAA,gBAAQ,EAAC,oBAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAC3C,CAAC,CAAC,IAAA,wBAAgB,EAAC,oBAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEtD,IAAI;QACF,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC;QACjC,MAAM,IAAI,GAAG,OAAO,IAAI,EAAE,CAAC;QAE3B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC3B;IAAC,OAAO,KAAK,EAAE;QACd,IAAA,uBAAU,EAAC,IAAA,0BAAc,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtD,MAAM,KAAK,CAAC,oCAAoC,CAAC,CAAC;KACnD;AACH,CAAC,CAAC;AAnBW,QAAA,QAAQ,YAmBnB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/config/index.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AACjC,oCAMkB;AAClB,8CAAsD;AACtD,uDAAyD;AACzD,qCAAwE;AACxE,kCAA6C;AAC7C,sCAA6C;AAIhC,QAAA,mBAAmB,GAAG,WAAW,CAAC;AAClC,QAAA,iBAAiB,GAAG,oBAAoB,CAAC;AAE/C,MAAM,UAAU,GAAG,KAAK,EAC7B,IAAI,GAAG,2BAAmB,EACL,EAAE;IACvB,MAAM,IAAI,GAAG,MAAM,IAAA,oBAAY,EAAC,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE9B,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAC;IAEhD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AATW,QAAA,UAAU,cASrB;AAEK,MAAM,QAAQ,GAAG,KAAK,EAC3B,iBAA4B,EAC5B,IAAa,EACb,WAAmB,WAAG,CAAC,gCAAgC;EACZ,EAAE;IAC7C,MAAM,QAAQ,GAAG,IAAI,IAAI,yBAAiB,CAAC;IAC3C,IAAI,UAAU,GAAG,IAAI;QACnB,CAAC,CAAC,IAAA,gBAAQ,EAAC,oBAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAC3C,CAAC,CAAC,IAAA,wBAAgB,EAAC,oBAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEtD,IAAI;QACF,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC;QACjC,MAAM,IAAI,GAAG,OAAO,IAAI,EAAE,CAAC;QAE3B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC3B;IAAC,OAAO,KAAK,EAAE;QACd,IAAA,uBAAU,EAAC,IAAA,0BAAc,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtD,MAAM,KAAK,CAAC,oCAAoC,CAAC,CAAC;KACnD;AACH,CAAC,CAAC;AAnBW,QAAA,QAAQ,YAmBnB;AAEK,MAAM,WAAW,GAAG,KAAK,EAC9B,QAA4B,EAC5B,SAAmB,EACnB,WAA+B,EAC/B,EAAE;IACF,MAAM,iBAAiB,GAAG,IAAI,sBAAS,EAAE,CAAC;IAE1C,MAAM,IAAI,GAAG,MAAM,IAAA,gBAAQ,EAAC,iBAAiB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,MAAM,IAAA,gBAAI,EAAC,SAAS,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IAE1D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,eAAQ,EAAC,iBAAiB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CACpE,CAAC;IACF,MAAM,YAAY,GAAG,IAAI,KAAK,EAAY,CAAC;IAC3C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEzD,MAAM,WAAW,GAAG,IAAA,yBAAgB,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACzD,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACxC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;AAC5C,CAAC,CAAC;AAnBW,QAAA,WAAW,eAmBtB"}
@@ -43,9 +43,12 @@ export declare const ymlConfigDecoder: d.Decoder<unknown, Partial<{
43
43
  }> & {
44
44
  files: string[];
45
45
  }>;
46
+ export declare const markdownConfigDecoder: d.Decoder<unknown, {
47
+ path: string;
48
+ }>;
46
49
  export declare const literalKeyPartDecoder: d.Decoder<unknown, "filePath" | "featureCode" | "featureTitle" | "groupTitle" | "assertionTitle" | "fileName">;
47
50
  export declare const attributeKeyPartDecoder: d.Decoder<unknown, string>;
48
- export declare const jestConfigDecoder: d.Decoder<unknown, {
51
+ export declare const testReportConfigDecoder: d.Decoder<unknown, {
49
52
  reportPath: string;
50
53
  keys: string[];
51
54
  }>;
@@ -55,6 +58,13 @@ export declare const configDecoder: d.Decoder<unknown, Partial<{
55
58
  reportPath: string;
56
59
  keys: string[];
57
60
  };
61
+ JUnit: {
62
+ reportPath: string;
63
+ keys: string[];
64
+ };
65
+ markdown: {
66
+ path: string;
67
+ };
58
68
  }> & {
59
69
  api: {
60
70
  host: string;
@@ -69,7 +79,8 @@ export declare const configDecoder: d.Decoder<unknown, Partial<{
69
79
  export type RootConfig = d.TypeOf<typeof configDecoder>;
70
80
  export type ApiConfig = d.TypeOf<typeof apiConfigDecoder>;
71
81
  export type YmlConfig = d.TypeOf<typeof ymlConfigDecoder>;
72
- export type JestConfig = d.TypeOf<typeof jestConfigDecoder>;
82
+ export type MarkdownConfig = d.TypeOf<typeof markdownConfigDecoder>;
83
+ export type TestConfig = d.TypeOf<typeof testReportConfigDecoder>;
73
84
  export type Meta = d.TypeOf<typeof metaDecoder>;
74
85
  export type Tree = d.TypeOf<typeof treeDecoder>;
75
86
  export type Attribute = d.TypeOf<typeof attributeDecoder>;
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/lib/config/models.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AAGnC,eAAO,MAAM,qBAAqB;;;EAGhC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;EAI3B,CAAC;AAEH,eAAO,MAAM,WAAW;;;;EAItB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;GAMtB,CAAC;AAGH,eAAO,MAAM,gBAAgB;;;EAG3B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;EAQ5B,CAAC;AAEF,eAAO,MAAM,qBAAqB,gHAOjC,CAAC;AAEF,eAAO,MAAM,uBAAuB,4BASnC,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;EAG5B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;EAUzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AACxD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/lib/config/models.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AAGnC,eAAO,MAAM,qBAAqB;;;EAGhC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;EAI3B,CAAC;AAEH,eAAO,MAAM,WAAW;;;;EAItB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;GAMtB,CAAC;AAGH,eAAO,MAAM,gBAAgB;;;EAG3B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;EAQ5B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;EAEhC,CAAC;AAEH,eAAO,MAAM,qBAAqB,gHAOjC,CAAC;AAEF,eAAO,MAAM,uBAAuB,4BASnC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;EAGlC,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;EAYzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AACxD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAElE,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.configDecoder = exports.jestConfigDecoder = exports.attributeKeyPartDecoder = exports.literalKeyPartDecoder = exports.ymlConfigDecoder = exports.apiConfigDecoder = exports.metaDecoder = exports.treeDecoder = exports.attributeDecoder = exports.attributeValueDecoder = void 0;
3
+ exports.configDecoder = exports.testReportConfigDecoder = exports.attributeKeyPartDecoder = exports.literalKeyPartDecoder = exports.markdownConfigDecoder = exports.ymlConfigDecoder = exports.apiConfigDecoder = exports.metaDecoder = exports.treeDecoder = exports.attributeDecoder = exports.attributeValueDecoder = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const function_1 = require("fp-ts/lib/function");
6
6
  const d = tslib_1.__importStar(require("io-ts/Decoder"));
@@ -36,6 +36,9 @@ exports.ymlConfigDecoder = d.intersect(d.struct({
36
36
  }))(d.partial({
37
37
  metaPath: d.string,
38
38
  }));
39
+ exports.markdownConfigDecoder = d.struct({
40
+ path: d.string
41
+ });
39
42
  exports.literalKeyPartDecoder = d.literal("featureTitle", "featureCode", "groupTitle", "assertionTitle", "fileName", "filePath");
40
43
  exports.attributeKeyPartDecoder = (0, function_1.pipe)(d.string, d.parse((str) => {
41
44
  if (/^[@$]/.test(str)) {
@@ -43,7 +46,7 @@ exports.attributeKeyPartDecoder = (0, function_1.pipe)(d.string, d.parse((str) =
43
46
  }
44
47
  return d.failure(str, "starts with @ or $ symbol");
45
48
  }));
46
- exports.jestConfigDecoder = d.struct({
49
+ exports.testReportConfigDecoder = d.struct({
47
50
  reportPath: d.string,
48
51
  keys: d.array(d.union(exports.literalKeyPartDecoder, exports.attributeKeyPartDecoder)),
49
52
  });
@@ -52,6 +55,8 @@ exports.configDecoder = d.intersect(d.struct({
52
55
  yml: exports.ymlConfigDecoder,
53
56
  }))(d.partial({
54
57
  projectPath: d.string,
55
- jest: exports.jestConfigDecoder,
58
+ jest: exports.testReportConfigDecoder,
59
+ JUnit: exports.testReportConfigDecoder,
60
+ markdown: exports.markdownConfigDecoder,
56
61
  }));
57
62
  //# sourceMappingURL=models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/lib/config/models.ts"],"names":[],"mappings":";;;;AAAA,iDAA0C;AAC1C,yDAAmC;AAEnC,OAAO;AACM,QAAA,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,KAAK,EAAE,CAAC,CAAC,MAAM;CAChB,CAAC,CAAC;AAEU,QAAA,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,6BAAqB,CAAC;CACvC,CAAC,CAAC;AAEU,QAAA,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;CAC9B,CAAC,CAAC;AAEU,QAAA,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,WAAW,EAAE,CAAC,CAAC,MAAM;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM;IACpB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAgB,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAW,CAAC;CAC5B,CAAC,CAAC;AAEH,SAAS;AACI,QAAA,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,OAAO,EAAE,CAAC,CAAC,MAAM;CAClB,CAAC,CAAC;AAEU,QAAA,gBAAgB,GAAG,CAAC,CAAC,SAAS,CACzC,CAAC,CAAC,MAAM,CAAC;IACP,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;CACzB,CAAC,CACH,CACC,CAAC,CAAC,OAAO,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC,MAAM;CACnB,CAAC,CACH,CAAC;AAEW,QAAA,qBAAqB,GAAG,CAAC,CAAC,OAAO,CAC5C,cAAc,EACd,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,UAAU,CACX,CAAC;AAEW,QAAA,uBAAuB,GAAG,IAAA,eAAI,EACzC,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACd,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACrB,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;KAC9B;IAED,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;AACrD,CAAC,CAAC,CACH,CAAC;AAEW,QAAA,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,UAAU,EAAE,CAAC,CAAC,MAAM;IACpB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,6BAAqB,EAAE,+BAAuB,CAAC,CAAC;CACvE,CAAC,CAAC;AAEU,QAAA,aAAa,GAAG,CAAC,CAAC,SAAS,CACtC,CAAC,CAAC,MAAM,CAAC;IACP,GAAG,EAAE,wBAAgB;IACrB,GAAG,EAAE,wBAAgB;CACtB,CAAC,CACH,CACC,CAAC,CAAC,OAAO,CAAC;IACR,WAAW,EAAE,CAAC,CAAC,MAAM;IACrB,IAAI,EAAE,yBAAiB;CACxB,CAAC,CACH,CAAC"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/lib/config/models.ts"],"names":[],"mappings":";;;;AAAA,iDAA0C;AAC1C,yDAAmC;AAEnC,OAAO;AACM,QAAA,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,KAAK,EAAE,CAAC,CAAC,MAAM;CAChB,CAAC,CAAC;AAEU,QAAA,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,6BAAqB,CAAC;CACvC,CAAC,CAAC;AAEU,QAAA,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;CAC9B,CAAC,CAAC;AAEU,QAAA,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,WAAW,EAAE,CAAC,CAAC,MAAM;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM;IACpB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAgB,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAW,CAAC;CAC5B,CAAC,CAAC;AAEH,SAAS;AACI,QAAA,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,OAAO,EAAE,CAAC,CAAC,MAAM;CAClB,CAAC,CAAC;AAEU,QAAA,gBAAgB,GAAG,CAAC,CAAC,SAAS,CACzC,CAAC,CAAC,MAAM,CAAC;IACP,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;CACzB,CAAC,CACH,CACC,CAAC,CAAC,OAAO,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC,MAAM;CACnB,CAAC,CACH,CAAC;AAEW,QAAA,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM;CACf,CAAC,CAAC;AAEU,QAAA,qBAAqB,GAAG,CAAC,CAAC,OAAO,CAC5C,cAAc,EACd,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,UAAU,CACX,CAAC;AAEW,QAAA,uBAAuB,GAAG,IAAA,eAAI,EACzC,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACd,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACrB,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;KAC9B;IAED,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;AACrD,CAAC,CAAC,CACH,CAAC;AAEW,QAAA,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,UAAU,EAAE,CAAC,CAAC,MAAM;IACpB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,6BAAqB,EAAE,+BAAuB,CAAC,CAAC;CACvE,CAAC,CAAC;AAEU,QAAA,aAAa,GAAG,CAAC,CAAC,SAAS,CACtC,CAAC,CAAC,MAAM,CAAC;IACP,GAAG,EAAE,wBAAgB;IACrB,GAAG,EAAE,wBAAgB;CACtB,CAAC,CACH,CACC,CAAC,CAAC,OAAO,CAAC;IACR,WAAW,EAAE,CAAC,CAAC,MAAM;IACrB,IAAI,EAAE,+BAAuB;IAC7B,KAAK,EAAE,+BAAuB;IAC9B,QAAQ,EAAE,6BAAqB;CAChC,CAAC,CACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ProjectData } from '../domain';
2
+ export declare const buildIndex: (projectData: ProjectData, pathMap: Map<string, string>) => string;
3
+ //# sourceMappingURL=build-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-index.d.ts","sourceRoot":"","sources":["../../../src/lib/markdown/build-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,WAAW,EAAQ,MAAM,WAAW,CAAC;AAwBvD,eAAO,MAAM,UAAU,gBACR,WAAW,WACf,IAAI,MAAM,EAAE,MAAM,CAAC,KAC3B,MAGF,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildIndex = void 0;
4
+ const featureToLink = (feature, path) => {
5
+ return `[[${path} | ${feature.title} ( ${feature.code} ) ]]`;
6
+ };
7
+ const linearIndex = (projectData, pathMap) => {
8
+ let result = '# Содержание \r\n\r\n';
9
+ const sortedFeatures = [...projectData.features].sort((a, b) => a.code.localeCompare(b.code));
10
+ for (const feature of sortedFeatures) {
11
+ const path = pathMap.get(`$${feature.code}`);
12
+ if (path) {
13
+ result += `- ${featureToLink(feature, path)} \r\n\r\n`;
14
+ }
15
+ }
16
+ return result;
17
+ };
18
+ const buildIndex = (projectData, pathMap) => {
19
+ return linearIndex(projectData, pathMap);
20
+ // ToDo: сделать построение индекса по деревьям
21
+ };
22
+ exports.buildIndex = buildIndex;
23
+ //# sourceMappingURL=build-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-index.js","sourceRoot":"","sources":["../../../src/lib/markdown/build-index.ts"],"names":[],"mappings":";;;AAEA,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAE,IAAY,EAAU,EAAE;IAC/D,OAAO,KAAK,IAAI,MAAM,OAAO,CAAC,KAAK,MAAM,OAAO,CAAC,IAAI,OAAO,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAClB,WAAwB,EACxB,OAA4B,EAC5B,EAAE;IACF,IAAI,MAAM,GAAG,uBAAuB,CAAC;IACrC,MAAM,cAAc,GAAG,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC7D,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAC7B,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,IAAI,EAAE;YACR,MAAM,IAAI,KAAK,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;SACxD;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEK,MAAM,UAAU,GAAG,CACxB,WAAwB,EACxB,OAA4B,EACpB,EAAE;IACV,OAAO,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACzC,+CAA+C;AACjD,CAAC,CAAC;AANW,QAAA,UAAU,cAMrB"}
@@ -0,0 +1,3 @@
1
+ import { Feature } from "../domain";
2
+ export declare function featureToMarkdown(feature: Feature): string;
3
+ //# sourceMappingURL=feature-to-markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-to-markdown.d.ts","sourceRoot":"","sources":["../../../src/lib/markdown/feature-to-markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,OAAO,EAAE,MAAM,WAAW,CAAC;AAoCpD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAS1D"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.featureToMarkdown = void 0;
4
+ function mdFeatureTitle(feature) {
5
+ let result = `# ${feature.title} ( ${feature.code} )\r\n\r\n`;
6
+ if (feature.description) {
7
+ result += `${feature.description.trim()}\r\n\r\n`;
8
+ }
9
+ return result;
10
+ }
11
+ function mdFeatureGroupTitle(groupTitle) {
12
+ return `## ${groupTitle.trim()}\r\n\r\n`;
13
+ }
14
+ function mdDescriptionToQuote(description) {
15
+ const quotedNewLines = description.trim().replace(/\n/g, '\n> ');
16
+ return `> ${quotedNewLines}`;
17
+ }
18
+ function mdFeatureAssertion(assertion, description) {
19
+ let result = `- ${assertion.trim()}\r\n\r\n`;
20
+ if (description) {
21
+ result += `${mdDescriptionToQuote(description)}\r\n\r\n`;
22
+ }
23
+ return result;
24
+ }
25
+ function mdFeatureGroup(assertionGroup) {
26
+ let result = '';
27
+ result += mdFeatureGroupTitle(assertionGroup.title);
28
+ assertionGroup.assertions.forEach((assertion) => {
29
+ result += mdFeatureAssertion(assertion.title, assertion.description);
30
+ });
31
+ return result;
32
+ }
33
+ function featureToMarkdown(feature) {
34
+ let result = '';
35
+ result += mdFeatureTitle(feature);
36
+ feature.groups.forEach((group) => {
37
+ result += mdFeatureGroup(group);
38
+ });
39
+ return result;
40
+ }
41
+ exports.featureToMarkdown = featureToMarkdown;
42
+ //# sourceMappingURL=feature-to-markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-to-markdown.js","sourceRoot":"","sources":["../../../src/lib/markdown/feature-to-markdown.ts"],"names":[],"mappings":";;;AAEA,SAAS,cAAc,CAAC,OAAgB;IACtC,IAAI,MAAM,GAAG,KAAK,OAAO,CAAC,KAAK,MAAM,OAAO,CAAC,IAAI,YAAY,CAAC;IAC9D,IAAG,OAAO,CAAC,WAAW,EAAE;QACtB,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC;KACnD;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAkB;IAC7C,OAAO,MAAM,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC;AAC3C,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjE,OAAO,KAAK,cAAc,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAiB,EAAE,WAAoB;IACjE,IAAI,MAAM,GAAG,KAAK,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC;IAC7C,IAAI,WAAW,EAAE;QACf,MAAM,IAAI,GAAG,oBAAoB,CAAC,WAAW,CAAC,UAAU,CAAC;KAC1D;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,cAA8B;IACpD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,IAAI,mBAAmB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpD,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QAC9C,MAAM,IAAI,kBAAkB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,iBAAiB,CAAC,OAAgB;IAChD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/B,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AATD,8CASC"}
@@ -0,0 +1,3 @@
1
+ import { ProjectData } from '../domain';
2
+ export declare const exportMarkdown: (projectData: ProjectData, path: string) => Promise<void>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/markdown/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAoBxC,eAAO,MAAM,cAAc,gBACZ,WAAW,QAClB,MAAM,kBA0Bb,CAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.exportMarkdown = void 0;
4
+ const validator_1 = require("../validators/validator");
5
+ const build_index_1 = require("./build-index");
6
+ const feature_to_markdown_1 = require("./feature-to-markdown");
7
+ const promises_1 = require("fs/promises");
8
+ const replaceInternalLinks = (markdown, pathMap) => {
9
+ const re = new RegExp(validator_1.LINK_LIKE);
10
+ return markdown.replace(re, (link) => {
11
+ const path = pathMap.get(link);
12
+ if (path) {
13
+ return `[[${path} | ${link}]]`;
14
+ }
15
+ return link;
16
+ });
17
+ };
18
+ const exportMarkdown = async (projectData, path) => {
19
+ const featureCodeToPath = new Map();
20
+ for (const feature of projectData.features) {
21
+ const featurePath = feature.filePath.slice(0, feature.filePath.lastIndexOf('.'));
22
+ featureCodeToPath.set(`$${feature.code}`, featurePath);
23
+ }
24
+ for (const feature of projectData.features) {
25
+ const markDown = replaceInternalLinks((0, feature_to_markdown_1.featureToMarkdown)(feature), featureCodeToPath);
26
+ const filePath = feature.filePath.slice(0, feature.filePath.lastIndexOf('.')) + '.md';
27
+ const exportPath = `${path}/${filePath}`;
28
+ const exportDirectory = exportPath.slice(0, exportPath.lastIndexOf('/'));
29
+ await (0, promises_1.mkdir)(exportDirectory, { recursive: true });
30
+ await (0, promises_1.writeFile)(exportPath, markDown);
31
+ }
32
+ if (featureCodeToPath.size > 0) {
33
+ (0, promises_1.writeFile)(`${path}/index.md`, (0, build_index_1.buildIndex)(projectData, featureCodeToPath));
34
+ }
35
+ };
36
+ exports.exportMarkdown = exportMarkdown;
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/markdown/index.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AACpD,+CAA2C;AAC3C,+DAA0D;AAC1D,0CAA+C;AAE/C,MAAM,oBAAoB,GAAG,CAC3B,QAAgB,EAChB,OAA4B,EAC5B,EAAE;IACF,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,qBAAS,CAAC,CAAC;IACjC,OAAO,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAG,IAAI,EAAE;YACP,OAAO,KAAK,IAAI,MAAM,IAAI,IAAI,CAAA;SAC/B;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEK,MAAM,cAAc,GAAG,KAAK,EACjC,WAAwB,EACxB,IAAY,EACZ,EAAE;IACF,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpD,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE;QAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CACxC,CAAC,EACD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAClC,CAAC;QACF,iBAAiB,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;KACxD;IAED,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE;QAC1C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAA,uCAAiB,EAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAErF,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACvE,MAAM,UAAU,GAAG,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC;QACzC,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzE,MAAM,IAAA,gBAAK,EAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,IAAA,oBAAS,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KACvC;IAED,IAAG,iBAAiB,CAAC,IAAI,GAAG,CAAC,EAAE;QAC7B,IAAA,oBAAS,EAAC,GAAG,IAAI,WAAW,EAAE,IAAA,wBAAU,EAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;KAC3E;AACH,CAAC,CAAC;AA5BW,QAAA,cAAc,kBA4BzB"}
@@ -0,0 +1,7 @@
1
+ import { ProjectData } from '../domain';
2
+ import { Validator } from '../validators';
3
+ import { AssertionStatus, TestReport } from './models';
4
+ export declare const getFullName: (...parts: string[]) => string;
5
+ export declare const ignoredStatuses: Set<AssertionStatus>;
6
+ export declare const applyTestReport: (validationContext: Validator, { features, attributes }: ProjectData, report: TestReport, keyParts: string[]) => void;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/test-matcher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,WAAW,EACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEvD,eAAO,MAAM,WAAW,aAAc,MAAM,EAAE,WAAoB,CAAC;AAEnE,eAAO,MAAM,eAAe,sBAI1B,CAAC;AAEH,eAAO,MAAM,eAAe,sBACP,SAAS,4BACF,WAAW,UAC7B,UAAU,YACR,MAAM,EAAE,SAgDnB,CAAC"}