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.
- package/README.md +28 -2
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/markdown.d.ts +4 -0
- package/dist/commands/markdown.d.ts.map +1 -0
- package/dist/commands/markdown.js +21 -0
- package/dist/commands/markdown.js.map +1 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +10 -16
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/upload-stat.d.ts +2 -2
- package/dist/commands/upload-stat.d.ts.map +1 -1
- package/dist/commands/upload-stat.js +15 -8
- package/dist/commands/upload-stat.js.map +1 -1
- package/dist/commands/validate-only.d.ts.map +1 -1
- package/dist/commands/validate-only.js +10 -15
- package/dist/commands/validate-only.js.map +1 -1
- package/dist/lib/config/index.d.ts +4 -0
- package/dist/lib/config/index.d.ts.map +1 -1
- package/dist/lib/config/index.js +16 -1
- package/dist/lib/config/index.js.map +1 -1
- package/dist/lib/config/models.d.ts +13 -2
- package/dist/lib/config/models.d.ts.map +1 -1
- package/dist/lib/config/models.js +8 -3
- package/dist/lib/config/models.js.map +1 -1
- package/dist/lib/markdown/build-index.d.ts +3 -0
- package/dist/lib/markdown/build-index.d.ts.map +1 -0
- package/dist/lib/markdown/build-index.js +23 -0
- package/dist/lib/markdown/build-index.js.map +1 -0
- package/dist/lib/markdown/feature-to-markdown.d.ts +3 -0
- package/dist/lib/markdown/feature-to-markdown.d.ts.map +1 -0
- package/dist/lib/markdown/feature-to-markdown.js +42 -0
- package/dist/lib/markdown/feature-to-markdown.js.map +1 -0
- package/dist/lib/markdown/index.d.ts +3 -0
- package/dist/lib/markdown/index.d.ts.map +1 -0
- package/dist/lib/markdown/index.js +37 -0
- package/dist/lib/markdown/index.js.map +1 -0
- package/dist/lib/test-matcher/index.d.ts +7 -0
- package/dist/lib/test-matcher/index.d.ts.map +1 -0
- package/dist/lib/test-matcher/index.js +47 -0
- package/dist/lib/test-matcher/index.js.map +1 -0
- package/dist/lib/test-matcher/jest/index.d.ts +3 -0
- package/dist/lib/test-matcher/jest/index.d.ts.map +1 -0
- package/dist/lib/test-matcher/jest/index.js +40 -0
- package/dist/lib/test-matcher/jest/index.js.map +1 -0
- package/dist/lib/{jest → test-matcher/jest}/models.d.ts +8 -7
- package/dist/lib/test-matcher/jest/models.d.ts.map +1 -0
- package/dist/lib/test-matcher/jest/models.js.map +1 -0
- package/dist/lib/test-matcher/junit/index.d.ts +3 -0
- package/dist/lib/test-matcher/junit/index.d.ts.map +1 -0
- package/dist/lib/test-matcher/junit/index.js +43 -0
- package/dist/lib/test-matcher/junit/index.js.map +1 -0
- package/dist/lib/test-matcher/junit/models.d.ts +40 -0
- package/dist/lib/test-matcher/junit/models.d.ts.map +1 -0
- package/dist/lib/test-matcher/junit/models.js +42 -0
- package/dist/lib/test-matcher/junit/models.js.map +1 -0
- package/dist/lib/test-matcher/models.d.ts +13 -0
- package/dist/lib/test-matcher/models.d.ts.map +1 -0
- package/dist/lib/test-matcher/models.js +3 -0
- package/dist/lib/test-matcher/models.js.map +1 -0
- package/dist/lib/upload/upload-jest-stat.d.ts +2 -2
- package/dist/lib/upload/upload-jest-stat.d.ts.map +1 -1
- package/dist/lib/upload/upload-jest-stat.js +6 -9
- package/dist/lib/upload/upload-jest-stat.js.map +1 -1
- package/dist/lib/validators/validator.d.ts +2 -1
- package/dist/lib/validators/validator.d.ts.map +1 -1
- package/dist/lib/validators/validator.js +5 -5
- package/dist/lib/validators/validator.js.map +1 -1
- package/package.json +3 -1
- package/dist/lib/jest/index.d.ts +0 -24
- package/dist/lib/jest/index.d.ts.map +0 -1
- package/dist/lib/jest/index.js +0 -57
- package/dist/lib/jest/index.js.map +0 -1
- package/dist/lib/jest/models.d.ts.map +0 -1
- package/dist/lib/jest/models.js.map +0 -1
- /package/dist/lib/{jest → test-matcher/jest}/models.js +0 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyTestReport = exports.ignoredStatuses = exports.getFullName = void 0;
|
|
4
|
+
const domain_1 = require("../domain");
|
|
5
|
+
const getFullName = (...parts) => parts.join(' ');
|
|
6
|
+
exports.getFullName = getFullName;
|
|
7
|
+
exports.ignoredStatuses = new Set([
|
|
8
|
+
'pending',
|
|
9
|
+
'todo',
|
|
10
|
+
'skipped',
|
|
11
|
+
]);
|
|
12
|
+
const applyTestReport = (validationContext, { features, attributes }, report, keyParts) => {
|
|
13
|
+
const names = new Map();
|
|
14
|
+
for (let { name, filePath } of report.testResults) {
|
|
15
|
+
const paths = names.get(name) || [];
|
|
16
|
+
paths.push(filePath || '');
|
|
17
|
+
names.set(name, paths);
|
|
18
|
+
}
|
|
19
|
+
const attributesCtx = (0, domain_1.getAttributesContext)(attributes);
|
|
20
|
+
// заполняем поле isAutomated
|
|
21
|
+
for (let { title: featureTitle, code: featureCode, groups, fileName, filePath, attributes = {}, } of features) {
|
|
22
|
+
for (let { title: groupTitle, assertions } of groups || []) {
|
|
23
|
+
for (let assertion of assertions || []) {
|
|
24
|
+
// TODO: перенести в domain?
|
|
25
|
+
const assertionCtx = {
|
|
26
|
+
featureTitle,
|
|
27
|
+
featureCode,
|
|
28
|
+
groupTitle,
|
|
29
|
+
assertionTitle: assertion.title,
|
|
30
|
+
attributes,
|
|
31
|
+
fileName,
|
|
32
|
+
filePath,
|
|
33
|
+
};
|
|
34
|
+
const parts = (0, domain_1.getKey)(keyParts, assertionCtx, attributesCtx);
|
|
35
|
+
const fullName = (0, exports.getFullName)(...parts);
|
|
36
|
+
assertion.isAutomated = names.has(fullName);
|
|
37
|
+
names.delete(fullName);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
Array.from(names.keys()).forEach((name) => {
|
|
42
|
+
const paths = names.get(name);
|
|
43
|
+
paths === null || paths === void 0 ? void 0 : paths.forEach((path) => validationContext.registerJestUnusedTests(name, path));
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
exports.applyTestReport = applyTestReport;
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/test-matcher/index.ts"],"names":[],"mappings":";;;AAAA,sCAKmB;AAIZ,MAAM,WAAW,GAAG,CAAC,GAAG,KAAe,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAAtD,QAAA,WAAW,eAA2C;AAEtD,QAAA,eAAe,GAAG,IAAI,GAAG,CAAkB;IACtD,SAAS;IACT,MAAM;IACN,SAAS;CACV,CAAC,CAAC;AAEI,MAAM,eAAe,GAAG,CAC7B,iBAA4B,EAC5B,EAAE,QAAQ,EAAE,UAAU,EAAe,EACrC,MAAkB,EAClB,QAAkB,EAClB,EAAE;IACF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE1C,KAAK,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC,WAAW,EAAE;QACjD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC3B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACxB;IAED,MAAM,aAAa,GAAG,IAAA,6BAAoB,EAAC,UAAU,CAAC,CAAC;IAEvD,6BAA6B;IAC7B,KAAK,IAAI,EACP,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,WAAW,EACjB,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,UAAU,GAAG,EAAE,GAChB,IAAI,QAAQ,EAAE;QACb,KAAK,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,MAAM,IAAI,EAAE,EAAE;YAC1D,KAAK,IAAI,SAAS,IAAI,UAAU,IAAI,EAAE,EAAE;gBACtC,4BAA4B;gBAC5B,MAAM,YAAY,GAAqB;oBACrC,YAAY;oBACZ,WAAW;oBACX,UAAU;oBACV,cAAc,EAAE,SAAS,CAAC,KAAK;oBAC/B,UAAU;oBACV,QAAQ;oBACR,QAAQ;iBACT,CAAC;gBAEF,MAAM,KAAK,GAAG,IAAA,eAAM,EAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;gBAC5D,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,GAAG,KAAK,CAAC,CAAC;gBAEvC,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC5C,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aACxB;SACF;KACF;IACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACtB,iBAAiB,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AApDW,QAAA,eAAe,mBAoD1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/test-matcher/jest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,UAAU,EAAE,MAAM,WAAW,CAAC;AAuCxD,eAAO,MAAM,cAAc,SACnB,MAAM,aACD,MAAM,KAChB,QAAQ,UAAU,CAOpB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadJestReport = void 0;
|
|
4
|
+
const utils_1 = require("../../utils");
|
|
5
|
+
const models_1 = require("./models");
|
|
6
|
+
const getFullName = (...parts) => parts.join(' ');
|
|
7
|
+
const mapTestResults = (testResult) => {
|
|
8
|
+
const results = new Array();
|
|
9
|
+
// формируем список ключей тест-кейсов из отчета jest
|
|
10
|
+
for (let { assertionResults, name: filePath } of testResult) {
|
|
11
|
+
for (let { title, ancestorTitles, status } of assertionResults) {
|
|
12
|
+
const name = getFullName(...ancestorTitles, title);
|
|
13
|
+
results.push({
|
|
14
|
+
name,
|
|
15
|
+
filePath,
|
|
16
|
+
status,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return results;
|
|
21
|
+
};
|
|
22
|
+
const mapTestReport = (jestReport) => {
|
|
23
|
+
const { startTime, numTotalTests: total } = jestReport;
|
|
24
|
+
// Сумма затраченного времени на все тест сьюты
|
|
25
|
+
const duration = jestReport.testResults.reduce((sum, item) => sum + item.endTime - item.startTime, 0);
|
|
26
|
+
return {
|
|
27
|
+
startTime,
|
|
28
|
+
total,
|
|
29
|
+
duration,
|
|
30
|
+
testResults: mapTestResults(jestReport.testResults),
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
const loadJestReport = async (path, basePath) => {
|
|
34
|
+
const json = await (0, utils_1.readTextFile)(path, basePath);
|
|
35
|
+
const data = JSON.parse(json);
|
|
36
|
+
const entity = (0, utils_1.parseObject)(data, models_1.jestReportDecoder);
|
|
37
|
+
return mapTestReport(entity);
|
|
38
|
+
};
|
|
39
|
+
exports.loadJestReport = loadJestReport;
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/test-matcher/jest/index.ts"],"names":[],"mappings":";;;AACA,uCAAwD;AACxD,qCAAyE;AAEzE,MAAM,WAAW,GAAG,CAAC,GAAG,KAAe,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE5D,MAAM,cAAc,GAAG,CAAC,UAA4B,EAAqB,EAAE;IACzE,MAAM,OAAO,GAAG,IAAI,KAAK,EAAmB,CAAC;IAC7C,qDAAqD;IACrD,KAAK,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,UAAU,EAAE;QAC3D,KAAK,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,gBAAgB,EAAE;YAC9D,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,cAAc,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI;gBACJ,QAAQ;gBACR,MAAM;aACP,CAAC,CAAC;SACJ;KACF;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,UAAsB,EAAc,EAAE;IAC3D,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;IAEvD,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAC5C,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAClD,CAAC,CACF,CAAC;IAEF,OAAO;QACL,SAAS;QACT,KAAK;QACL,QAAQ;QACR,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC;KACpD,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,cAAc,GAAG,KAAK,EACjC,IAAY,EACZ,QAAiB,EACI,EAAE;IACvB,MAAM,IAAI,GAAG,MAAM,IAAA,oBAAY,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,IAAI,EAAE,0BAAiB,CAAC,CAAC;IAEpD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC,CAAC;AAVW,QAAA,cAAc,kBAUzB"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import * as d from "io-ts/Decoder";
|
|
2
|
-
export declare const jestSuiteStatusDecoder: d.Decoder<unknown, "passed" | "failed" | "
|
|
3
|
-
export declare const jestAssertionStatusDecoder: d.Decoder<unknown, "todo" | "passed" | "failed" | "
|
|
2
|
+
export declare const jestSuiteStatusDecoder: d.Decoder<unknown, "passed" | "failed" | "skipped" | "pending" | "focused">;
|
|
3
|
+
export declare const jestAssertionStatusDecoder: d.Decoder<unknown, "todo" | "passed" | "failed" | "skipped" | "pending">;
|
|
4
4
|
export declare const jestAssertionResultDecoder: d.Decoder<unknown, {
|
|
5
5
|
title: string;
|
|
6
6
|
fullName: string;
|
|
7
7
|
ancestorTitles: string[];
|
|
8
|
-
status: "todo" | "passed" | "failed" | "
|
|
8
|
+
status: "todo" | "passed" | "failed" | "skipped" | "pending";
|
|
9
9
|
}>;
|
|
10
10
|
export declare const jestTestResultDecoder: d.Decoder<unknown, {
|
|
11
11
|
name: string;
|
|
12
|
-
status: "passed" | "failed" | "
|
|
12
|
+
status: "passed" | "failed" | "skipped" | "pending" | "focused";
|
|
13
13
|
message: string;
|
|
14
14
|
startTime: number;
|
|
15
15
|
endTime: number;
|
|
@@ -17,7 +17,7 @@ export declare const jestTestResultDecoder: d.Decoder<unknown, {
|
|
|
17
17
|
title: string;
|
|
18
18
|
fullName: string;
|
|
19
19
|
ancestorTitles: string[];
|
|
20
|
-
status: "todo" | "passed" | "failed" | "
|
|
20
|
+
status: "todo" | "passed" | "failed" | "skipped" | "pending";
|
|
21
21
|
}[];
|
|
22
22
|
}>;
|
|
23
23
|
export declare const jestReportDecoder: d.Decoder<unknown, {
|
|
@@ -25,7 +25,7 @@ export declare const jestReportDecoder: d.Decoder<unknown, {
|
|
|
25
25
|
numTotalTests: number;
|
|
26
26
|
testResults: {
|
|
27
27
|
name: string;
|
|
28
|
-
status: "passed" | "failed" | "
|
|
28
|
+
status: "passed" | "failed" | "skipped" | "pending" | "focused";
|
|
29
29
|
message: string;
|
|
30
30
|
startTime: number;
|
|
31
31
|
endTime: number;
|
|
@@ -33,10 +33,11 @@ export declare const jestReportDecoder: d.Decoder<unknown, {
|
|
|
33
33
|
title: string;
|
|
34
34
|
fullName: string;
|
|
35
35
|
ancestorTitles: string[];
|
|
36
|
-
status: "todo" | "passed" | "failed" | "
|
|
36
|
+
status: "todo" | "passed" | "failed" | "skipped" | "pending";
|
|
37
37
|
}[];
|
|
38
38
|
}[];
|
|
39
39
|
}>;
|
|
40
40
|
export type JestReport = d.TypeOf<typeof jestReportDecoder>;
|
|
41
|
+
export type JestTestResult = d.TypeOf<typeof jestTestResultDecoder>;
|
|
41
42
|
export type JestAssertionStatus = d.TypeOf<typeof jestAssertionStatusDecoder>;
|
|
42
43
|
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../src/lib/test-matcher/jest/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AAEnC,eAAO,MAAM,sBAAsB,6EAMlC,CAAC;AAEF,eAAO,MAAM,0BAA0B,0EAMtC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;EAKrC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAOhC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;EAI5B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/lib/test-matcher/jest/models.ts"],"names":[],"mappings":";;;;AAAA,yDAAmC;AAEtB,QAAA,sBAAsB,GAAG,CAAC,CAAC,OAAO,CAC7C,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;AAEW,QAAA,0BAA0B,GAAG,CAAC,CAAC,OAAO,CACjD,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,CACV,CAAC;AAEW,QAAA,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,QAAQ,EAAE,CAAC,CAAC,MAAM;IAClB,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACjC,MAAM,EAAE,kCAA0B;CACnC,CAAC,CAAC;AAEU,QAAA,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,MAAM,EAAE,8BAAsB;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM;IACjB,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,kCAA0B,CAAC;CACtD,CAAC,CAAC;AAEU,QAAA,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM;IACnB,aAAa,EAAE,CAAC,CAAC,MAAM;IACvB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,6BAAqB,CAAC;CAC5C,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/test-matcher/junit/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,UAAU,EAAE,MAAM,WAAW,CAAC;AAwCxD,eAAO,MAAM,eAAe,SACpB,MAAM,aACD,MAAM,KAChB,QAAQ,UAAU,CASpB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadJUnitReport = void 0;
|
|
4
|
+
const xml2js_1 = require("xml2js");
|
|
5
|
+
const utils_1 = require("../../utils");
|
|
6
|
+
const models_1 = require("./models");
|
|
7
|
+
const mapTestResults = (testResult) => {
|
|
8
|
+
const results = new Array();
|
|
9
|
+
for (let { testcase: testCases } of testResult) {
|
|
10
|
+
for (let { name, status } of testCases) {
|
|
11
|
+
results.push({
|
|
12
|
+
name,
|
|
13
|
+
filePath: 'unknown',
|
|
14
|
+
status,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return results;
|
|
19
|
+
};
|
|
20
|
+
const mapTestReport = (junitReport) => {
|
|
21
|
+
const { testsuites } = junitReport;
|
|
22
|
+
const total = testsuites.tests;
|
|
23
|
+
const startTime = testsuites.testsuite.reduce((acc, item) => Math.min(acc, item.timestamp.getTime()), Number.MAX_VALUE);
|
|
24
|
+
// Сумма затраченного времени на все тест сьюты
|
|
25
|
+
const duration = testsuites.testsuite.reduce((sum, item) => sum + item.time, 0) * 1000;
|
|
26
|
+
return {
|
|
27
|
+
startTime,
|
|
28
|
+
total,
|
|
29
|
+
duration,
|
|
30
|
+
testResults: mapTestResults(testsuites.testsuite),
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
const loadJUnitReport = async (path, basePath) => {
|
|
34
|
+
const xml = await (0, utils_1.readTextFile)(path, basePath);
|
|
35
|
+
const data = await (0, xml2js_1.parseStringPromise)(xml, {
|
|
36
|
+
explicitArray: false,
|
|
37
|
+
mergeAttrs: true,
|
|
38
|
+
});
|
|
39
|
+
const entity = (0, utils_1.parseObject)(data, models_1.junitReportDecoder);
|
|
40
|
+
return mapTestReport(entity);
|
|
41
|
+
};
|
|
42
|
+
exports.loadJUnitReport = loadJUnitReport;
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/test-matcher/junit/index.ts"],"names":[],"mappings":";;;AAAA,mCAA4C;AAC5C,uCAAwD;AAExD,qCAA2E;AAE3E,MAAM,cAAc,GAAG,CAAC,UAA4B,EAAqB,EAAE;IACzE,MAAM,OAAO,GAAG,IAAI,KAAK,EAAmB,CAAC;IAE7C,KAAK,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,UAAU,EAAE;QAC9C,KAAK,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE;YACtC,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI;gBACJ,QAAQ,EAAE,SAAS;gBACnB,MAAM;aACP,CAAC,CAAC;SACJ;KACF;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,WAAwB,EAAc,EAAE;IAC7D,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC;IACnC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAE/B,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAC3C,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EACtD,MAAM,CAAC,SAAS,CACjB,CAAC;IAEF,+CAA+C;IAC/C,MAAM,QAAQ,GACZ,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAExE,OAAO;QACL,SAAS;QACT,KAAK;QACL,QAAQ;QACR,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC;KAClD,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,eAAe,GAAG,KAAK,EAClC,IAAY,EACZ,QAAiB,EACI,EAAE;IACvB,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAY,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAY,MAAM,IAAA,2BAAkB,EAAC,GAAG,EAAE;QAClD,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,IAAI,EAAE,2BAAkB,CAAC,CAAC;IAErD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC,CAAC;AAZW,QAAA,eAAe,mBAY1B"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as d from 'io-ts/Decoder';
|
|
2
|
+
export type JUnitStatuses = 'skipped' | 'failed' | 'passed';
|
|
3
|
+
declare const junitTestCaseStatusDecoder: d.Decoder<unknown, Partial<{
|
|
4
|
+
skipped: string;
|
|
5
|
+
failed: string;
|
|
6
|
+
}>>;
|
|
7
|
+
export type JUnitTestCaseStatus = d.TypeOf<typeof junitTestCaseStatusDecoder>;
|
|
8
|
+
declare const junitTestCaseDecoder: d.Decoder<unknown, {
|
|
9
|
+
status: JUnitStatuses;
|
|
10
|
+
} & {
|
|
11
|
+
name: string;
|
|
12
|
+
}>;
|
|
13
|
+
declare const junitTestSuiteDecoder: d.Decoder<unknown, {
|
|
14
|
+
timestamp: Date;
|
|
15
|
+
time: number;
|
|
16
|
+
testcase: ({
|
|
17
|
+
status: JUnitStatuses;
|
|
18
|
+
} & {
|
|
19
|
+
name: string;
|
|
20
|
+
})[];
|
|
21
|
+
}>;
|
|
22
|
+
export declare const junitReportDecoder: d.Decoder<unknown, {
|
|
23
|
+
testsuites: {
|
|
24
|
+
tests: number;
|
|
25
|
+
testsuite: {
|
|
26
|
+
timestamp: Date;
|
|
27
|
+
time: number;
|
|
28
|
+
testcase: ({
|
|
29
|
+
status: JUnitStatuses;
|
|
30
|
+
} & {
|
|
31
|
+
name: string;
|
|
32
|
+
})[];
|
|
33
|
+
}[];
|
|
34
|
+
};
|
|
35
|
+
}>;
|
|
36
|
+
export type JUnitReport = d.TypeOf<typeof junitReportDecoder>;
|
|
37
|
+
export type JUnitTestSuite = d.TypeOf<typeof junitTestSuiteDecoder>;
|
|
38
|
+
export type JUnitTestCase = d.TypeOf<typeof junitTestCaseDecoder>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../src/lib/test-matcher/junit/models.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AAanC,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE5D,QAAA,MAAM,0BAA0B;;;GAG9B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAa9E,QAAA,MAAM,oBAAoB;;;;EASzB,CAAC;AAEF,QAAA,MAAM,qBAAqB;;;;;;;;EAUzB,CAAC;AAUH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;EAE7B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.junitReportDecoder = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const function_1 = require("fp-ts/lib/function");
|
|
6
|
+
const d = tslib_1.__importStar(require("io-ts/Decoder"));
|
|
7
|
+
const singleItemOrArray = (decoder) => (0, function_1.pipe)(d.union(decoder, d.array(decoder)), d.parse((value) => {
|
|
8
|
+
if (Array.isArray(value)) {
|
|
9
|
+
return d.success(value);
|
|
10
|
+
}
|
|
11
|
+
return d.success([value]);
|
|
12
|
+
}));
|
|
13
|
+
const junitTestCaseStatusDecoder = d.partial({
|
|
14
|
+
skipped: d.string,
|
|
15
|
+
failed: d.string,
|
|
16
|
+
});
|
|
17
|
+
const mapStatus = (testCase) => {
|
|
18
|
+
const { skipped, failed } = testCase;
|
|
19
|
+
if (skipped !== undefined) {
|
|
20
|
+
return 'skipped';
|
|
21
|
+
}
|
|
22
|
+
if (failed !== undefined) {
|
|
23
|
+
return 'failed';
|
|
24
|
+
}
|
|
25
|
+
return 'passed';
|
|
26
|
+
};
|
|
27
|
+
const junitTestCaseDecoder = d.intersect(d.struct({
|
|
28
|
+
name: d.string,
|
|
29
|
+
}))((0, function_1.pipe)(junitTestCaseStatusDecoder, d.parse((s) => d.success({ status: mapStatus(s) }))));
|
|
30
|
+
const junitTestSuiteDecoder = d.struct({
|
|
31
|
+
timestamp: (0, function_1.pipe)(d.string, d.parse((s) => d.success(new Date(s)))),
|
|
32
|
+
time: (0, function_1.pipe)(d.string, d.parse((v) => d.success(Number(v)))),
|
|
33
|
+
testcase: singleItemOrArray(junitTestCaseDecoder),
|
|
34
|
+
});
|
|
35
|
+
const junitTestSuitesDecoder = d.struct({
|
|
36
|
+
tests: (0, function_1.pipe)(d.string, d.parse((v) => d.success(Number(v)))),
|
|
37
|
+
testsuite: singleItemOrArray(junitTestSuiteDecoder),
|
|
38
|
+
});
|
|
39
|
+
exports.junitReportDecoder = d.struct({
|
|
40
|
+
testsuites: junitTestSuitesDecoder,
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/lib/test-matcher/junit/models.ts"],"names":[],"mappings":";;;;AAAA,iDAA0C;AAC1C,yDAAmC;AAEnC,MAAM,iBAAiB,GAAG,CAAI,OAA8B,EAAE,EAAE,CAC9D,IAAA,eAAI,EACF,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAClC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAChB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACzB;IACD,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5B,CAAC,CAAC,CACH,CAAC;AAIJ,MAAM,0BAA0B,GAAG,CAAC,CAAC,OAAO,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM;CACjB,CAAC,CAAC;AAIH,MAAM,SAAS,GAAG,CAAC,QAA6B,EAAiB,EAAE;IACjE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IACrC,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,OAAO,SAAS,CAAC;KAClB;IACD,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,OAAO,QAAQ,CAAC;KACjB;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,CAAC,SAAS,CACtC,CAAC,CAAC,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,MAAM;CACf,CAAC,CACH,CACC,IAAA,eAAI,EACF,0BAA0B,EAC1B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACpD,CACF,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,IAAA,eAAI,EACb,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACvC;IACD,IAAI,EAAE,IAAA,eAAI,EACR,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CACrC;IACD,QAAQ,EAAE,iBAAiB,CAAC,oBAAoB,CAAC;CAClD,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,IAAA,eAAI,EACT,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CACrC;IACD,SAAS,EAAE,iBAAiB,CAAC,qBAAqB,CAAC;CACpD,CAAC,CAAC;AAEU,QAAA,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,UAAU,EAAE,sBAAsB;CACnC,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type AssertionStatus = 'passed' | 'failed' | 'skipped' | 'pending' | 'todo';
|
|
2
|
+
export interface AssertionResult {
|
|
3
|
+
name: string;
|
|
4
|
+
filePath?: string;
|
|
5
|
+
status: AssertionStatus;
|
|
6
|
+
}
|
|
7
|
+
export interface TestReport {
|
|
8
|
+
total: number;
|
|
9
|
+
startTime: number;
|
|
10
|
+
duration: number;
|
|
11
|
+
testResults: AssertionResult[];
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/lib/test-matcher/models.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/lib/test-matcher/models.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ApiConfig } from '../config/models';
|
|
2
|
-
import {
|
|
3
|
-
export declare const
|
|
2
|
+
import { TestReport } from '../test-matcher/models';
|
|
3
|
+
export declare const uploadTestStat: (testReport: TestReport, config: ApiConfig, version?: string) => Promise<void>;
|
|
4
4
|
//# sourceMappingURL=upload-jest-stat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-jest-stat.d.ts","sourceRoot":"","sources":["../../../src/lib/upload/upload-jest-stat.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"upload-jest-stat.d.ts","sourceRoot":"","sources":["../../../src/lib/upload/upload-jest-stat.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,eAAO,MAAM,cAAc,eACb,UAAU,UACd,SAAS,YACP,MAAM,kBAcjB,CAAC"}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.uploadTestStat = void 0;
|
|
4
4
|
const api_1 = require("../../api");
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
|
-
const
|
|
6
|
+
const uploadTestStat = async (testReport, config, version) => {
|
|
7
7
|
const { host, project } = config;
|
|
8
|
-
const { startTime,
|
|
9
|
-
// считаем суммарную длительность всех тестов
|
|
10
|
-
// (как при выполнении в одном потоке)
|
|
11
|
-
const totalDuration = testResults.reduce((sum, { startTime, endTime }) => sum + (endTime - startTime), 0);
|
|
8
|
+
const { startTime, total, duration } = testReport;
|
|
12
9
|
const client = new api_1.SpecBoxWebApi(host, utils_1.DEFAULT_API_OPTIONS);
|
|
13
10
|
const body = {
|
|
14
11
|
timestamp: new Date(startTime),
|
|
15
|
-
assertionsCount:
|
|
16
|
-
duration
|
|
12
|
+
assertionsCount: total,
|
|
13
|
+
duration,
|
|
17
14
|
};
|
|
18
15
|
await client.statUploadAutotests({ project, version, body });
|
|
19
16
|
};
|
|
20
|
-
exports.
|
|
17
|
+
exports.uploadTestStat = uploadTestStat;
|
|
21
18
|
//# sourceMappingURL=upload-jest-stat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-jest-stat.js","sourceRoot":"","sources":["../../../src/lib/upload/upload-jest-stat.ts"],"names":[],"mappings":";;;AAAA,mCAGmB;AAGnB,oCAA+C;AAExC,MAAM,cAAc,GAAG,KAAK,EACjC,UAAsB,EACtB,MAAiB,EACjB,OAAgB,EAChB,EAAE;IACF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACjC,MAAM,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"upload-jest-stat.js","sourceRoot":"","sources":["../../../src/lib/upload/upload-jest-stat.ts"],"names":[],"mappings":";;;AAAA,mCAGmB;AAGnB,oCAA+C;AAExC,MAAM,cAAc,GAAG,KAAK,EACjC,UAAsB,EACtB,MAAiB,EACjB,OAAgB,EAChB,EAAE;IACF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACjC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;IAElD,MAAM,MAAM,GAAG,IAAI,mBAAa,CAAC,IAAI,EAAE,2BAAmB,CAAC,CAAC;IAE5D,MAAM,IAAI,GAAkD;QAC1D,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;QAC9B,eAAe,EAAE,KAAK;QACtB,QAAQ;KACT,CAAC;IAEF,MAAM,MAAM,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/D,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ProjectData } from '../domain';
|
|
2
2
|
import { LoaderError } from './models';
|
|
3
|
+
export declare const LINK_LIKE: RegExp;
|
|
3
4
|
export declare class Validator {
|
|
4
5
|
private readonly loaderErrors;
|
|
5
6
|
private readonly metaErrors;
|
|
@@ -16,7 +17,7 @@ export declare class Validator {
|
|
|
16
17
|
private validateMetaTrees;
|
|
17
18
|
private validateFeatures;
|
|
18
19
|
private validateFeature;
|
|
19
|
-
private
|
|
20
|
+
private validateAssertions;
|
|
20
21
|
private validateFeatureLinks;
|
|
21
22
|
private validateLinks;
|
|
22
23
|
private validateCode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,WAAW,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,EAYL,WAAW,EAKZ,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,WAAW,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,EAYL,WAAW,EAKZ,MAAM,UAAU,CAAC;AAKlB,eAAO,MAAM,SAAS,QAAuC,CAAC;AAE9D,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgC;IAC9D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoC;IACpE,OAAO,CAAC,YAAY,CAAM;IAE1B,IAAI,iBAAiB,IAAI,OAAO,CAO/B;IAED,WAAW;IAcX,mBAAmB,CACjB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC;IAKnC,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAQtD,QAAQ,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,WAAW;IASnE,OAAO,CAAC,sBAAsB;IAqC9B,OAAO,CAAC,2BAA2B;IA4BnC,OAAO,CAAC,iBAAiB;IAoDzB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,eAAe;IA+CvB,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,oBAAoB;IAmD5B,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,YAAY;CAKrB;AAED,eAAO,MAAM,cAAc,UAClB,OAAO,YACJ,MAAM,YACN,WAAW,CAAC,UAAU,CAAC,KAChC,WAcF,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getLoaderError = exports.Validator = void 0;
|
|
3
|
+
exports.getLoaderError = exports.Validator = exports.LINK_LIKE = void 0;
|
|
4
4
|
const models_1 = require("./models");
|
|
5
5
|
const renderer_1 = require("./renderer");
|
|
6
6
|
const CODE_REGEX = /^[A-Za-z][A-Za-z0-9-_]*$/;
|
|
7
7
|
// named group <link> is used to capture and validate link key
|
|
8
|
-
|
|
8
|
+
exports.LINK_LIKE = /\$(?<link>[A-Za-z][A-Za-z0-9-_]*)/g;
|
|
9
9
|
class Validator {
|
|
10
10
|
constructor() {
|
|
11
11
|
this.loaderErrors = new Array();
|
|
@@ -202,10 +202,10 @@ class Validator {
|
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
|
-
errors.push(...this.
|
|
205
|
+
errors.push(...this.validateAssertions(feature));
|
|
206
206
|
return errors;
|
|
207
207
|
}
|
|
208
|
-
|
|
208
|
+
validateAssertions(feature) {
|
|
209
209
|
const errors = new Array();
|
|
210
210
|
for (const assertionGroup of feature.groups) {
|
|
211
211
|
const assertionsUnique = new Set();
|
|
@@ -243,7 +243,7 @@ class Validator {
|
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
245
|
validateLinks(value, field, feature, featuresMap) {
|
|
246
|
-
const re = new RegExp(LINK_LIKE);
|
|
246
|
+
const re = new RegExp(exports.LINK_LIKE);
|
|
247
247
|
const errors = new Array();
|
|
248
248
|
let match;
|
|
249
249
|
while ((match = re.exec(value)) !== null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/lib/validators/validator.ts"],"names":[],"mappings":";;;AAGA,qCAiBkB;AAClB,yCAAqD;AAErD,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAC9C,8DAA8D;
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/lib/validators/validator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "spec-box-tms-sync",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"bin": {
|
|
6
6
|
"spec-box": "./bin/spec-box"
|
|
@@ -22,12 +22,14 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@azure/core-client": "^1.7.3",
|
|
24
24
|
"@azure/core-rest-pipeline": "^1.11.0",
|
|
25
|
+
"@types/xml2js": "0.4.14",
|
|
25
26
|
"chalk": "^4.1.0",
|
|
26
27
|
"fast-glob": "^3.3.0",
|
|
27
28
|
"fp-ts": "^2.16.0",
|
|
28
29
|
"fs-extra": "^11.1.1",
|
|
29
30
|
"io-ts": "^2.2.20",
|
|
30
31
|
"tslib": "^2.6.0",
|
|
32
|
+
"xml2js": "0.6.2",
|
|
31
33
|
"yaml": "^2.3.1",
|
|
32
34
|
"yargs": "^17.7.2"
|
|
33
35
|
},
|
package/dist/lib/jest/index.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { ProjectData } from '../domain';
|
|
2
|
-
import { Validator } from '../validators';
|
|
3
|
-
import { JestReport } from './models';
|
|
4
|
-
export declare const getFullName: (...parts: string[]) => string;
|
|
5
|
-
export declare const ignoredStatuses: Set<"todo" | "passed" | "failed" | "pending" | "skipped">;
|
|
6
|
-
export declare const applyJestReport: (validationContext: Validator, { features, attributes }: ProjectData, report: JestReport, keyParts: string[]) => void;
|
|
7
|
-
export declare const loadJestReport: (path: string, basePath?: string) => Promise<{
|
|
8
|
-
startTime: number;
|
|
9
|
-
numTotalTests: number;
|
|
10
|
-
testResults: {
|
|
11
|
-
name: string;
|
|
12
|
-
status: "passed" | "failed" | "pending" | "focused" | "skipped";
|
|
13
|
-
message: string;
|
|
14
|
-
startTime: number;
|
|
15
|
-
endTime: number;
|
|
16
|
-
assertionResults: {
|
|
17
|
-
title: string;
|
|
18
|
-
fullName: string;
|
|
19
|
-
ancestorTitles: string[];
|
|
20
|
-
status: "todo" | "passed" | "failed" | "pending" | "skipped";
|
|
21
|
-
}[];
|
|
22
|
-
}[];
|
|
23
|
-
}>;
|
|
24
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/jest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAGZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAuB,UAAU,EAAqB,MAAM,UAAU,CAAC;AAE9E,eAAO,MAAM,WAAW,aAAc,MAAM,EAAE,WAAsB,CAAC;AAErE,eAAO,MAAM,eAAe,2DAA+D,CAAC;AAE5F,eAAO,MAAM,eAAe,sBACP,SAAS,4BACF,WAAW,UAC7B,UAAU,YACR,MAAM,EAAE,SAuDnB,CAAC;AAEF,eAAO,MAAM,cAAc,SAAgB,MAAM,aAAa,MAAM;;;;;;;;;;;;;;;;EAOnE,CAAC"}
|
package/dist/lib/jest/index.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loadJestReport = exports.applyJestReport = exports.ignoredStatuses = exports.getFullName = void 0;
|
|
4
|
-
const domain_1 = require("../domain");
|
|
5
|
-
const utils_1 = require("../utils");
|
|
6
|
-
const models_1 = require("./models");
|
|
7
|
-
const getFullName = (...parts) => parts.join(' / ');
|
|
8
|
-
exports.getFullName = getFullName;
|
|
9
|
-
exports.ignoredStatuses = new Set(['pending', 'todo', 'skipped']);
|
|
10
|
-
const applyJestReport = (validationContext, { features, attributes }, report, keyParts) => {
|
|
11
|
-
const names = new Map();
|
|
12
|
-
// формируем список ключей тест-кейсов из отчета jest
|
|
13
|
-
for (let { assertionResults, name: path } of report.testResults) {
|
|
14
|
-
const assertions = assertionResults.filter(a => !exports.ignoredStatuses.has(a.status));
|
|
15
|
-
for (let { title, ancestorTitles } of assertions) {
|
|
16
|
-
const name = (0, exports.getFullName)(...ancestorTitles, title);
|
|
17
|
-
const pathes = names.get(name) || [];
|
|
18
|
-
pathes.push(path);
|
|
19
|
-
names.set(name, pathes);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
const attributesCtx = (0, domain_1.getAttributesContext)(attributes);
|
|
23
|
-
// заполняем поле isAutomated
|
|
24
|
-
for (let { title: featureTitle, code: featureCode, groups, fileName, filePath, attributes = {}, } of features) {
|
|
25
|
-
for (let { title: groupTitle, assertions } of groups || []) {
|
|
26
|
-
for (let assertion of assertions || []) {
|
|
27
|
-
// TODO: перенести в domain?
|
|
28
|
-
const assertionCtx = {
|
|
29
|
-
featureTitle,
|
|
30
|
-
featureCode,
|
|
31
|
-
groupTitle,
|
|
32
|
-
assertionTitle: assertion.title,
|
|
33
|
-
attributes,
|
|
34
|
-
fileName,
|
|
35
|
-
filePath,
|
|
36
|
-
};
|
|
37
|
-
const parts = (0, domain_1.getKey)(keyParts, assertionCtx, attributesCtx);
|
|
38
|
-
const fullName = (0, exports.getFullName)(...parts);
|
|
39
|
-
assertion.isAutomated = names.has(fullName);
|
|
40
|
-
names.delete(fullName);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
Array.from(names.keys()).forEach((name) => {
|
|
45
|
-
const pathes = names.get(name);
|
|
46
|
-
pathes === null || pathes === void 0 ? void 0 : pathes.forEach((path) => validationContext.registerJestUnusedTests(name, path));
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
exports.applyJestReport = applyJestReport;
|
|
50
|
-
const loadJestReport = async (path, basePath) => {
|
|
51
|
-
const json = await (0, utils_1.readTextFile)(path, basePath);
|
|
52
|
-
const data = JSON.parse(json);
|
|
53
|
-
const entity = (0, utils_1.parseObject)(data, models_1.jestReportDecoder);
|
|
54
|
-
return entity;
|
|
55
|
-
};
|
|
56
|
-
exports.loadJestReport = loadJestReport;
|
|
57
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/jest/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/lib/jest/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AAEnC,eAAO,MAAM,sBAAsB,6EAMlC,CAAC;AAEF,eAAO,MAAM,0BAA0B,0EAMtC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;EAKrC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAOhC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;EAI5B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
|