@featurevisor/core 0.53.2 → 0.53.3
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/.eslintcache +1 -1
- package/CHANGELOG.md +8 -0
- package/coverage/clover.xml +2 -2
- package/coverage/lcov-report/index.html +1 -1
- package/coverage/lcov-report/lib/builder/allocator.js.html +1 -1
- package/coverage/lcov-report/lib/builder/index.html +1 -1
- package/coverage/lcov-report/lib/builder/traffic.js.html +1 -1
- package/coverage/lcov-report/src/builder/allocator.ts.html +1 -1
- package/coverage/lcov-report/src/builder/index.html +1 -1
- package/coverage/lcov-report/src/builder/traffic.ts.html +1 -1
- package/lib/builder/buildDatafile.d.ts +1 -1
- package/lib/builder/buildDatafile.js +241 -168
- package/lib/builder/buildDatafile.js.map +1 -1
- package/lib/builder/buildProject.d.ts +1 -1
- package/lib/builder/buildProject.js +99 -40
- package/lib/builder/buildProject.js.map +1 -1
- package/lib/builder/getFeatureRanges.d.ts +1 -1
- package/lib/builder/getFeatureRanges.js +92 -31
- package/lib/builder/getFeatureRanges.js.map +1 -1
- package/lib/datasource/datasource.d.ts +16 -16
- package/lib/datasource/datasource.js +123 -67
- package/lib/datasource/datasource.js.map +1 -1
- package/lib/find-duplicate-segments/findDuplicateSegments.d.ts +1 -1
- package/lib/find-duplicate-segments/findDuplicateSegments.js +75 -18
- package/lib/find-duplicate-segments/findDuplicateSegments.js.map +1 -1
- package/lib/find-duplicate-segments/index.d.ts +1 -1
- package/lib/find-duplicate-segments/index.js +56 -9
- package/lib/find-duplicate-segments/index.js.map +1 -1
- package/lib/generate-code/index.d.ts +1 -1
- package/lib/generate-code/index.js +67 -23
- package/lib/generate-code/index.js.map +1 -1
- package/lib/generate-code/typescript.d.ts +1 -1
- package/lib/generate-code/typescript.js +139 -72
- package/lib/generate-code/typescript.js.map +1 -1
- package/lib/linter/checkCircularDependency.d.ts +1 -1
- package/lib/linter/checkCircularDependency.js +78 -22
- package/lib/linter/checkCircularDependency.js.map +1 -1
- package/lib/linter/groupSchema.js +79 -28
- package/lib/linter/groupSchema.js.map +1 -1
- package/lib/linter/lintProject.js +122 -101
- package/lib/linter/lintProject.js.map +1 -1
- package/lib/restore.d.ts +1 -1
- package/lib/restore.js +53 -11
- package/lib/restore.js.map +1 -1
- package/lib/site/exportSite.d.ts +1 -1
- package/lib/site/exportSite.js +64 -21
- package/lib/site/exportSite.js.map +1 -1
- package/lib/site/generateSiteSearchIndex.d.ts +1 -1
- package/lib/site/generateSiteSearchIndex.js +203 -111
- package/lib/site/generateSiteSearchIndex.js.map +1 -1
- package/lib/tester/testFeature.d.ts +1 -1
- package/lib/tester/testFeature.js +127 -59
- package/lib/tester/testFeature.js.map +1 -1
- package/lib/tester/testProject.d.ts +1 -1
- package/lib/tester/testProject.js +105 -48
- package/lib/tester/testProject.js.map +1 -1
- package/lib/tester/testSegment.d.ts +1 -1
- package/lib/tester/testSegment.js +69 -21
- package/lib/tester/testSegment.js.map +1 -1
- package/package.json +2 -2
- package/src/builder/buildDatafile.ts +9 -9
- package/src/builder/buildProject.ts +2 -2
- package/src/builder/getFeatureRanges.ts +4 -4
- package/src/datasource/datasource.ts +22 -69
- package/src/find-duplicate-segments/findDuplicateSegments.ts +9 -6
- package/src/find-duplicate-segments/index.ts +5 -2
- package/src/generate-code/index.ts +2 -2
- package/src/generate-code/typescript.ts +42 -25
- package/src/linter/checkCircularDependency.ts +4 -4
- package/src/linter/groupSchema.ts +3 -3
- package/src/linter/lintProject.ts +39 -39
- package/src/restore.ts +1 -1
- package/src/site/exportSite.ts +2 -2
- package/src/site/generateSiteSearchIndex.ts +14 -14
- package/src/tester/testFeature.ts +8 -6
- package/src/tester/testProject.ts +8 -5
- package/src/tester/testSegment.ts +3 -3
|
@@ -12,24 +12,26 @@ import { checkIfArraysAreEqual } from "./checkIfArraysAreEqual";
|
|
|
12
12
|
import { checkIfObjectsAreEqual } from "./checkIfObjectsAreEqual";
|
|
13
13
|
import { CLI_FORMAT_BOLD, CLI_FORMAT_RED } from "./cliFormat";
|
|
14
14
|
|
|
15
|
-
export function testFeature(
|
|
15
|
+
export async function testFeature(
|
|
16
16
|
datasource: Datasource,
|
|
17
17
|
projectConfig: ProjectConfig,
|
|
18
18
|
test: TestFeature,
|
|
19
|
-
): boolean {
|
|
19
|
+
): Promise<boolean> {
|
|
20
20
|
let hasError = false;
|
|
21
21
|
const featureKey = test.feature;
|
|
22
22
|
|
|
23
23
|
console.log(CLI_FORMAT_BOLD, ` Feature "${featureKey}":`);
|
|
24
24
|
|
|
25
|
-
test.assertions.
|
|
25
|
+
for (let aIndex = 0; aIndex < test.assertions.length; aIndex++) {
|
|
26
|
+
const assertion = test.assertions[aIndex];
|
|
26
27
|
const description = assertion.description || `at ${assertion.at}%`;
|
|
27
28
|
|
|
28
29
|
console.log(` Assertion #${aIndex + 1}: (${assertion.environment}) ${description}`);
|
|
29
30
|
|
|
30
|
-
const
|
|
31
|
+
const requiredChain = await datasource.getRequiredFeaturesChain(test.feature);
|
|
32
|
+
const featuresToInclude = Array.from(requiredChain);
|
|
31
33
|
|
|
32
|
-
const datafileContent = buildDatafile(
|
|
34
|
+
const datafileContent = await buildDatafile(
|
|
33
35
|
projectConfig,
|
|
34
36
|
datasource,
|
|
35
37
|
{
|
|
@@ -110,7 +112,7 @@ export function testFeature(
|
|
|
110
112
|
}
|
|
111
113
|
});
|
|
112
114
|
}
|
|
113
|
-
}
|
|
115
|
+
}
|
|
114
116
|
|
|
115
117
|
return hasError;
|
|
116
118
|
}
|
|
@@ -9,7 +9,10 @@ import { testSegment } from "./testSegment";
|
|
|
9
9
|
import { testFeature } from "./testFeature";
|
|
10
10
|
import { CLI_FORMAT_BOLD, CLI_FORMAT_GREEN, CLI_FORMAT_RED } from "./cliFormat";
|
|
11
11
|
|
|
12
|
-
export function testProject(
|
|
12
|
+
export async function testProject(
|
|
13
|
+
rootDirectoryPath: string,
|
|
14
|
+
projectConfig: ProjectConfig,
|
|
15
|
+
): Promise<boolean> {
|
|
13
16
|
let hasError = false;
|
|
14
17
|
const datasource = new Datasource(projectConfig);
|
|
15
18
|
|
|
@@ -20,7 +23,7 @@ export function testProject(rootDirectoryPath: string, projectConfig: ProjectCon
|
|
|
20
23
|
return hasError;
|
|
21
24
|
}
|
|
22
25
|
|
|
23
|
-
const testFiles = datasource.listTests();
|
|
26
|
+
const testFiles = await datasource.listTests();
|
|
24
27
|
|
|
25
28
|
if (testFiles.length === 0) {
|
|
26
29
|
console.error(`No tests found in: ${projectConfig.testsDirectoryPath}`);
|
|
@@ -35,13 +38,13 @@ export function testProject(rootDirectoryPath: string, projectConfig: ProjectCon
|
|
|
35
38
|
console.log("");
|
|
36
39
|
console.log(CLI_FORMAT_BOLD, `Testing: ${testFilePath.replace(rootDirectoryPath, "")}`);
|
|
37
40
|
|
|
38
|
-
const t = datasource.readTest(testFile);
|
|
41
|
+
const t = await datasource.readTest(testFile);
|
|
39
42
|
|
|
40
43
|
if ((t as TestSegment).segment) {
|
|
41
44
|
// segment testing
|
|
42
45
|
const test = t as TestSegment;
|
|
43
46
|
|
|
44
|
-
const segmentHasError = testSegment(datasource, test);
|
|
47
|
+
const segmentHasError = await testSegment(datasource, test);
|
|
45
48
|
|
|
46
49
|
if (segmentHasError) {
|
|
47
50
|
hasError = true;
|
|
@@ -50,7 +53,7 @@ export function testProject(rootDirectoryPath: string, projectConfig: ProjectCon
|
|
|
50
53
|
// feature testing
|
|
51
54
|
const test = t as TestFeature;
|
|
52
55
|
|
|
53
|
-
const featureHasError = testFeature(datasource, projectConfig, test);
|
|
56
|
+
const featureHasError = await testFeature(datasource, projectConfig, test);
|
|
54
57
|
|
|
55
58
|
if (featureHasError) {
|
|
56
59
|
hasError = true;
|
|
@@ -5,14 +5,14 @@ import { Datasource } from "../datasource";
|
|
|
5
5
|
|
|
6
6
|
import { CLI_FORMAT_BOLD, CLI_FORMAT_RED } from "./cliFormat";
|
|
7
7
|
|
|
8
|
-
export function testSegment(datasource: Datasource, test: TestSegment): boolean {
|
|
8
|
+
export async function testSegment(datasource: Datasource, test: TestSegment): Promise<boolean> {
|
|
9
9
|
let hasError = false;
|
|
10
10
|
|
|
11
11
|
const segmentKey = test.segment;
|
|
12
12
|
|
|
13
13
|
console.log(CLI_FORMAT_BOLD, ` Segment "${segmentKey}":`);
|
|
14
14
|
|
|
15
|
-
const segmentExists = datasource.entityExists("segment", segmentKey);
|
|
15
|
+
const segmentExists = await datasource.entityExists("segment", segmentKey);
|
|
16
16
|
|
|
17
17
|
if (!segmentExists) {
|
|
18
18
|
console.error(CLI_FORMAT_RED, ` Segment does not exist: ${segmentKey}`);
|
|
@@ -21,7 +21,7 @@ export function testSegment(datasource: Datasource, test: TestSegment): boolean
|
|
|
21
21
|
return hasError;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
const parsedSegment = datasource.readSegment(segmentKey);
|
|
24
|
+
const parsedSegment = await datasource.readSegment(segmentKey);
|
|
25
25
|
const conditions = parsedSegment.conditions as Condition | Condition[];
|
|
26
26
|
|
|
27
27
|
test.assertions.forEach(function (assertion, aIndex) {
|