@featurevisor/core 1.2.3 → 1.2.4
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/lib/tester/checkIfObjectsAreEqual.js.html +1 -1
- package/coverage/lcov-report/lib/tester/index.html +1 -1
- package/coverage/lcov-report/lib/tester/matrix.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/coverage/lcov-report/src/tester/checkIfObjectsAreEqual.ts.html +1 -1
- package/coverage/lcov-report/src/tester/index.html +1 -1
- package/coverage/lcov-report/src/tester/matrix.ts.html +1 -1
- package/lib/tester/testProject.d.ts +12 -0
- package/lib/tester/testProject.js +72 -49
- package/lib/tester/testProject.js.map +1 -1
- package/package.json +2 -2
- package/src/tester/testProject.ts +83 -49
package/.eslintcache
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.spec.ts":"1","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.ts":"2","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildDatafile.ts":"3","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildProject.ts":"4","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/getFeatureRanges.ts":"5","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/index.ts":"6","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.spec.ts":"7","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.ts":"8","/home/runner/work/featurevisor/featurevisor/packages/core/src/config/index.ts":"9","/home/runner/work/featurevisor/featurevisor/packages/core/src/config/parsers.ts":"10","/home/runner/work/featurevisor/featurevisor/packages/core/src/config/projectConfig.ts":"11","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/adapter.ts":"12","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/datasource.ts":"13","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/filesystemAdapter.ts":"14","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/index.ts":"15","/home/runner/work/featurevisor/featurevisor/packages/core/src/dependencies.ts":"16","/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/findDuplicateSegments.ts":"17","/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/index.ts":"18","/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/index.ts":"19","/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/typescript.ts":"20","/home/runner/work/featurevisor/featurevisor/packages/core/src/index.ts":"21","/home/runner/work/featurevisor/featurevisor/packages/core/src/init/index.ts":"22","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/attributeSchema.ts":"23","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/checkCircularDependency.ts":"24","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/conditionSchema.ts":"25","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/featureSchema.ts":"26","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/groupSchema.ts":"27","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/index.ts":"28","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/lintProject.ts":"29","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/printJoiError.ts":"30","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/segmentSchema.ts":"31","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/testSchema.ts":"32","/home/runner/work/featurevisor/featurevisor/packages/core/src/restore/index.ts":"33","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/exportSite.ts":"34","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateHistory.ts":"35","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateSiteSearchIndex.ts":"36","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getLastModifiedFromHistory.ts":"37","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getOwnerAndRepoFromUrl.ts":"38","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRelativePaths.ts":"39","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRepoDetails.ts":"40","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/index.ts":"41","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/serveSite.ts":"42","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfArraysAreEqual.ts":"43","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.spec.ts":"44","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.ts":"45","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/cliFormat.ts":"46","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/index.ts":"47","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.spec.ts":"48","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.ts":"49","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/prettyDuration.ts":"50","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/printTestResult.ts":"51","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testFeature.ts":"52","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testProject.ts":"53","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testSegment.ts":"54","/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/extractKeys.ts":"55","/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/git.ts":"56","/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/index.ts":"57"},{"size":3214,"mtime":1705597787936,"results":"58","hashOfConfig":"59"},{"size":1014,"mtime":1705597787936,"results":"60","hashOfConfig":"59"},{"size":8883,"mtime":1705597787936,"results":"61","hashOfConfig":"59"},{"size":1359,"mtime":1705597787936,"results":"62","hashOfConfig":"59"},{"size":1755,"mtime":1705597787936,"results":"63","hashOfConfig":"59"},{"size":65,"mtime":1705597787936,"results":"64","hashOfConfig":"59"},{"size":12889,"mtime":1705597787936,"results":"65","hashOfConfig":"59"},{"size":5052,"mtime":1705597787936,"results":"66","hashOfConfig":"59"},{"size":60,"mtime":1705597787936,"results":"67","hashOfConfig":"59"},{"size":1035,"mtime":1705597787936,"results":"68","hashOfConfig":"59"},{"size":3464,"mtime":1705597787936,"results":"69","hashOfConfig":"59"},{"size":1305,"mtime":1705597787936,"results":"70","hashOfConfig":"59"},{"size":5028,"mtime":1705597787936,"results":"71","hashOfConfig":"59"},{"size":9261,"mtime":1705597787940,"results":"72","hashOfConfig":"59"},{"size":94,"mtime":1705597787940,"results":"73","hashOfConfig":"59"},{"size":279,"mtime":1705597787940,"results":"74","hashOfConfig":"59"},{"size":1033,"mtime":1705597787940,"results":"75","hashOfConfig":"59"},{"size":540,"mtime":1705597787940,"results":"76","hashOfConfig":"59"},{"size":1476,"mtime":1705597787940,"results":"77","hashOfConfig":"59"},{"size":6250,"mtime":1705597787940,"results":"78","hashOfConfig":"59"},{"size":318,"mtime":1705597787940,"results":"79","hashOfConfig":"59"},{"size":1308,"mtime":1705597787940,"results":"80","hashOfConfig":"59"},{"size":351,"mtime":1705597787940,"results":"81","hashOfConfig":"59"},{"size":1119,"mtime":1705597787940,"results":"82","hashOfConfig":"59"},{"size":3003,"mtime":1705597787940,"results":"83","hashOfConfig":"59"},{"size":5833,"mtime":1705597787940,"results":"84","hashOfConfig":"59"},{"size":2114,"mtime":1705597787940,"results":"85","hashOfConfig":"59"},{"size":31,"mtime":1705597787940,"results":"86","hashOfConfig":"59"},{"size":4524,"mtime":1705597787940,"results":"87","hashOfConfig":"59"},{"size":323,"mtime":1705597787940,"results":"88","hashOfConfig":"59"},{"size":368,"mtime":1705597787940,"results":"89","hashOfConfig":"59"},{"size":1890,"mtime":1705597787940,"results":"90","hashOfConfig":"59"},{"size":641,"mtime":1705597787940,"results":"91","hashOfConfig":"59"},{"size":1481,"mtime":1705597787940,"results":"92","hashOfConfig":"59"},{"size":1178,"mtime":1705597787940,"results":"93","hashOfConfig":"59"},{"size":6187,"mtime":1705597787940,"results":"94","hashOfConfig":"59"},{"size":516,"mtime":1705597787940,"results":"95","hashOfConfig":"59"},{"size":496,"mtime":1705597787940,"results":"96","hashOfConfig":"59"},{"size":607,"mtime":1705597787940,"results":"97","hashOfConfig":"59"},{"size":1560,"mtime":1705597787940,"results":"98","hashOfConfig":"59"},{"size":59,"mtime":1705597787940,"results":"99","hashOfConfig":"59"},{"size":1681,"mtime":1705597787940,"results":"100","hashOfConfig":"59"},{"size":298,"mtime":1705597787940,"results":"101","hashOfConfig":"59"},{"size":932,"mtime":1705597787940,"results":"102","hashOfConfig":"59"},{"size":468,"mtime":1705597787940,"results":"103","hashOfConfig":"59"},{"size":156,"mtime":1705597787940,"results":"104","hashOfConfig":"59"},{"size":31,"mtime":1705597787940,"results":"105","hashOfConfig":"59"},{"size":1188,"mtime":1705597787940,"results":"106","hashOfConfig":"59"},{"size":5021,"mtime":1705597787940,"results":"107","hashOfConfig":"59"},{"size":516,"mtime":1705597787940,"results":"108","hashOfConfig":"59"},{"size":1691,"mtime":1705597787940,"results":"109","hashOfConfig":"59"},{"size":7060,"mtime":1705597787940,"results":"110","hashOfConfig":"59"},{"size":3900,"mtime":1705597787940,"results":"111","hashOfConfig":"59"},{"size":2273,"mtime":1705597787940,"results":"112","hashOfConfig":"59"},{"size":1993,"mtime":1705597787940,"results":"113","hashOfConfig":"59"},{"size":3641,"mtime":1705597787940,"results":"114","hashOfConfig":"59"},{"size":54,"mtime":1705597787940,"results":"115","hashOfConfig":"59"},{"filePath":"116","messages":"117","suppressedMessages":"118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"o8ti19",{"filePath":"119","messages":"120","suppressedMessages":"121","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"122","messages":"123","suppressedMessages":"124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"125","messages":"126","suppressedMessages":"127","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"128","messages":"129","suppressedMessages":"130","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"131","messages":"132","suppressedMessages":"133","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"134","messages":"135","suppressedMessages":"136","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"137","messages":"138","suppressedMessages":"139","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"140","messages":"141","suppressedMessages":"142","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"143","messages":"144","suppressedMessages":"145","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"146","messages":"147","suppressedMessages":"148","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"149","messages":"150","suppressedMessages":"151","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"152","messages":"153","suppressedMessages":"154","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"155","messages":"156","suppressedMessages":"157","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"158","messages":"159","suppressedMessages":"160","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"161","messages":"162","suppressedMessages":"163","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"164","messages":"165","suppressedMessages":"166","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"167","messages":"168","suppressedMessages":"169","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"170","messages":"171","suppressedMessages":"172","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"173","messages":"174","suppressedMessages":"175","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"176","messages":"177","suppressedMessages":"178","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"179","messages":"180","suppressedMessages":"181","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"182","messages":"183","suppressedMessages":"184","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"185","messages":"186","suppressedMessages":"187","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"188","messages":"189","suppressedMessages":"190","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"191","messages":"192","suppressedMessages":"193","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"194","messages":"195","suppressedMessages":"196","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"197","messages":"198","suppressedMessages":"199","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"200","messages":"201","suppressedMessages":"202","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"203","messages":"204","suppressedMessages":"205","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"206","messages":"207","suppressedMessages":"208","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"209","messages":"210","suppressedMessages":"211","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"212","messages":"213","suppressedMessages":"214","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"215","messages":"216","suppressedMessages":"217","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"218","messages":"219","suppressedMessages":"220","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"221","messages":"222","suppressedMessages":"223","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"224","messages":"225","suppressedMessages":"226","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"227","messages":"228","suppressedMessages":"229","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"230","messages":"231","suppressedMessages":"232","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"233","messages":"234","suppressedMessages":"235","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"236","messages":"237","suppressedMessages":"238","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"239","messages":"240","suppressedMessages":"241","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"242","messages":"243","suppressedMessages":"244","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"245","messages":"246","suppressedMessages":"247","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"248","messages":"249","suppressedMessages":"250","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"251","messages":"252","suppressedMessages":"253","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"254","messages":"255","suppressedMessages":"256","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"257","messages":"258","suppressedMessages":"259","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"260","messages":"261","suppressedMessages":"262","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"263","messages":"264","suppressedMessages":"265","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"266","messages":"267","suppressedMessages":"268","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"269","messages":"270","suppressedMessages":"271","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"272","messages":"273","suppressedMessages":"274","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"275","messages":"276","suppressedMessages":"277","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"278","messages":"279","suppressedMessages":"280","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"281","messages":"282","suppressedMessages":"283","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"284","messages":"285","suppressedMessages":"286","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildDatafile.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildProject.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/getFeatureRanges.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/config/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/config/parsers.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/config/projectConfig.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/adapter.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/datasource.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/filesystemAdapter.ts",[],["287","288"],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/dependencies.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/findDuplicateSegments.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/typescript.ts",[],["289"],"/home/runner/work/featurevisor/featurevisor/packages/core/src/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/init/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/attributeSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/checkCircularDependency.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/conditionSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/featureSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/groupSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/lintProject.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/printJoiError.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/segmentSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/testSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/restore/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/exportSite.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateHistory.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateSiteSearchIndex.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getLastModifiedFromHistory.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getOwnerAndRepoFromUrl.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRelativePaths.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRepoDetails.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/serveSite.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfArraysAreEqual.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/cliFormat.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/prettyDuration.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/printTestResult.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testFeature.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testProject.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testSegment.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/extractKeys.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/git.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/index.ts",[],[],{"ruleId":"290","severity":2,"message":"291","line":22,"column":7,"nodeType":"292","messageId":"293","endLine":22,"endColumn":18,"suppressions":"294"},{"ruleId":"295","severity":2,"message":"296","line":22,"column":21,"nodeType":"297","messageId":"298","endLine":22,"endColumn":81,"fix":"299","suppressions":"300"},{"ruleId":"290","severity":2,"message":"301","line":51,"column":10,"nodeType":"292","messageId":"293","endLine":51,"endColumn":38,"suppressions":"302"},"@typescript-eslint/no-unused-vars","'commitRegex' is assigned a value but never used.","Identifier","unusedVar",["303"],"no-regex-spaces","Spaces are hard to count. Use {3}.","Literal","multipleSpaces",{"range":"304","text":"305"},["306"],"'getFeaturevisorTypeFromValue' is defined but never used.",["307"],{"kind":"308","justification":"309"},[515,518]," {3}",{"kind":"308","justification":"309"},{"kind":"308","justification":"309"},"directive",""]
|
|
1
|
+
[{"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.spec.ts":"1","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.ts":"2","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildDatafile.ts":"3","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildProject.ts":"4","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/getFeatureRanges.ts":"5","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/index.ts":"6","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.spec.ts":"7","/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.ts":"8","/home/runner/work/featurevisor/featurevisor/packages/core/src/config/index.ts":"9","/home/runner/work/featurevisor/featurevisor/packages/core/src/config/parsers.ts":"10","/home/runner/work/featurevisor/featurevisor/packages/core/src/config/projectConfig.ts":"11","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/adapter.ts":"12","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/datasource.ts":"13","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/filesystemAdapter.ts":"14","/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/index.ts":"15","/home/runner/work/featurevisor/featurevisor/packages/core/src/dependencies.ts":"16","/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/findDuplicateSegments.ts":"17","/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/index.ts":"18","/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/index.ts":"19","/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/typescript.ts":"20","/home/runner/work/featurevisor/featurevisor/packages/core/src/index.ts":"21","/home/runner/work/featurevisor/featurevisor/packages/core/src/init/index.ts":"22","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/attributeSchema.ts":"23","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/checkCircularDependency.ts":"24","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/conditionSchema.ts":"25","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/featureSchema.ts":"26","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/groupSchema.ts":"27","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/index.ts":"28","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/lintProject.ts":"29","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/printJoiError.ts":"30","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/segmentSchema.ts":"31","/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/testSchema.ts":"32","/home/runner/work/featurevisor/featurevisor/packages/core/src/restore/index.ts":"33","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/exportSite.ts":"34","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateHistory.ts":"35","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateSiteSearchIndex.ts":"36","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getLastModifiedFromHistory.ts":"37","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getOwnerAndRepoFromUrl.ts":"38","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRelativePaths.ts":"39","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRepoDetails.ts":"40","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/index.ts":"41","/home/runner/work/featurevisor/featurevisor/packages/core/src/site/serveSite.ts":"42","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfArraysAreEqual.ts":"43","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.spec.ts":"44","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.ts":"45","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/cliFormat.ts":"46","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/index.ts":"47","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.spec.ts":"48","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.ts":"49","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/prettyDuration.ts":"50","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/printTestResult.ts":"51","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testFeature.ts":"52","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testProject.ts":"53","/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testSegment.ts":"54","/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/extractKeys.ts":"55","/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/git.ts":"56","/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/index.ts":"57"},{"size":3214,"mtime":1705710258264,"results":"58","hashOfConfig":"59"},{"size":1014,"mtime":1705710258264,"results":"60","hashOfConfig":"59"},{"size":8883,"mtime":1705710258264,"results":"61","hashOfConfig":"59"},{"size":1359,"mtime":1705710258264,"results":"62","hashOfConfig":"59"},{"size":1755,"mtime":1705710258264,"results":"63","hashOfConfig":"59"},{"size":65,"mtime":1705710258264,"results":"64","hashOfConfig":"59"},{"size":12889,"mtime":1705710258264,"results":"65","hashOfConfig":"59"},{"size":5052,"mtime":1705710258268,"results":"66","hashOfConfig":"59"},{"size":60,"mtime":1705710258268,"results":"67","hashOfConfig":"59"},{"size":1035,"mtime":1705710258268,"results":"68","hashOfConfig":"59"},{"size":3464,"mtime":1705710258268,"results":"69","hashOfConfig":"59"},{"size":1305,"mtime":1705710258268,"results":"70","hashOfConfig":"59"},{"size":5028,"mtime":1705710258268,"results":"71","hashOfConfig":"59"},{"size":9261,"mtime":1705710258268,"results":"72","hashOfConfig":"59"},{"size":94,"mtime":1705710258268,"results":"73","hashOfConfig":"59"},{"size":279,"mtime":1705710258268,"results":"74","hashOfConfig":"59"},{"size":1033,"mtime":1705710258268,"results":"75","hashOfConfig":"59"},{"size":540,"mtime":1705710258268,"results":"76","hashOfConfig":"59"},{"size":1476,"mtime":1705710258268,"results":"77","hashOfConfig":"59"},{"size":6250,"mtime":1705710258268,"results":"78","hashOfConfig":"59"},{"size":318,"mtime":1705710258268,"results":"79","hashOfConfig":"59"},{"size":1308,"mtime":1705710258268,"results":"80","hashOfConfig":"59"},{"size":351,"mtime":1705710258268,"results":"81","hashOfConfig":"59"},{"size":1119,"mtime":1705710258268,"results":"82","hashOfConfig":"59"},{"size":3003,"mtime":1705710258268,"results":"83","hashOfConfig":"59"},{"size":5833,"mtime":1705710258268,"results":"84","hashOfConfig":"59"},{"size":2114,"mtime":1705710258268,"results":"85","hashOfConfig":"59"},{"size":31,"mtime":1705710258268,"results":"86","hashOfConfig":"59"},{"size":4524,"mtime":1705710258268,"results":"87","hashOfConfig":"59"},{"size":323,"mtime":1705710258268,"results":"88","hashOfConfig":"59"},{"size":368,"mtime":1705710258268,"results":"89","hashOfConfig":"59"},{"size":1890,"mtime":1705710258268,"results":"90","hashOfConfig":"59"},{"size":641,"mtime":1705710258268,"results":"91","hashOfConfig":"59"},{"size":1481,"mtime":1705710258268,"results":"92","hashOfConfig":"59"},{"size":1178,"mtime":1705710258268,"results":"93","hashOfConfig":"59"},{"size":6187,"mtime":1705710258268,"results":"94","hashOfConfig":"59"},{"size":516,"mtime":1705710258268,"results":"95","hashOfConfig":"59"},{"size":496,"mtime":1705710258268,"results":"96","hashOfConfig":"59"},{"size":607,"mtime":1705710258268,"results":"97","hashOfConfig":"59"},{"size":1560,"mtime":1705710258268,"results":"98","hashOfConfig":"59"},{"size":59,"mtime":1705710258268,"results":"99","hashOfConfig":"59"},{"size":1681,"mtime":1705710258268,"results":"100","hashOfConfig":"59"},{"size":298,"mtime":1705710258268,"results":"101","hashOfConfig":"59"},{"size":932,"mtime":1705710258268,"results":"102","hashOfConfig":"59"},{"size":468,"mtime":1705710258268,"results":"103","hashOfConfig":"59"},{"size":156,"mtime":1705710258268,"results":"104","hashOfConfig":"59"},{"size":31,"mtime":1705710258268,"results":"105","hashOfConfig":"59"},{"size":1188,"mtime":1705710258268,"results":"106","hashOfConfig":"59"},{"size":5021,"mtime":1705710258268,"results":"107","hashOfConfig":"59"},{"size":516,"mtime":1705710258268,"results":"108","hashOfConfig":"59"},{"size":1691,"mtime":1705710258268,"results":"109","hashOfConfig":"59"},{"size":7060,"mtime":1705710258268,"results":"110","hashOfConfig":"59"},{"size":4420,"mtime":1705710258268,"results":"111","hashOfConfig":"59"},{"size":2273,"mtime":1705710258268,"results":"112","hashOfConfig":"59"},{"size":1993,"mtime":1705710258268,"results":"113","hashOfConfig":"59"},{"size":3641,"mtime":1705710258268,"results":"114","hashOfConfig":"59"},{"size":54,"mtime":1705710258268,"results":"115","hashOfConfig":"59"},{"filePath":"116","messages":"117","suppressedMessages":"118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"o8ti19",{"filePath":"119","messages":"120","suppressedMessages":"121","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"122","messages":"123","suppressedMessages":"124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"125","messages":"126","suppressedMessages":"127","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"128","messages":"129","suppressedMessages":"130","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"131","messages":"132","suppressedMessages":"133","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"134","messages":"135","suppressedMessages":"136","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"137","messages":"138","suppressedMessages":"139","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"140","messages":"141","suppressedMessages":"142","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"143","messages":"144","suppressedMessages":"145","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"146","messages":"147","suppressedMessages":"148","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"149","messages":"150","suppressedMessages":"151","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"152","messages":"153","suppressedMessages":"154","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"155","messages":"156","suppressedMessages":"157","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"158","messages":"159","suppressedMessages":"160","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"161","messages":"162","suppressedMessages":"163","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"164","messages":"165","suppressedMessages":"166","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"167","messages":"168","suppressedMessages":"169","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"170","messages":"171","suppressedMessages":"172","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"173","messages":"174","suppressedMessages":"175","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"176","messages":"177","suppressedMessages":"178","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"179","messages":"180","suppressedMessages":"181","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"182","messages":"183","suppressedMessages":"184","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"185","messages":"186","suppressedMessages":"187","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"188","messages":"189","suppressedMessages":"190","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"191","messages":"192","suppressedMessages":"193","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"194","messages":"195","suppressedMessages":"196","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"197","messages":"198","suppressedMessages":"199","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"200","messages":"201","suppressedMessages":"202","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"203","messages":"204","suppressedMessages":"205","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"206","messages":"207","suppressedMessages":"208","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"209","messages":"210","suppressedMessages":"211","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"212","messages":"213","suppressedMessages":"214","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"215","messages":"216","suppressedMessages":"217","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"218","messages":"219","suppressedMessages":"220","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"221","messages":"222","suppressedMessages":"223","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"224","messages":"225","suppressedMessages":"226","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"227","messages":"228","suppressedMessages":"229","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"230","messages":"231","suppressedMessages":"232","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"233","messages":"234","suppressedMessages":"235","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"236","messages":"237","suppressedMessages":"238","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"239","messages":"240","suppressedMessages":"241","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"242","messages":"243","suppressedMessages":"244","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"245","messages":"246","suppressedMessages":"247","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"248","messages":"249","suppressedMessages":"250","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"251","messages":"252","suppressedMessages":"253","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"254","messages":"255","suppressedMessages":"256","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"257","messages":"258","suppressedMessages":"259","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"260","messages":"261","suppressedMessages":"262","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"263","messages":"264","suppressedMessages":"265","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"266","messages":"267","suppressedMessages":"268","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"269","messages":"270","suppressedMessages":"271","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"272","messages":"273","suppressedMessages":"274","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"275","messages":"276","suppressedMessages":"277","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"278","messages":"279","suppressedMessages":"280","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"281","messages":"282","suppressedMessages":"283","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"284","messages":"285","suppressedMessages":"286","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildDatafile.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/buildProject.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/getFeatureRanges.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/config/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/config/parsers.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/config/projectConfig.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/adapter.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/datasource.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/filesystemAdapter.ts",[],["287","288"],"/home/runner/work/featurevisor/featurevisor/packages/core/src/datasource/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/dependencies.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/findDuplicateSegments.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/find-duplicate-segments/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/generate-code/typescript.ts",[],["289"],"/home/runner/work/featurevisor/featurevisor/packages/core/src/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/init/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/attributeSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/checkCircularDependency.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/conditionSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/featureSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/groupSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/lintProject.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/printJoiError.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/segmentSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/linter/testSchema.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/restore/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/exportSite.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateHistory.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/generateSiteSearchIndex.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getLastModifiedFromHistory.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getOwnerAndRepoFromUrl.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRelativePaths.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/getRepoDetails.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/site/serveSite.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfArraysAreEqual.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/checkIfObjectsAreEqual.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/cliFormat.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/index.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.spec.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/matrix.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/prettyDuration.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/printTestResult.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testFeature.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testProject.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/tester/testSegment.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/extractKeys.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/git.ts",[],[],"/home/runner/work/featurevisor/featurevisor/packages/core/src/utils/index.ts",[],[],{"ruleId":"290","severity":2,"message":"291","line":22,"column":7,"nodeType":"292","messageId":"293","endLine":22,"endColumn":18,"suppressions":"294"},{"ruleId":"295","severity":2,"message":"296","line":22,"column":21,"nodeType":"297","messageId":"298","endLine":22,"endColumn":81,"fix":"299","suppressions":"300"},{"ruleId":"290","severity":2,"message":"301","line":51,"column":10,"nodeType":"292","messageId":"293","endLine":51,"endColumn":38,"suppressions":"302"},"@typescript-eslint/no-unused-vars","'commitRegex' is assigned a value but never used.","Identifier","unusedVar",["303"],"no-regex-spaces","Spaces are hard to count. Use {3}.","Literal","multipleSpaces",{"range":"304","text":"305"},["306"],"'getFeaturevisorTypeFromValue' is defined but never used.",["307"],{"kind":"308","justification":"309"},[515,518]," {3}",{"kind":"308","justification":"309"},{"kind":"308","justification":"309"},"directive",""]
|
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [1.2.4](https://github.com/featurevisor/featurevisor/compare/v1.2.3...v1.2.4) (2024-01-20)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @featurevisor/core
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
## [1.2.3](https://github.com/featurevisor/featurevisor/compare/v1.2.2...v1.2.3) (2024-01-18)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package @featurevisor/core
|
package/coverage/clover.xml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<coverage generated="
|
|
3
|
-
<project timestamp="
|
|
2
|
+
<coverage generated="1705710397940" clover="3.2.0">
|
|
3
|
+
<project timestamp="1705710397940" name="All files">
|
|
4
4
|
<metrics statements="355" coveredstatements="236" conditionals="181" coveredconditionals="109" methods="52" coveredmethods="35" elements="588" coveredelements="380" complexity="0" loc="355" ncloc="355" packages="4" files="8" classes="8"/>
|
|
5
5
|
<package name="lib.builder">
|
|
6
6
|
<metrics statements="92" coveredstatements="87" conditionals="52" coveredconditionals="42" methods="14" coveredmethods="14"/>
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
147
147
|
Code coverage generated by
|
|
148
148
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
149
|
-
at 2024-01-
|
|
149
|
+
at 2024-01-20T00:26:37.902Z
|
|
150
150
|
</div>
|
|
151
151
|
<script src="prettify.js"></script>
|
|
152
152
|
<script>
|
|
@@ -175,7 +175,7 @@ exports.getUpdatedAvailableRangesAfterFilling = getUpdatedAvailableRangesAfterFi
|
|
|
175
175
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
176
176
|
Code coverage generated by
|
|
177
177
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
178
|
-
at 2024-01-
|
|
178
|
+
at 2024-01-20T00:26:37.902Z
|
|
179
179
|
</div>
|
|
180
180
|
<script src="../../prettify.js"></script>
|
|
181
181
|
<script>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
117
117
|
Code coverage generated by
|
|
118
118
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
119
|
-
at 2024-01-
|
|
119
|
+
at 2024-01-20T00:26:37.902Z
|
|
120
120
|
</div>
|
|
121
121
|
<script src="../../prettify.js"></script>
|
|
122
122
|
<script>
|
|
@@ -460,7 +460,7 @@ exports.getTraffic = getTraffic;
|
|
|
460
460
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
461
461
|
Code coverage generated by
|
|
462
462
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
463
|
-
at 2024-01-
|
|
463
|
+
at 2024-01-20T00:26:37.902Z
|
|
464
464
|
</div>
|
|
465
465
|
<script src="../../prettify.js"></script>
|
|
466
466
|
<script>
|
|
@@ -139,7 +139,7 @@ exports.checkIfObjectsAreEqual = checkIfObjectsAreEqual;
|
|
|
139
139
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
140
140
|
Code coverage generated by
|
|
141
141
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
142
|
-
at 2024-01-
|
|
142
|
+
at 2024-01-20T00:26:37.902Z
|
|
143
143
|
</div>
|
|
144
144
|
<script src="../../prettify.js"></script>
|
|
145
145
|
<script>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
117
117
|
Code coverage generated by
|
|
118
118
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
119
|
-
at 2024-01-
|
|
119
|
+
at 2024-01-20T00:26:37.902Z
|
|
120
120
|
</div>
|
|
121
121
|
<script src="../../prettify.js"></script>
|
|
122
122
|
<script>
|
|
@@ -472,7 +472,7 @@ exports.getSegmentAssertionsFromMatrix = getSegmentAssertionsFromMatrix;
|
|
|
472
472
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
473
473
|
Code coverage generated by
|
|
474
474
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
475
|
-
at 2024-01-
|
|
475
|
+
at 2024-01-20T00:26:37.902Z
|
|
476
476
|
</div>
|
|
477
477
|
<script src="../../prettify.js"></script>
|
|
478
478
|
<script>
|
|
@@ -193,7 +193,7 @@ export function getUpdatedAvailableRangesAfterFilling(
|
|
|
193
193
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
194
194
|
Code coverage generated by
|
|
195
195
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
196
|
-
at 2024-01-
|
|
196
|
+
at 2024-01-20T00:26:37.902Z
|
|
197
197
|
</div>
|
|
198
198
|
<script src="../../prettify.js"></script>
|
|
199
199
|
<script>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
117
117
|
Code coverage generated by
|
|
118
118
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
119
|
-
at 2024-01-
|
|
119
|
+
at 2024-01-20T00:26:37.902Z
|
|
120
120
|
</div>
|
|
121
121
|
<script src="../../prettify.js"></script>
|
|
122
122
|
<script>
|
|
@@ -574,7 +574,7 @@ export function getTraffic(
|
|
|
574
574
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
575
575
|
Code coverage generated by
|
|
576
576
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
577
|
-
at 2024-01-
|
|
577
|
+
at 2024-01-20T00:26:37.902Z
|
|
578
578
|
</div>
|
|
579
579
|
<script src="../../prettify.js"></script>
|
|
580
580
|
<script>
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
143
143
|
Code coverage generated by
|
|
144
144
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
145
|
-
at 2024-01-
|
|
145
|
+
at 2024-01-20T00:26:37.902Z
|
|
146
146
|
</div>
|
|
147
147
|
<script src="../../prettify.js"></script>
|
|
148
148
|
<script>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
117
117
|
Code coverage generated by
|
|
118
118
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
119
|
-
at 2024-01-
|
|
119
|
+
at 2024-01-20T00:26:37.902Z
|
|
120
120
|
</div>
|
|
121
121
|
<script src="../../prettify.js"></script>
|
|
122
122
|
<script>
|
|
@@ -625,7 +625,7 @@ export function <span class="fstat-no" title="function not covered" >getSegmentA
|
|
|
625
625
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
626
626
|
Code coverage generated by
|
|
627
627
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
628
|
-
at 2024-01-
|
|
628
|
+
at 2024-01-20T00:26:37.902Z
|
|
629
629
|
</div>
|
|
630
630
|
<script src="../../prettify.js"></script>
|
|
631
631
|
<script>
|
|
@@ -5,4 +5,16 @@ export interface TestProjectOptions {
|
|
|
5
5
|
verbose?: boolean;
|
|
6
6
|
showDatafile?: boolean;
|
|
7
7
|
}
|
|
8
|
+
export interface TestPatterns {
|
|
9
|
+
keyPattern?: RegExp;
|
|
10
|
+
assertionPattern?: RegExp;
|
|
11
|
+
}
|
|
12
|
+
export interface ExecutionResult {
|
|
13
|
+
passed: boolean;
|
|
14
|
+
assertionsCount: {
|
|
15
|
+
passed: number;
|
|
16
|
+
failed: number;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export declare function executeTest(testFile: string, deps: Dependencies, options: TestProjectOptions, patterns: TestPatterns): Promise<ExecutionResult | undefined>;
|
|
8
20
|
export declare function testProject(deps: Dependencies, options?: TestProjectOptions): Promise<boolean>;
|
|
@@ -36,21 +36,77 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.testProject = void 0;
|
|
39
|
+
exports.testProject = exports.executeTest = void 0;
|
|
40
40
|
var fs = require("fs");
|
|
41
41
|
var testSegment_1 = require("./testSegment");
|
|
42
42
|
var testFeature_1 = require("./testFeature");
|
|
43
43
|
var cliFormat_1 = require("./cliFormat");
|
|
44
44
|
var prettyDuration_1 = require("./prettyDuration");
|
|
45
45
|
var printTestResult_1 = require("./printTestResult");
|
|
46
|
+
function executeTest(testFile, deps, options, patterns) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
48
|
+
var datasource, projectConfig, rootDirectoryPath, testFilePath, t, tAsSegment, tAsFeature, key, type, executionResult, testResult;
|
|
49
|
+
return __generator(this, function (_a) {
|
|
50
|
+
switch (_a.label) {
|
|
51
|
+
case 0:
|
|
52
|
+
datasource = deps.datasource, projectConfig = deps.projectConfig, rootDirectoryPath = deps.rootDirectoryPath;
|
|
53
|
+
testFilePath = datasource.getTestSpecName(testFile);
|
|
54
|
+
return [4 /*yield*/, datasource.readTest(testFile)];
|
|
55
|
+
case 1:
|
|
56
|
+
t = _a.sent();
|
|
57
|
+
tAsSegment = t;
|
|
58
|
+
tAsFeature = t;
|
|
59
|
+
key = tAsSegment.segment || tAsFeature.feature;
|
|
60
|
+
type = tAsSegment.segment ? "segment" : "feature";
|
|
61
|
+
executionResult = {
|
|
62
|
+
passed: true,
|
|
63
|
+
assertionsCount: {
|
|
64
|
+
passed: 0,
|
|
65
|
+
failed: 0,
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
if (!key) {
|
|
69
|
+
console.error(" => Invalid test: ".concat(JSON.stringify(t)));
|
|
70
|
+
executionResult.passed = false;
|
|
71
|
+
return [2 /*return*/, executionResult];
|
|
72
|
+
}
|
|
73
|
+
if (patterns.keyPattern && !patterns.keyPattern.test(key)) {
|
|
74
|
+
return [2 /*return*/];
|
|
75
|
+
}
|
|
76
|
+
if (!(type === "segment")) return [3 /*break*/, 3];
|
|
77
|
+
return [4 /*yield*/, (0, testSegment_1.testSegment)(datasource, tAsSegment, patterns)];
|
|
78
|
+
case 2:
|
|
79
|
+
testResult = _a.sent();
|
|
80
|
+
return [3 /*break*/, 5];
|
|
81
|
+
case 3: return [4 /*yield*/, (0, testFeature_1.testFeature)(datasource, projectConfig, tAsFeature, options, patterns)];
|
|
82
|
+
case 4:
|
|
83
|
+
testResult = _a.sent();
|
|
84
|
+
_a.label = 5;
|
|
85
|
+
case 5:
|
|
86
|
+
(0, printTestResult_1.printTestResult)(testResult, testFilePath, rootDirectoryPath);
|
|
87
|
+
if (!testResult.passed) {
|
|
88
|
+
executionResult.passed = false;
|
|
89
|
+
executionResult.assertionsCount.failed = testResult.assertions.filter(function (a) { return !a.passed; }).length;
|
|
90
|
+
executionResult.assertionsCount.passed +=
|
|
91
|
+
testResult.assertions.length - executionResult.assertionsCount.failed;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
executionResult.assertionsCount.passed = testResult.assertions.length;
|
|
95
|
+
}
|
|
96
|
+
return [2 /*return*/, executionResult];
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
exports.executeTest = executeTest;
|
|
46
102
|
function testProject(deps, options) {
|
|
47
103
|
if (options === void 0) { options = {}; }
|
|
48
104
|
return __awaiter(this, void 0, void 0, function () {
|
|
49
|
-
var
|
|
105
|
+
var projectConfig, datasource, hasError, testFiles, startTime, patterns, passedTestsCount, failedTestsCount, passedAssertionsCount, failedAssertionsCount, _i, testFiles_1, testFile, executionResult, diffInMs, testSpecsMessage, testAssertionsMessage;
|
|
50
106
|
return __generator(this, function (_a) {
|
|
51
107
|
switch (_a.label) {
|
|
52
108
|
case 0:
|
|
53
|
-
|
|
109
|
+
projectConfig = deps.projectConfig, datasource = deps.datasource;
|
|
54
110
|
hasError = false;
|
|
55
111
|
if (!fs.existsSync(projectConfig.testsDirectoryPath)) {
|
|
56
112
|
console.error("Tests directory does not exist: ".concat(projectConfig.testsDirectoryPath));
|
|
@@ -77,61 +133,28 @@ function testProject(deps, options) {
|
|
|
77
133
|
_i = 0, testFiles_1 = testFiles;
|
|
78
134
|
_a.label = 2;
|
|
79
135
|
case 2:
|
|
80
|
-
if (!(_i < testFiles_1.length)) return [3 /*break*/,
|
|
136
|
+
if (!(_i < testFiles_1.length)) return [3 /*break*/, 5];
|
|
81
137
|
testFile = testFiles_1[_i];
|
|
82
|
-
|
|
83
|
-
return [4 /*yield*/, datasource.readTest(testFile)];
|
|
138
|
+
return [4 /*yield*/, executeTest(testFile, deps, options, patterns)];
|
|
84
139
|
case 3:
|
|
85
|
-
|
|
86
|
-
if (!
|
|
87
|
-
|
|
88
|
-
if (patterns.keyPattern && !patterns.keyPattern.test(test_1.segment)) {
|
|
89
|
-
return [3 /*break*/, 8];
|
|
140
|
+
executionResult = _a.sent();
|
|
141
|
+
if (!executionResult) {
|
|
142
|
+
return [3 /*break*/, 4];
|
|
90
143
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
testResult = _a.sent();
|
|
94
|
-
(0, printTestResult_1.printTestResult)(testResult, testFilePath, rootDirectoryPath);
|
|
95
|
-
if (!testResult.passed) {
|
|
96
|
-
hasError = true;
|
|
97
|
-
failedTestsCount++;
|
|
98
|
-
failedAssertionsCount += testResult.assertions.filter(function (a) { return !a.passed; }).length;
|
|
99
|
-
passedAssertionsCount += testResult.assertions.length - failedAssertionsCount;
|
|
144
|
+
if (executionResult.passed) {
|
|
145
|
+
passedTestsCount += 1;
|
|
100
146
|
}
|
|
101
147
|
else {
|
|
102
|
-
passedTestsCount++;
|
|
103
|
-
passedAssertionsCount += testResult.assertions.length;
|
|
104
|
-
}
|
|
105
|
-
return [3 /*break*/, 8];
|
|
106
|
-
case 5:
|
|
107
|
-
if (!t.feature) return [3 /*break*/, 7];
|
|
108
|
-
test_2 = t;
|
|
109
|
-
if (patterns.keyPattern && !patterns.keyPattern.test(test_2.feature)) {
|
|
110
|
-
return [3 /*break*/, 8];
|
|
111
|
-
}
|
|
112
|
-
return [4 /*yield*/, (0, testFeature_1.testFeature)(datasource, projectConfig, test_2, options, patterns)];
|
|
113
|
-
case 6:
|
|
114
|
-
testResult = _a.sent();
|
|
115
|
-
(0, printTestResult_1.printTestResult)(testResult, testFilePath, rootDirectoryPath);
|
|
116
|
-
if (!testResult.passed) {
|
|
117
148
|
hasError = true;
|
|
118
|
-
failedTestsCount
|
|
119
|
-
failedAssertionsCount += testResult.assertions.filter(function (a) { return !a.passed; }).length;
|
|
120
|
-
passedAssertionsCount += testResult.assertions.length - failedAssertionsCount;
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
passedTestsCount++;
|
|
124
|
-
passedAssertionsCount += testResult.assertions.length;
|
|
149
|
+
failedTestsCount += 1;
|
|
125
150
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
_a.label = 8;
|
|
131
|
-
case 8:
|
|
151
|
+
passedAssertionsCount += executionResult.assertionsCount.passed;
|
|
152
|
+
failedAssertionsCount += executionResult.assertionsCount.failed;
|
|
153
|
+
_a.label = 4;
|
|
154
|
+
case 4:
|
|
132
155
|
_i++;
|
|
133
156
|
return [3 /*break*/, 2];
|
|
134
|
-
case
|
|
157
|
+
case 5:
|
|
135
158
|
diffInMs = Date.now() - startTime;
|
|
136
159
|
console.log("\n---\n");
|
|
137
160
|
testSpecsMessage = "Test specs: ".concat(passedTestsCount, " passed, ").concat(failedTestsCount, " failed");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testProject.js","sourceRoot":"","sources":["../../src/tester/testProject.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uBAAyB;AAIzB,6CAA4C;AAC5C,6CAA4C;AAC5C,yCAAgF;AAEhF,mDAAkD;AAClD,qDAAoD;
|
|
1
|
+
{"version":3,"file":"testProject.js","sourceRoot":"","sources":["../../src/tester/testProject.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@featurevisor/core",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"description": "Core package of Featurevisor for Node.js usage",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -57,5 +57,5 @@
|
|
|
57
57
|
"@types/js-yaml": "^4.0.5",
|
|
58
58
|
"@types/tar": "^6.1.4"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "da916ccc7237c54449326ad10a7baf290ffb517e"
|
|
61
61
|
}
|
|
@@ -16,11 +16,82 @@ export interface TestProjectOptions {
|
|
|
16
16
|
showDatafile?: boolean;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
export interface TestPatterns {
|
|
20
|
+
keyPattern?: RegExp;
|
|
21
|
+
assertionPattern?: RegExp;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface ExecutionResult {
|
|
25
|
+
passed: boolean;
|
|
26
|
+
assertionsCount: {
|
|
27
|
+
passed: number;
|
|
28
|
+
failed: number;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export async function executeTest(
|
|
33
|
+
testFile: string,
|
|
34
|
+
deps: Dependencies,
|
|
35
|
+
options: TestProjectOptions,
|
|
36
|
+
patterns: TestPatterns,
|
|
37
|
+
): Promise<ExecutionResult | undefined> {
|
|
38
|
+
const { datasource, projectConfig, rootDirectoryPath } = deps;
|
|
39
|
+
|
|
40
|
+
const testFilePath = datasource.getTestSpecName(testFile);
|
|
41
|
+
|
|
42
|
+
const t = await datasource.readTest(testFile);
|
|
43
|
+
|
|
44
|
+
const tAsSegment = t as TestSegment;
|
|
45
|
+
const tAsFeature = t as TestFeature;
|
|
46
|
+
const key = tAsSegment.segment || tAsFeature.feature;
|
|
47
|
+
const type = tAsSegment.segment ? "segment" : "feature";
|
|
48
|
+
|
|
49
|
+
const executionResult: ExecutionResult = {
|
|
50
|
+
passed: true,
|
|
51
|
+
assertionsCount: {
|
|
52
|
+
passed: 0,
|
|
53
|
+
failed: 0,
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
if (!key) {
|
|
58
|
+
console.error(` => Invalid test: ${JSON.stringify(t)}`);
|
|
59
|
+
executionResult.passed = false;
|
|
60
|
+
|
|
61
|
+
return executionResult;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (patterns.keyPattern && !patterns.keyPattern.test(key)) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
let testResult;
|
|
69
|
+
if (type === "segment") {
|
|
70
|
+
testResult = await testSegment(datasource, tAsSegment, patterns);
|
|
71
|
+
} else {
|
|
72
|
+
testResult = await testFeature(datasource, projectConfig, tAsFeature, options, patterns);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
printTestResult(testResult, testFilePath, rootDirectoryPath);
|
|
76
|
+
|
|
77
|
+
if (!testResult.passed) {
|
|
78
|
+
executionResult.passed = false;
|
|
79
|
+
|
|
80
|
+
executionResult.assertionsCount.failed = testResult.assertions.filter((a) => !a.passed).length;
|
|
81
|
+
executionResult.assertionsCount.passed +=
|
|
82
|
+
testResult.assertions.length - executionResult.assertionsCount.failed;
|
|
83
|
+
} else {
|
|
84
|
+
executionResult.assertionsCount.passed = testResult.assertions.length;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return executionResult;
|
|
88
|
+
}
|
|
89
|
+
|
|
19
90
|
export async function testProject(
|
|
20
91
|
deps: Dependencies,
|
|
21
92
|
options: TestProjectOptions = {},
|
|
22
93
|
): Promise<boolean> {
|
|
23
|
-
const {
|
|
94
|
+
const { projectConfig, datasource } = deps;
|
|
24
95
|
|
|
25
96
|
let hasError = false;
|
|
26
97
|
|
|
@@ -42,7 +113,7 @@ export async function testProject(
|
|
|
42
113
|
|
|
43
114
|
const startTime = Date.now();
|
|
44
115
|
|
|
45
|
-
const patterns = {
|
|
116
|
+
const patterns: TestPatterns = {
|
|
46
117
|
keyPattern: options.keyPattern ? new RegExp(options.keyPattern) : undefined,
|
|
47
118
|
assertionPattern: options.assertionPattern ? new RegExp(options.assertionPattern) : undefined,
|
|
48
119
|
};
|
|
@@ -54,58 +125,21 @@ export async function testProject(
|
|
|
54
125
|
let failedAssertionsCount = 0;
|
|
55
126
|
|
|
56
127
|
for (const testFile of testFiles) {
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
const t = await datasource.readTest(testFile);
|
|
60
|
-
|
|
61
|
-
if ((t as TestSegment).segment) {
|
|
62
|
-
// segment testing
|
|
63
|
-
const test = t as TestSegment;
|
|
64
|
-
|
|
65
|
-
if (patterns.keyPattern && !patterns.keyPattern.test(test.segment)) {
|
|
66
|
-
continue;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const testResult = await testSegment(datasource, test, patterns);
|
|
70
|
-
printTestResult(testResult, testFilePath, rootDirectoryPath);
|
|
128
|
+
const executionResult = await executeTest(testFile, deps, options, patterns);
|
|
71
129
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
failedAssertionsCount += testResult.assertions.filter((a) => !a.passed).length;
|
|
77
|
-
passedAssertionsCount += testResult.assertions.length - failedAssertionsCount;
|
|
78
|
-
} else {
|
|
79
|
-
passedTestsCount++;
|
|
80
|
-
|
|
81
|
-
passedAssertionsCount += testResult.assertions.length;
|
|
82
|
-
}
|
|
83
|
-
} else if ((t as TestFeature).feature) {
|
|
84
|
-
// feature testing
|
|
85
|
-
const test = t as TestFeature;
|
|
86
|
-
|
|
87
|
-
if (patterns.keyPattern && !patterns.keyPattern.test(test.feature)) {
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
const testResult = await testFeature(datasource, projectConfig, test, options, patterns);
|
|
92
|
-
printTestResult(testResult, testFilePath, rootDirectoryPath);
|
|
93
|
-
|
|
94
|
-
if (!testResult.passed) {
|
|
95
|
-
hasError = true;
|
|
96
|
-
failedTestsCount++;
|
|
97
|
-
|
|
98
|
-
failedAssertionsCount += testResult.assertions.filter((a) => !a.passed).length;
|
|
99
|
-
passedAssertionsCount += testResult.assertions.length - failedAssertionsCount;
|
|
100
|
-
} else {
|
|
101
|
-
passedTestsCount++;
|
|
130
|
+
if (!executionResult) {
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
102
133
|
|
|
103
|
-
|
|
104
|
-
|
|
134
|
+
if (executionResult.passed) {
|
|
135
|
+
passedTestsCount += 1;
|
|
105
136
|
} else {
|
|
106
|
-
console.error(` => Invalid test: ${JSON.stringify(test)}`);
|
|
107
137
|
hasError = true;
|
|
138
|
+
failedTestsCount += 1;
|
|
108
139
|
}
|
|
140
|
+
|
|
141
|
+
passedAssertionsCount += executionResult.assertionsCount.passed;
|
|
142
|
+
failedAssertionsCount += executionResult.assertionsCount.failed;
|
|
109
143
|
}
|
|
110
144
|
|
|
111
145
|
const diffInMs = Date.now() - startTime;
|