datagrok-tools 4.13.21 → 4.13.22
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/CHANGELOG.md +6 -0
- package/bin/commands/link.js +6 -45
- package/bin/commands/test-all.js +694 -0
- package/bin/grok.js +1 -0
- package/bin/utils/order-functions.js +158 -0
- package/bin/utils/utils.js +52 -2
- package/package-template/src/package-test.ts +7 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/bin/commands/link.js
CHANGED
|
@@ -12,12 +12,10 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
12
12
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
13
|
var _fs = _interopRequireDefault(require("fs"));
|
|
14
14
|
var _path = _interopRequireDefault(require("path"));
|
|
15
|
-
var
|
|
16
|
-
var _util = require("util");
|
|
15
|
+
var _utils = require("../utils/utils");
|
|
17
16
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
18
17
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
19
18
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /* eslint-disable valid-jsdoc */
|
|
20
|
-
var execAsync = (0, _util.promisify)(_child_process.exec);
|
|
21
19
|
var repositoryDirNameRegex = new RegExp(_path["default"].join('1', '2')[1] + 'public$');
|
|
22
20
|
var curDir = process.cwd();
|
|
23
21
|
var devMode = false;
|
|
@@ -122,13 +120,13 @@ function _linkPackages() {
|
|
|
122
120
|
}
|
|
123
121
|
element = _step.value;
|
|
124
122
|
_context2.next = 11;
|
|
125
|
-
return runScript("npm install", element.packagePath);
|
|
123
|
+
return (0, _utils.runScript)("npm install", element.packagePath);
|
|
126
124
|
case 11:
|
|
127
125
|
_context2.next = 13;
|
|
128
|
-
return runScript("npm link ".concat(element.dependencies.join(' ')), element.packagePath);
|
|
126
|
+
return (0, _utils.runScript)("npm link ".concat(element.dependencies.join(' ')), element.packagePath);
|
|
129
127
|
case 13:
|
|
130
128
|
_context2.next = 15;
|
|
131
|
-
return runScript("npm link", element.packagePath);
|
|
129
|
+
return (0, _utils.runScript)("npm link", element.packagePath);
|
|
132
130
|
case 15:
|
|
133
131
|
packagesToLink["delete"](element.name);
|
|
134
132
|
anyChanges = true;
|
|
@@ -160,10 +158,10 @@ function _linkPackages() {
|
|
|
160
158
|
return x.name;
|
|
161
159
|
});
|
|
162
160
|
_context2.next = 34;
|
|
163
|
-
return runScript("npm install", curDir);
|
|
161
|
+
return (0, _utils.runScript)("npm install", curDir);
|
|
164
162
|
case 34:
|
|
165
163
|
_context2.next = 36;
|
|
166
|
-
return runScript("npm link ".concat(names.join(' ')), curDir);
|
|
164
|
+
return (0, _utils.runScript)("npm link ".concat(names.join(' ')), curDir);
|
|
167
165
|
case 36:
|
|
168
166
|
case "end":
|
|
169
167
|
return _context2.stop();
|
|
@@ -172,43 +170,6 @@ function _linkPackages() {
|
|
|
172
170
|
}));
|
|
173
171
|
return _linkPackages.apply(this, arguments);
|
|
174
172
|
}
|
|
175
|
-
function runScript(_x2, _x3) {
|
|
176
|
-
return _runScript.apply(this, arguments);
|
|
177
|
-
}
|
|
178
|
-
function _runScript() {
|
|
179
|
-
_runScript = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(script, path) {
|
|
180
|
-
var _yield$execAsync, stdout, stderr;
|
|
181
|
-
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
182
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
183
|
-
case 0:
|
|
184
|
-
_context3.prev = 0;
|
|
185
|
-
_context3.next = 3;
|
|
186
|
-
return execAsync(script, {
|
|
187
|
-
cwd: path
|
|
188
|
-
});
|
|
189
|
-
case 3:
|
|
190
|
-
_yield$execAsync = _context3.sent;
|
|
191
|
-
stdout = _yield$execAsync.stdout;
|
|
192
|
-
stderr = _yield$execAsync.stderr;
|
|
193
|
-
if (stderr) {
|
|
194
|
-
console.error("Error: ".concat(stderr));
|
|
195
|
-
} else {
|
|
196
|
-
// console.log(`Output: ${stdout}`);
|
|
197
|
-
}
|
|
198
|
-
_context3.next = 12;
|
|
199
|
-
break;
|
|
200
|
-
case 9:
|
|
201
|
-
_context3.prev = 9;
|
|
202
|
-
_context3.t0 = _context3["catch"](0);
|
|
203
|
-
console.error("Execution failed: ".concat(_context3.t0.message));
|
|
204
|
-
case 12:
|
|
205
|
-
case "end":
|
|
206
|
-
return _context3.stop();
|
|
207
|
-
}
|
|
208
|
-
}, _callee3, null, [[0, 9]]);
|
|
209
|
-
}));
|
|
210
|
-
return _runScript.apply(this, arguments);
|
|
211
|
-
}
|
|
212
173
|
var PackageData = /*#__PURE__*/(0, _createClass2["default"])(function PackageData(name, packagePath) {
|
|
213
174
|
(0, _classCallCheck2["default"])(this, PackageData);
|
|
214
175
|
(0, _defineProperty2["default"])(this, "name", void 0);
|
|
@@ -0,0 +1,694 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.testAll = testAll;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
12
|
+
var _os = _interopRequireDefault(require("os"));
|
|
13
|
+
var _path = _interopRequireDefault(require("path"));
|
|
14
|
+
var _puppeteer = _interopRequireDefault(require("puppeteer"));
|
|
15
|
+
var _puppeteerScreenRecorder = require("puppeteer-screen-recorder");
|
|
16
|
+
var _jsYaml = _interopRequireDefault(require("js-yaml"));
|
|
17
|
+
var color = _interopRequireWildcard(require("../utils/color-utils"));
|
|
18
|
+
var testUtils = _interopRequireWildcard(require("../utils/test-utils"));
|
|
19
|
+
var _utils = require("../utils/utils");
|
|
20
|
+
var _orderFunctions = require("../utils/order-functions");
|
|
21
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
22
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
23
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
24
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
25
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /* eslint-disable max-len */
|
|
26
|
+
var order = /*#__PURE__*/function (order) {
|
|
27
|
+
order[order["random"] = 0] = "random";
|
|
28
|
+
order[order["alphabetical"] = 1] = "alphabetical";
|
|
29
|
+
order[order["packageRandom"] = 2] = "packageRandom";
|
|
30
|
+
order[order["packageAlphabetical"] = 3] = "packageAlphabetical";
|
|
31
|
+
return order;
|
|
32
|
+
}(order || {});
|
|
33
|
+
function getEnumOrder(orderStr) {
|
|
34
|
+
switch (orderStr.toLowerCase().replaceAll("-", "")) {
|
|
35
|
+
case "random":
|
|
36
|
+
case "shuffle":
|
|
37
|
+
return order.random;
|
|
38
|
+
break;
|
|
39
|
+
case "alphabetical":
|
|
40
|
+
case "atoz":
|
|
41
|
+
return order.alphabetical;
|
|
42
|
+
break;
|
|
43
|
+
case "packagerandom":
|
|
44
|
+
case "packageshuffle":
|
|
45
|
+
return order.packageRandom;
|
|
46
|
+
break;
|
|
47
|
+
case "packagealphabetical":
|
|
48
|
+
case "packageatoz":
|
|
49
|
+
return order.packageAlphabetical;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
return order.random;
|
|
53
|
+
}
|
|
54
|
+
var grokDir = _path["default"].join(_os["default"].homedir(), '.grok');
|
|
55
|
+
var confPath = _path["default"].join(grokDir, 'config.yaml');
|
|
56
|
+
var config = _jsYaml["default"].load(_fs["default"].readFileSync(confPath, {
|
|
57
|
+
encoding: 'utf-8'
|
|
58
|
+
}));
|
|
59
|
+
var curDir = process.cwd();
|
|
60
|
+
var testCollectionTimeout = 100000;
|
|
61
|
+
var testInvocationTimeout = 3600000;
|
|
62
|
+
var orderingFunctions = new Map([[order.random, _orderFunctions.setRandomOrder], [order.alphabetical, _orderFunctions.setAlphabeticalOrder], [order.packageRandom, _orderFunctions.setPackageRandomOrder], [order.packageAlphabetical, _orderFunctions.setPackageAlphabeticalOrder]]);
|
|
63
|
+
var workersStarted = 0;
|
|
64
|
+
function testAll(_x) {
|
|
65
|
+
return _testAll.apply(this, arguments);
|
|
66
|
+
}
|
|
67
|
+
function _testAll() {
|
|
68
|
+
_testAll = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(args) {
|
|
69
|
+
var _args$tags, _args$order, _args$benchmark, _args$catchUnhandled, _args$gui, _args$record, _args$report, _args$verbose;
|
|
70
|
+
var builtPackages, packagesToRun, testsObj, filteredTests, workersOrder, testsResults, i, _iterator, _step, result;
|
|
71
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
72
|
+
while (1) switch (_context.prev = _context.next) {
|
|
73
|
+
case 0:
|
|
74
|
+
setHost(args);
|
|
75
|
+
_context.next = 3;
|
|
76
|
+
return buildPackages(args.packages, args.host, args['skip-publish'], args['skip-build']);
|
|
77
|
+
case 3:
|
|
78
|
+
builtPackages = _context.sent;
|
|
79
|
+
packagesToRun = [];
|
|
80
|
+
builtPackages.forEach(function (value, key) {
|
|
81
|
+
if (value) {
|
|
82
|
+
packagesToRun.push(key);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
_context.next = 8;
|
|
86
|
+
return loadTestsList(packagesToRun, args.core);
|
|
87
|
+
case 8:
|
|
88
|
+
testsObj = _context.sent;
|
|
89
|
+
_context.next = 11;
|
|
90
|
+
return filterTests(testsObj, ((_args$tags = args.tags) !== null && _args$tags !== void 0 ? _args$tags : "").split(" "), args['stress-test'], args.benchmark);
|
|
91
|
+
case 11:
|
|
92
|
+
filteredTests = _context.sent;
|
|
93
|
+
_context.next = 14;
|
|
94
|
+
return setWorkersOrder(filteredTests, getEnumOrder((_args$order = args.order) !== null && _args$order !== void 0 ? _args$order : ''), args.workersCount, args.testRepeat);
|
|
95
|
+
case 14:
|
|
96
|
+
workersOrder = _context.sent;
|
|
97
|
+
console.log(filteredTests);
|
|
98
|
+
_context.next = 18;
|
|
99
|
+
return runTests(workersOrder, {
|
|
100
|
+
benchmark: (_args$benchmark = args.benchmark) !== null && _args$benchmark !== void 0 ? _args$benchmark : false,
|
|
101
|
+
catchUnhandled: (_args$catchUnhandled = args.catchUnhandled) !== null && _args$catchUnhandled !== void 0 ? _args$catchUnhandled : false,
|
|
102
|
+
gui: (_args$gui = args.gui) !== null && _args$gui !== void 0 ? _args$gui : false,
|
|
103
|
+
record: (_args$record = args.record) !== null && _args$record !== void 0 ? _args$record : false,
|
|
104
|
+
report: (_args$report = args.report) !== null && _args$report !== void 0 ? _args$report : false,
|
|
105
|
+
verbose: (_args$verbose = args.verbose) !== null && _args$verbose !== void 0 ? _args$verbose : false
|
|
106
|
+
});
|
|
107
|
+
case 18:
|
|
108
|
+
testsResults = _context.sent;
|
|
109
|
+
i = 0;
|
|
110
|
+
_iterator = _createForOfIteratorHelper(testsResults);
|
|
111
|
+
try {
|
|
112
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
113
|
+
result = _step.value;
|
|
114
|
+
console.log("\nWorker #".concat(i++, " "));
|
|
115
|
+
printWorkersResult(result, args.verbose);
|
|
116
|
+
}
|
|
117
|
+
} catch (err) {
|
|
118
|
+
_iterator.e(err);
|
|
119
|
+
} finally {
|
|
120
|
+
_iterator.f();
|
|
121
|
+
}
|
|
122
|
+
return _context.abrupt("return", !testsResults.map(function (test) {
|
|
123
|
+
return test.failed;
|
|
124
|
+
}).some(function (failStatus) {
|
|
125
|
+
return failStatus === true;
|
|
126
|
+
}));
|
|
127
|
+
case 23:
|
|
128
|
+
case "end":
|
|
129
|
+
return _context.stop();
|
|
130
|
+
}
|
|
131
|
+
}, _callee);
|
|
132
|
+
}));
|
|
133
|
+
return _testAll.apply(this, arguments);
|
|
134
|
+
}
|
|
135
|
+
function setHost(args) {
|
|
136
|
+
if (args.host) {
|
|
137
|
+
if (args.host in config.servers) {
|
|
138
|
+
process.env.HOST = args.host;
|
|
139
|
+
console.log('Environment variable `HOST` is set to', args.host);
|
|
140
|
+
} else {
|
|
141
|
+
color.error("Unknown server alias. Please add it to ".concat(confPath));
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
} else if (config["default"]) {
|
|
145
|
+
process.env.HOST = config["default"];
|
|
146
|
+
console.log('Environment variable `HOST` is set to', config["default"]);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function buildPackages(_x2, _x3, _x4, _x5, _x6) {
|
|
150
|
+
return _buildPackages.apply(this, arguments);
|
|
151
|
+
}
|
|
152
|
+
function _buildPackages() {
|
|
153
|
+
_buildPackages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(packages, host, skipPublish, skipBuild, linkPackage) {
|
|
154
|
+
var packagesToRun, hostString, _iterator2, _step2, pacakgeName, _iterator3, _step3, dirName, packageDir;
|
|
155
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
156
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
157
|
+
case 0:
|
|
158
|
+
packagesToRun = new Map();
|
|
159
|
+
hostString = host === undefined ? "" : "".concat(host);
|
|
160
|
+
if (packages !== "all") {
|
|
161
|
+
_iterator2 = _createForOfIteratorHelper((packages !== null && packages !== void 0 ? packages : "").split(' '));
|
|
162
|
+
try {
|
|
163
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
164
|
+
pacakgeName = _step2.value;
|
|
165
|
+
packagesToRun.set(pacakgeName, false);
|
|
166
|
+
}
|
|
167
|
+
} catch (err) {
|
|
168
|
+
_iterator2.e(err);
|
|
169
|
+
} finally {
|
|
170
|
+
_iterator2.f();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
_iterator3 = _createForOfIteratorHelper(_fs["default"].readdirSync(curDir));
|
|
174
|
+
_context2.prev = 4;
|
|
175
|
+
_iterator3.s();
|
|
176
|
+
case 6:
|
|
177
|
+
if ((_step3 = _iterator3.n()).done) {
|
|
178
|
+
_context2.next = 26;
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
dirName = _step3.value;
|
|
182
|
+
packageDir = _path["default"].join(curDir, dirName);
|
|
183
|
+
if (_fs["default"].lstatSync(packageDir).isFile()) {
|
|
184
|
+
_context2.next = 24;
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
if (!((0, _utils.isPackageDir)(packageDir) && (packagesToRun.get(dirName) !== undefined || packages === "all"))) {
|
|
188
|
+
_context2.next = 24;
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
if (!(skipPublish != true)) {
|
|
192
|
+
_context2.next = 22;
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
_context2.next = 14;
|
|
196
|
+
return (0, _utils.runScript)("npm install", packageDir);
|
|
197
|
+
case 14:
|
|
198
|
+
if (!linkPackage) {
|
|
199
|
+
_context2.next = 17;
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
_context2.next = 17;
|
|
203
|
+
return (0, _utils.runScript)("grok link", packageDir);
|
|
204
|
+
case 17:
|
|
205
|
+
if (!(skipBuild != true)) {
|
|
206
|
+
_context2.next = 20;
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
_context2.next = 20;
|
|
210
|
+
return (0, _utils.runScript)("npm run build", packageDir);
|
|
211
|
+
case 20:
|
|
212
|
+
_context2.next = 22;
|
|
213
|
+
return (0, _utils.runScript)("grok publish ".concat(hostString), packageDir);
|
|
214
|
+
case 22:
|
|
215
|
+
packagesToRun.set(dirName, true);
|
|
216
|
+
console.log("Package published ".concat(dirName));
|
|
217
|
+
case 24:
|
|
218
|
+
_context2.next = 6;
|
|
219
|
+
break;
|
|
220
|
+
case 26:
|
|
221
|
+
_context2.next = 31;
|
|
222
|
+
break;
|
|
223
|
+
case 28:
|
|
224
|
+
_context2.prev = 28;
|
|
225
|
+
_context2.t0 = _context2["catch"](4);
|
|
226
|
+
_iterator3.e(_context2.t0);
|
|
227
|
+
case 31:
|
|
228
|
+
_context2.prev = 31;
|
|
229
|
+
_iterator3.f();
|
|
230
|
+
return _context2.finish(31);
|
|
231
|
+
case 34:
|
|
232
|
+
console.log();
|
|
233
|
+
return _context2.abrupt("return", packagesToRun);
|
|
234
|
+
case 36:
|
|
235
|
+
case "end":
|
|
236
|
+
return _context2.stop();
|
|
237
|
+
}
|
|
238
|
+
}, _callee2, null, [[4, 28, 31, 34]]);
|
|
239
|
+
}));
|
|
240
|
+
return _buildPackages.apply(this, arguments);
|
|
241
|
+
}
|
|
242
|
+
function loadTestsList(_x7) {
|
|
243
|
+
return _loadTestsList.apply(this, arguments);
|
|
244
|
+
}
|
|
245
|
+
function _loadTestsList() {
|
|
246
|
+
_loadTestsList = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(packages) {
|
|
247
|
+
var core,
|
|
248
|
+
packageTestsData,
|
|
249
|
+
testsList,
|
|
250
|
+
_iterator4,
|
|
251
|
+
_step4,
|
|
252
|
+
testPackage,
|
|
253
|
+
key,
|
|
254
|
+
_iterator5,
|
|
255
|
+
_step5,
|
|
256
|
+
testValue,
|
|
257
|
+
_args4 = arguments;
|
|
258
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
259
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
260
|
+
case 0:
|
|
261
|
+
core = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : false;
|
|
262
|
+
_context4.next = 3;
|
|
263
|
+
return testUtils.timeout( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
264
|
+
var params, out, browser, page, r;
|
|
265
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
266
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
267
|
+
case 0:
|
|
268
|
+
params = Object.assign({}, testUtils.defaultLaunchParameters); // params['headless'] = false;
|
|
269
|
+
_context3.next = 3;
|
|
270
|
+
return testUtils.getBrowserPage(_puppeteer["default"], params);
|
|
271
|
+
case 3:
|
|
272
|
+
out = _context3.sent;
|
|
273
|
+
browser = out.browser;
|
|
274
|
+
page = out.page;
|
|
275
|
+
_context3.next = 8;
|
|
276
|
+
return page.evaluate(function (packages, coreTests) {
|
|
277
|
+
return new Promise(function (resolve, reject) {
|
|
278
|
+
var promises = [];
|
|
279
|
+
try {
|
|
280
|
+
packages.map(function (packageName) {
|
|
281
|
+
var _DG$Func$find$;
|
|
282
|
+
var p = (_DG$Func$find$ = window.DG.Func.find({
|
|
283
|
+
"package": packageName,
|
|
284
|
+
name: 'test'
|
|
285
|
+
})[0]) === null || _DG$Func$find$ === void 0 ? void 0 : _DG$Func$find$["package"];
|
|
286
|
+
if (p) {
|
|
287
|
+
try {
|
|
288
|
+
promises.push(p.getTests(coreTests)["catch"](function (e) {
|
|
289
|
+
console.error('something else went wrong with collecting package tests');
|
|
290
|
+
console.error(e === null || e === void 0 ? void 0 : e.message);
|
|
291
|
+
}).then(function (ts) {
|
|
292
|
+
return {
|
|
293
|
+
packageName: packageName,
|
|
294
|
+
tests: ts
|
|
295
|
+
};
|
|
296
|
+
}));
|
|
297
|
+
} catch (e) {
|
|
298
|
+
console.error('something went wrong while adding test collection promise');
|
|
299
|
+
console.error(e.message);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
} catch (err) {
|
|
304
|
+
console.error("Error during evaluation in browser context:", err);
|
|
305
|
+
reject();
|
|
306
|
+
}
|
|
307
|
+
Promise.all(promises).then(function (results) {
|
|
308
|
+
resolve(results);
|
|
309
|
+
})["catch"](function (e) {
|
|
310
|
+
var stack = window.DG.Logger.translateStackTrace(e.stack).then(function () {
|
|
311
|
+
resolve({
|
|
312
|
+
failReport: "".concat(e.message, "\n").concat(stack)
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
});
|
|
316
|
+
});
|
|
317
|
+
}, packages, core);
|
|
318
|
+
case 8:
|
|
319
|
+
r = _context3.sent;
|
|
320
|
+
if (!(browser != null)) {
|
|
321
|
+
_context3.next = 12;
|
|
322
|
+
break;
|
|
323
|
+
}
|
|
324
|
+
_context3.next = 12;
|
|
325
|
+
return browser.close();
|
|
326
|
+
case 12:
|
|
327
|
+
return _context3.abrupt("return", r);
|
|
328
|
+
case 13:
|
|
329
|
+
case "end":
|
|
330
|
+
return _context3.stop();
|
|
331
|
+
}
|
|
332
|
+
}, _callee3);
|
|
333
|
+
})), testCollectionTimeout);
|
|
334
|
+
case 3:
|
|
335
|
+
packageTestsData = _context4.sent;
|
|
336
|
+
testsList = [];
|
|
337
|
+
_iterator4 = _createForOfIteratorHelper(packageTestsData);
|
|
338
|
+
try {
|
|
339
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
340
|
+
testPackage = _step4.value;
|
|
341
|
+
for (key in testPackage.tests) {
|
|
342
|
+
if (testPackage.tests.hasOwnProperty(key)) {
|
|
343
|
+
_iterator5 = _createForOfIteratorHelper(testPackage.tests[key].tests);
|
|
344
|
+
try {
|
|
345
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
346
|
+
testValue = _step5.value;
|
|
347
|
+
testValue.packageName = testPackage.packageName;
|
|
348
|
+
testsList.push(testValue);
|
|
349
|
+
}
|
|
350
|
+
} catch (err) {
|
|
351
|
+
_iterator5.e(err);
|
|
352
|
+
} finally {
|
|
353
|
+
_iterator5.f();
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
} catch (err) {
|
|
359
|
+
_iterator4.e(err);
|
|
360
|
+
} finally {
|
|
361
|
+
_iterator4.f();
|
|
362
|
+
}
|
|
363
|
+
return _context4.abrupt("return", testsList);
|
|
364
|
+
case 8:
|
|
365
|
+
case "end":
|
|
366
|
+
return _context4.stop();
|
|
367
|
+
}
|
|
368
|
+
}, _callee4);
|
|
369
|
+
}));
|
|
370
|
+
return _loadTestsList.apply(this, arguments);
|
|
371
|
+
}
|
|
372
|
+
function filterTests(_x8, _x9) {
|
|
373
|
+
return _filterTests.apply(this, arguments);
|
|
374
|
+
}
|
|
375
|
+
function _filterTests() {
|
|
376
|
+
_filterTests = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(tests, tags) {
|
|
377
|
+
var stressTest,
|
|
378
|
+
benchmark,
|
|
379
|
+
filteredTests,
|
|
380
|
+
stressTestValue,
|
|
381
|
+
benchmarkValue,
|
|
382
|
+
_iterator6,
|
|
383
|
+
_step6,
|
|
384
|
+
_loop,
|
|
385
|
+
_ret,
|
|
386
|
+
_args6 = arguments;
|
|
387
|
+
return _regenerator["default"].wrap(function _callee5$(_context6) {
|
|
388
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
389
|
+
case 0:
|
|
390
|
+
stressTest = _args6.length > 2 && _args6[2] !== undefined ? _args6[2] : false;
|
|
391
|
+
benchmark = _args6.length > 3 && _args6[3] !== undefined ? _args6[3] : false;
|
|
392
|
+
filteredTests = [];
|
|
393
|
+
stressTestValue = tags.includes("stress-test") || stressTest;
|
|
394
|
+
benchmarkValue = benchmark;
|
|
395
|
+
tags = tags.filter(function (tag) {
|
|
396
|
+
return tag !== "stress-test" && tag != "";
|
|
397
|
+
});
|
|
398
|
+
_iterator6 = _createForOfIteratorHelper(tests);
|
|
399
|
+
_context6.prev = 7;
|
|
400
|
+
_loop = /*#__PURE__*/_regenerator["default"].mark(function _loop() {
|
|
401
|
+
var _test$options, _test$options2, _test$options3, _tags;
|
|
402
|
+
var test, hasMatchingTags;
|
|
403
|
+
return _regenerator["default"].wrap(function _loop$(_context5) {
|
|
404
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
405
|
+
case 0:
|
|
406
|
+
test = _step6.value;
|
|
407
|
+
if (!(benchmarkValue && ((_test$options = test.options) === null || _test$options === void 0 ? void 0 : _test$options.benchmark) !== true)) {
|
|
408
|
+
_context5.next = 3;
|
|
409
|
+
break;
|
|
410
|
+
}
|
|
411
|
+
return _context5.abrupt("return", 0);
|
|
412
|
+
case 3:
|
|
413
|
+
if (!(stressTestValue && ((_test$options2 = test.options) === null || _test$options2 === void 0 ? void 0 : _test$options2.stressTest) !== true && !((_test$options3 = test.options) !== null && _test$options3 !== void 0 && (_test$options3 = _test$options3.tags) !== null && _test$options3 !== void 0 && _test$options3.includes("stressTest")))) {
|
|
414
|
+
_context5.next = 5;
|
|
415
|
+
break;
|
|
416
|
+
}
|
|
417
|
+
return _context5.abrupt("return", 0);
|
|
418
|
+
case 5:
|
|
419
|
+
hasMatchingTags = tags.some(function (tag) {
|
|
420
|
+
var _test$options4;
|
|
421
|
+
return (_test$options4 = test.options) === null || _test$options4 === void 0 || (_test$options4 = _test$options4.tags) === null || _test$options4 === void 0 ? void 0 : _test$options4.includes(tag);
|
|
422
|
+
});
|
|
423
|
+
if (hasMatchingTags || ((_tags = tags) === null || _tags === void 0 ? void 0 : _tags.length) === 0) filteredTests.push(test);
|
|
424
|
+
case 7:
|
|
425
|
+
case "end":
|
|
426
|
+
return _context5.stop();
|
|
427
|
+
}
|
|
428
|
+
}, _loop);
|
|
429
|
+
});
|
|
430
|
+
_iterator6.s();
|
|
431
|
+
case 10:
|
|
432
|
+
if ((_step6 = _iterator6.n()).done) {
|
|
433
|
+
_context6.next = 17;
|
|
434
|
+
break;
|
|
435
|
+
}
|
|
436
|
+
return _context6.delegateYield(_loop(), "t0", 12);
|
|
437
|
+
case 12:
|
|
438
|
+
_ret = _context6.t0;
|
|
439
|
+
if (!(_ret === 0)) {
|
|
440
|
+
_context6.next = 15;
|
|
441
|
+
break;
|
|
442
|
+
}
|
|
443
|
+
return _context6.abrupt("continue", 15);
|
|
444
|
+
case 15:
|
|
445
|
+
_context6.next = 10;
|
|
446
|
+
break;
|
|
447
|
+
case 17:
|
|
448
|
+
_context6.next = 22;
|
|
449
|
+
break;
|
|
450
|
+
case 19:
|
|
451
|
+
_context6.prev = 19;
|
|
452
|
+
_context6.t1 = _context6["catch"](7);
|
|
453
|
+
_iterator6.e(_context6.t1);
|
|
454
|
+
case 22:
|
|
455
|
+
_context6.prev = 22;
|
|
456
|
+
_iterator6.f();
|
|
457
|
+
return _context6.finish(22);
|
|
458
|
+
case 25:
|
|
459
|
+
return _context6.abrupt("return", filteredTests);
|
|
460
|
+
case 26:
|
|
461
|
+
case "end":
|
|
462
|
+
return _context6.stop();
|
|
463
|
+
}
|
|
464
|
+
}, _callee5, null, [[7, 19, 22, 25]]);
|
|
465
|
+
}));
|
|
466
|
+
return _filterTests.apply(this, arguments);
|
|
467
|
+
}
|
|
468
|
+
function setWorkersOrder(_x10) {
|
|
469
|
+
return _setWorkersOrder.apply(this, arguments);
|
|
470
|
+
}
|
|
471
|
+
function _setWorkersOrder() {
|
|
472
|
+
_setWorkersOrder = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(tests) {
|
|
473
|
+
var invocationOrder,
|
|
474
|
+
countOfWorkers,
|
|
475
|
+
testRepeats,
|
|
476
|
+
resultOrder,
|
|
477
|
+
orderingFunction,
|
|
478
|
+
_args7 = arguments;
|
|
479
|
+
return _regenerator["default"].wrap(function _callee6$(_context7) {
|
|
480
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
481
|
+
case 0:
|
|
482
|
+
invocationOrder = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : 0;
|
|
483
|
+
countOfWorkers = _args7.length > 2 && _args7[2] !== undefined ? _args7[2] : 1;
|
|
484
|
+
testRepeats = _args7.length > 3 && _args7[3] !== undefined ? _args7[3] : 1;
|
|
485
|
+
resultOrder = [];
|
|
486
|
+
orderingFunction = orderingFunctions.get(invocationOrder);
|
|
487
|
+
if (!(orderingFunction !== undefined)) {
|
|
488
|
+
_context7.next = 9;
|
|
489
|
+
break;
|
|
490
|
+
}
|
|
491
|
+
resultOrder = orderingFunction(tests, countOfWorkers, testRepeats);
|
|
492
|
+
_context7.next = 10;
|
|
493
|
+
break;
|
|
494
|
+
case 9:
|
|
495
|
+
throw new Error("Cannot find ordering function");
|
|
496
|
+
case 10:
|
|
497
|
+
return _context7.abrupt("return", resultOrder);
|
|
498
|
+
case 11:
|
|
499
|
+
case "end":
|
|
500
|
+
return _context7.stop();
|
|
501
|
+
}
|
|
502
|
+
}, _callee6);
|
|
503
|
+
}));
|
|
504
|
+
return _setWorkersOrder.apply(this, arguments);
|
|
505
|
+
}
|
|
506
|
+
function runTests(_x11, _x12) {
|
|
507
|
+
return _runTests.apply(this, arguments);
|
|
508
|
+
}
|
|
509
|
+
function _runTests() {
|
|
510
|
+
_runTests = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(workersOrder, workerOptions) {
|
|
511
|
+
var workersCommands, _iterator7, _step7, workerOrder, workersPromises, _i, _workersCommands, workerCommands, resultObjects;
|
|
512
|
+
return _regenerator["default"].wrap(function _callee7$(_context8) {
|
|
513
|
+
while (1) switch (_context8.prev = _context8.next) {
|
|
514
|
+
case 0:
|
|
515
|
+
workersCommands = [];
|
|
516
|
+
_iterator7 = _createForOfIteratorHelper(workersOrder);
|
|
517
|
+
try {
|
|
518
|
+
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
519
|
+
workerOrder = _step7.value;
|
|
520
|
+
workersCommands.push(workerOrder.map(function (testObj) {
|
|
521
|
+
return {
|
|
522
|
+
"package": testObj.packageName,
|
|
523
|
+
params: {
|
|
524
|
+
category: testObj.category,
|
|
525
|
+
test: testObj.name,
|
|
526
|
+
options: {
|
|
527
|
+
catchUnhandled: workerOptions.catchUnhandled,
|
|
528
|
+
report: workerOptions.report
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
};
|
|
532
|
+
}));
|
|
533
|
+
}
|
|
534
|
+
} catch (err) {
|
|
535
|
+
_iterator7.e(err);
|
|
536
|
+
} finally {
|
|
537
|
+
_iterator7.f();
|
|
538
|
+
}
|
|
539
|
+
workersPromises = [];
|
|
540
|
+
_i = 0, _workersCommands = workersCommands;
|
|
541
|
+
case 5:
|
|
542
|
+
if (!(_i < _workersCommands.length)) {
|
|
543
|
+
_context8.next = 13;
|
|
544
|
+
break;
|
|
545
|
+
}
|
|
546
|
+
workerCommands = _workersCommands[_i];
|
|
547
|
+
workersPromises.push(runWorker(workerCommands, workerOptions));
|
|
548
|
+
_context8.next = 10;
|
|
549
|
+
return workersPromises[workersPromises.length];
|
|
550
|
+
case 10:
|
|
551
|
+
_i++;
|
|
552
|
+
_context8.next = 5;
|
|
553
|
+
break;
|
|
554
|
+
case 13:
|
|
555
|
+
_context8.next = 15;
|
|
556
|
+
return Promise.all(workersPromises);
|
|
557
|
+
case 15:
|
|
558
|
+
resultObjects = _context8.sent;
|
|
559
|
+
return _context8.abrupt("return", resultObjects);
|
|
560
|
+
case 17:
|
|
561
|
+
case "end":
|
|
562
|
+
return _context8.stop();
|
|
563
|
+
}
|
|
564
|
+
}, _callee7);
|
|
565
|
+
}));
|
|
566
|
+
return _runTests.apply(this, arguments);
|
|
567
|
+
}
|
|
568
|
+
function runWorker(_x13, _x14) {
|
|
569
|
+
return _runWorker.apply(this, arguments);
|
|
570
|
+
}
|
|
571
|
+
function _runWorker() {
|
|
572
|
+
_runWorker = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(testExecutionData, workerOptions) {
|
|
573
|
+
return _regenerator["default"].wrap(function _callee9$(_context10) {
|
|
574
|
+
while (1) switch (_context10.prev = _context10.next) {
|
|
575
|
+
case 0:
|
|
576
|
+
_context10.next = 2;
|
|
577
|
+
return testUtils.timeout( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
|
|
578
|
+
var params, out, browser, page, recorder, currentWorkerNum, logsDir, recordDir, testingResults;
|
|
579
|
+
return _regenerator["default"].wrap(function _callee8$(_context9) {
|
|
580
|
+
while (1) switch (_context9.prev = _context9.next) {
|
|
581
|
+
case 0:
|
|
582
|
+
params = Object.assign({}, testUtils.defaultLaunchParameters);
|
|
583
|
+
if (workerOptions.gui) params['headless'] = false;
|
|
584
|
+
_context9.next = 4;
|
|
585
|
+
return testUtils.getBrowserPage(_puppeteer["default"], params);
|
|
586
|
+
case 4:
|
|
587
|
+
out = _context9.sent;
|
|
588
|
+
browser = out.browser;
|
|
589
|
+
page = out.page;
|
|
590
|
+
recorder = new _puppeteerScreenRecorder.PuppeteerScreenRecorder(page, testUtils.recorderConfig);
|
|
591
|
+
currentWorkerNum = workersStarted++;
|
|
592
|
+
logsDir = "./test-console-output-".concat(currentWorkerNum, ".log");
|
|
593
|
+
recordDir = "./test-record-".concat(currentWorkerNum, ".mp4");
|
|
594
|
+
if (!workerOptions.record) {
|
|
595
|
+
_context9.next = 20;
|
|
596
|
+
break;
|
|
597
|
+
}
|
|
598
|
+
_context9.next = 14;
|
|
599
|
+
return recorder.start(recordDir);
|
|
600
|
+
case 14:
|
|
601
|
+
_context9.next = 16;
|
|
602
|
+
return page.exposeFunction("addLogsToFile", addLogsToFile);
|
|
603
|
+
case 16:
|
|
604
|
+
_fs["default"].writeFileSync(logsDir, "");
|
|
605
|
+
page.on('console', function (msg) {
|
|
606
|
+
addLogsToFile(logsDir, "CONSOLE LOG ENTRY: ".concat(msg.text(), "\n"));
|
|
607
|
+
});
|
|
608
|
+
page.on('pageerror', function (error) {
|
|
609
|
+
addLogsToFile(logsDir, "CONSOLE LOG ERROR: ".concat(error.message, "\n"));
|
|
610
|
+
});
|
|
611
|
+
page.on('response', function (response) {
|
|
612
|
+
addLogsToFile(logsDir, "CONSOLE LOG REQUEST: ".concat(response.status(), ", ").concat(response.url(), "\n"));
|
|
613
|
+
});
|
|
614
|
+
case 20:
|
|
615
|
+
_context9.next = 22;
|
|
616
|
+
return page.evaluate(function (testData, options) {
|
|
617
|
+
if (options.benchmark) window.DG.Test.isInBenchmark = true;
|
|
618
|
+
return new Promise(function (resolve, reject) {
|
|
619
|
+
window.DG.Utils.executeTests(testData).then(function (results) {
|
|
620
|
+
resolve(results);
|
|
621
|
+
})["catch"](function (e) {
|
|
622
|
+
resolve({
|
|
623
|
+
failed: true,
|
|
624
|
+
verbosePassed: "",
|
|
625
|
+
verboseSkipped: "",
|
|
626
|
+
verboseFailed: "Tests execution failed",
|
|
627
|
+
passedAmount: 0,
|
|
628
|
+
skippedAmount: 0,
|
|
629
|
+
failedAmount: 1
|
|
630
|
+
});
|
|
631
|
+
});
|
|
632
|
+
});
|
|
633
|
+
}, testExecutionData, workerOptions);
|
|
634
|
+
case 22:
|
|
635
|
+
testingResults = _context9.sent;
|
|
636
|
+
if (!workerOptions.record) {
|
|
637
|
+
_context9.next = 26;
|
|
638
|
+
break;
|
|
639
|
+
}
|
|
640
|
+
_context9.next = 26;
|
|
641
|
+
return recorder.stop();
|
|
642
|
+
case 26:
|
|
643
|
+
if (!(browser != null)) {
|
|
644
|
+
_context9.next = 29;
|
|
645
|
+
break;
|
|
646
|
+
}
|
|
647
|
+
_context9.next = 29;
|
|
648
|
+
return browser.close();
|
|
649
|
+
case 29:
|
|
650
|
+
return _context9.abrupt("return", testingResults);
|
|
651
|
+
case 30:
|
|
652
|
+
case "end":
|
|
653
|
+
return _context9.stop();
|
|
654
|
+
}
|
|
655
|
+
}, _callee8);
|
|
656
|
+
})), testInvocationTimeout);
|
|
657
|
+
case 2:
|
|
658
|
+
return _context10.abrupt("return", _context10.sent);
|
|
659
|
+
case 3:
|
|
660
|
+
case "end":
|
|
661
|
+
return _context10.stop();
|
|
662
|
+
}
|
|
663
|
+
}, _callee9);
|
|
664
|
+
}));
|
|
665
|
+
return _runWorker.apply(this, arguments);
|
|
666
|
+
}
|
|
667
|
+
function addLogsToFile(filePath, stringToSave) {
|
|
668
|
+
_fs["default"].appendFileSync(filePath, "".concat(stringToSave));
|
|
669
|
+
}
|
|
670
|
+
function printWorkersResult(workerResult) {
|
|
671
|
+
var verbose = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
672
|
+
if (verbose) {
|
|
673
|
+
if (workerResult.passedAmount > 0 && workerResult.verbosePassed.length > 0) {
|
|
674
|
+
console.log("Passed: ");
|
|
675
|
+
console.log(workerResult.verbosePassed);
|
|
676
|
+
}
|
|
677
|
+
if (workerResult.skippedAmount > 0 && workerResult.verboseSkipped.length > 0) {
|
|
678
|
+
console.log("Skipped: ");
|
|
679
|
+
console.log(workerResult.verboseSkipped);
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
if (workerResult.failedAmount > 0 && workerResult.verboseFailed.length > 0) {
|
|
683
|
+
console.log("Failed: ");
|
|
684
|
+
console.log(workerResult.verboseFailed);
|
|
685
|
+
}
|
|
686
|
+
console.log("Passed amount: " + workerResult.passedAmount);
|
|
687
|
+
console.log("Skipped amount: " + workerResult.skippedAmount);
|
|
688
|
+
console.log("Failed amount: " + workerResult.failedAmount);
|
|
689
|
+
if (workerResult.failed) {
|
|
690
|
+
color.fail('Tests failed.');
|
|
691
|
+
} else {
|
|
692
|
+
color.success('Tests passed.');
|
|
693
|
+
}
|
|
694
|
+
}
|
package/bin/grok.js
CHANGED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.setAlphabeticalOrder = setAlphabeticalOrder;
|
|
8
|
+
exports.setPackageAlphabeticalOrder = setPackageAlphabeticalOrder;
|
|
9
|
+
exports.setPackageRandomOrder = setPackageRandomOrder;
|
|
10
|
+
exports.setRandomOrder = setRandomOrder;
|
|
11
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
15
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
16
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
17
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
18
|
+
function setRandomOrder(tests, workersAmount, testRepeats) {
|
|
19
|
+
if (workersAmount > tests.length) workersAmount = tests.length;
|
|
20
|
+
var repeatedTests = repeatTests(tests, testRepeats);
|
|
21
|
+
var orderedTests = shuffle(repeatedTests);
|
|
22
|
+
return splitArray(orderedTests, workersAmount);
|
|
23
|
+
}
|
|
24
|
+
function setPackageRandomOrder(tests, workersAmount, testRepeats) {
|
|
25
|
+
var packages = splitTestsByPackages(tests);
|
|
26
|
+
if (workersAmount > packages.size) workersAmount = packages.size;
|
|
27
|
+
var _iterator = _createForOfIteratorHelper(packages.keys()),
|
|
28
|
+
_step;
|
|
29
|
+
try {
|
|
30
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
31
|
+
var packageName = _step.value;
|
|
32
|
+
packages.set(packageName, repeatTests(packages.get(packageName), testRepeats));
|
|
33
|
+
packages.set(packageName, shuffle(packages.get(packageName)));
|
|
34
|
+
}
|
|
35
|
+
} catch (err) {
|
|
36
|
+
_iterator.e(err);
|
|
37
|
+
} finally {
|
|
38
|
+
_iterator.f();
|
|
39
|
+
}
|
|
40
|
+
var splittedPackagesArray = splitArray((0, _toConsumableArray2["default"])(packages.values()), workersAmount);
|
|
41
|
+
var splittedTestsArray = [];
|
|
42
|
+
for (var _i = 0, _splittedPackagesArra = splittedPackagesArray; _i < _splittedPackagesArra.length; _i++) {
|
|
43
|
+
var _splitArray = _splittedPackagesArra[_i];
|
|
44
|
+
var testsArray = [];
|
|
45
|
+
var _iterator2 = _createForOfIteratorHelper(_splitArray),
|
|
46
|
+
_step2;
|
|
47
|
+
try {
|
|
48
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
49
|
+
var packageTests = _step2.value;
|
|
50
|
+
testsArray = testsArray.concat(packageTests);
|
|
51
|
+
}
|
|
52
|
+
} catch (err) {
|
|
53
|
+
_iterator2.e(err);
|
|
54
|
+
} finally {
|
|
55
|
+
_iterator2.f();
|
|
56
|
+
}
|
|
57
|
+
splittedTestsArray.push(testsArray);
|
|
58
|
+
}
|
|
59
|
+
return splittedTestsArray;
|
|
60
|
+
}
|
|
61
|
+
function setAlphabeticalOrder(tests, workersAmount, testRepeats) {
|
|
62
|
+
if (workersAmount > tests.length) workersAmount = tests.length;
|
|
63
|
+
var repeatedTests = repeatTests(tests, testRepeats);
|
|
64
|
+
var orderedTests = repeatedTests.sort(function (test1, test2) {
|
|
65
|
+
return "".concat(test1.category, ": ").concat(test1.name, "s").localeCompare("".concat(test2.category, ": ").concat(test2.name, "s"));
|
|
66
|
+
});
|
|
67
|
+
return splitArray(orderedTests, workersAmount);
|
|
68
|
+
}
|
|
69
|
+
function setPackageAlphabeticalOrder(tests, workersAmount, testRepeats) {
|
|
70
|
+
var packages = splitTestsByPackages(tests);
|
|
71
|
+
if (workersAmount > packages.size) workersAmount = packages.size;
|
|
72
|
+
var _iterator3 = _createForOfIteratorHelper(packages.keys()),
|
|
73
|
+
_step3;
|
|
74
|
+
try {
|
|
75
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
76
|
+
var packageName = _step3.value;
|
|
77
|
+
packages.set(packageName, repeatTests(packages.get(packageName), testRepeats));
|
|
78
|
+
packages.set(packageName, packages.get(packageName).sort(alphabeticalSortFunction));
|
|
79
|
+
}
|
|
80
|
+
} catch (err) {
|
|
81
|
+
_iterator3.e(err);
|
|
82
|
+
} finally {
|
|
83
|
+
_iterator3.f();
|
|
84
|
+
}
|
|
85
|
+
var splittedPackagesArray = splitArray((0, _toConsumableArray2["default"])(packages.values()), workersAmount);
|
|
86
|
+
var splittedTestsArray = [];
|
|
87
|
+
for (var _i2 = 0, _splittedPackagesArra2 = splittedPackagesArray; _i2 < _splittedPackagesArra2.length; _i2++) {
|
|
88
|
+
var _splitArray2 = _splittedPackagesArra2[_i2];
|
|
89
|
+
var testsArray = [];
|
|
90
|
+
var _iterator4 = _createForOfIteratorHelper(_splitArray2),
|
|
91
|
+
_step4;
|
|
92
|
+
try {
|
|
93
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
94
|
+
var packageTests = _step4.value;
|
|
95
|
+
testsArray = testsArray.concat(packageTests);
|
|
96
|
+
}
|
|
97
|
+
} catch (err) {
|
|
98
|
+
_iterator4.e(err);
|
|
99
|
+
} finally {
|
|
100
|
+
_iterator4.f();
|
|
101
|
+
}
|
|
102
|
+
splittedTestsArray.push(testsArray);
|
|
103
|
+
}
|
|
104
|
+
return splittedTestsArray;
|
|
105
|
+
}
|
|
106
|
+
function alphabeticalSortFunction(test1, test2) {
|
|
107
|
+
return "".concat(test1.category, ": ").concat(test1.name, "s").localeCompare("".concat(test2.category, ": ").concat(test2.name, "s"));
|
|
108
|
+
}
|
|
109
|
+
function splitTestsByPackages(tests) {
|
|
110
|
+
var resultMap = new Map();
|
|
111
|
+
var _iterator5 = _createForOfIteratorHelper(tests),
|
|
112
|
+
_step5;
|
|
113
|
+
try {
|
|
114
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
115
|
+
var test = _step5.value;
|
|
116
|
+
if (resultMap.has(test.packageName)) resultMap.get(test.packageName).push(test);else resultMap.set(test.packageName, [test]);
|
|
117
|
+
}
|
|
118
|
+
} catch (err) {
|
|
119
|
+
_iterator5.e(err);
|
|
120
|
+
} finally {
|
|
121
|
+
_iterator5.f();
|
|
122
|
+
}
|
|
123
|
+
return resultMap;
|
|
124
|
+
}
|
|
125
|
+
function repeatTests(tests, testRepeats) {
|
|
126
|
+
var repeatedTests = [];
|
|
127
|
+
var _iterator6 = _createForOfIteratorHelper(tests),
|
|
128
|
+
_step6;
|
|
129
|
+
try {
|
|
130
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
131
|
+
var test = _step6.value;
|
|
132
|
+
for (var i = 0; i < testRepeats; i++) {
|
|
133
|
+
repeatedTests.push(_objectSpread({}, test));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
} catch (err) {
|
|
137
|
+
_iterator6.e(err);
|
|
138
|
+
} finally {
|
|
139
|
+
_iterator6.f();
|
|
140
|
+
}
|
|
141
|
+
return repeatedTests;
|
|
142
|
+
}
|
|
143
|
+
function shuffle(array) {
|
|
144
|
+
var newArr = array.slice();
|
|
145
|
+
newArr.sort(function () {
|
|
146
|
+
return Math.random() - 0.5;
|
|
147
|
+
});
|
|
148
|
+
return newArr;
|
|
149
|
+
}
|
|
150
|
+
;
|
|
151
|
+
function splitArray(arr, countOfParts) {
|
|
152
|
+
var result = [];
|
|
153
|
+
var partSize = Math.ceil(arr.length / countOfParts);
|
|
154
|
+
for (var i = 0; i < arr.length; i += partSize) {
|
|
155
|
+
result.push(arr.slice(i, i + partSize));
|
|
156
|
+
}
|
|
157
|
+
return result;
|
|
158
|
+
}
|
package/bin/utils/utils.js
CHANGED
|
@@ -22,7 +22,9 @@ exports.kebabToCamelCase = kebabToCamelCase;
|
|
|
22
22
|
exports.mapURL = mapURL;
|
|
23
23
|
exports.queryWrapperTemplate = exports.queryExtension = exports.propertyTypes = exports.paramRegex = exports.namespaceTemplate = exports.nameRegex = exports.nameAnnRegex = void 0;
|
|
24
24
|
exports.removeScope = removeScope;
|
|
25
|
-
exports.
|
|
25
|
+
exports.replacers = void 0;
|
|
26
|
+
exports.runScript = runScript;
|
|
27
|
+
exports.scriptWrapperTemplate = exports.scriptLangExtMap = exports.scriptExtensions = void 0;
|
|
26
28
|
exports.spaceToCamelCase = spaceToCamelCase;
|
|
27
29
|
exports.wordsToCamelCase = wordsToCamelCase;
|
|
28
30
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
@@ -32,9 +34,13 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
32
34
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
33
35
|
var _fs = _interopRequireDefault(require("fs"));
|
|
34
36
|
var _path = _interopRequireDefault(require("path"));
|
|
37
|
+
var _child_process = require("child_process");
|
|
38
|
+
var _util = require("util");
|
|
35
39
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
36
40
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
37
41
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
42
|
+
var execAsync = (0, _util.promisify)(_child_process.exec);
|
|
43
|
+
|
|
38
44
|
/* Waits [ms] milliseconds */
|
|
39
45
|
function delay(_x) {
|
|
40
46
|
return _delay.apply(this, arguments);
|
|
@@ -280,4 +286,48 @@ function getScriptInputs(script) {
|
|
|
280
286
|
var dgImports = exports.dgImports = "import * as grok from 'datagrok-api/grok';\nimport * as DG from 'datagrok-api/dg';\n\n";
|
|
281
287
|
var scriptWrapperTemplate = exports.scriptWrapperTemplate = "export async function #{FUNC_NAME_LOWERCASE}(#{TYPED_PARAMS}): Promise<#{OUTPUT_TYPE}> {\n return await grok.functions.call('#{PACKAGE_NAMESPACE}:#{FUNC_NAME}', #{PARAMS_OBJECT});\n}";
|
|
282
288
|
var queryWrapperTemplate = exports.queryWrapperTemplate = "export async function #{FUNC_NAME_LOWERCASE}(#{TYPED_PARAMS}): Promise<#{OUTPUT_TYPE}> {\n return await grok.data.query('#{PACKAGE_NAMESPACE}:#{FUNC_NAME}', #{PARAMS_OBJECT});\n}";
|
|
283
|
-
var namespaceTemplate = exports.namespaceTemplate = "export namespace #{PACKAGE_NAMESPACE} {\n#{NAME}\n}";
|
|
289
|
+
var namespaceTemplate = exports.namespaceTemplate = "export namespace #{PACKAGE_NAMESPACE} {\n#{NAME}\n}";
|
|
290
|
+
function runScript(_x2, _x3) {
|
|
291
|
+
return _runScript.apply(this, arguments);
|
|
292
|
+
}
|
|
293
|
+
function _runScript() {
|
|
294
|
+
_runScript = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(script, path) {
|
|
295
|
+
var verbose,
|
|
296
|
+
_yield$execAsync,
|
|
297
|
+
stdout,
|
|
298
|
+
stderr,
|
|
299
|
+
_args2 = arguments;
|
|
300
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
301
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
302
|
+
case 0:
|
|
303
|
+
verbose = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : false;
|
|
304
|
+
_context2.prev = 1;
|
|
305
|
+
_context2.next = 4;
|
|
306
|
+
return execAsync(script, {
|
|
307
|
+
cwd: path
|
|
308
|
+
});
|
|
309
|
+
case 4:
|
|
310
|
+
_yield$execAsync = _context2.sent;
|
|
311
|
+
stdout = _yield$execAsync.stdout;
|
|
312
|
+
stderr = _yield$execAsync.stderr;
|
|
313
|
+
if (stderr && verbose) {
|
|
314
|
+
console.error("Warning/Error: ".concat(stderr));
|
|
315
|
+
}
|
|
316
|
+
if (stdout && verbose) {
|
|
317
|
+
console.log("Output: ".concat(stdout));
|
|
318
|
+
}
|
|
319
|
+
_context2.next = 15;
|
|
320
|
+
break;
|
|
321
|
+
case 11:
|
|
322
|
+
_context2.prev = 11;
|
|
323
|
+
_context2.t0 = _context2["catch"](1);
|
|
324
|
+
console.error("Execution failed: ".concat(_context2.t0.message));
|
|
325
|
+
throw new Error("Cant run script");
|
|
326
|
+
case 15:
|
|
327
|
+
case "end":
|
|
328
|
+
return _context2.stop();
|
|
329
|
+
}
|
|
330
|
+
}, _callee2, null, [[1, 11]]);
|
|
331
|
+
}));
|
|
332
|
+
return _runScript.apply(this, arguments);
|
|
333
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as DG from "datagrok-api/dg";
|
|
2
2
|
import * as grok from 'datagrok-api/grok';
|
|
3
|
-
import { runTests, tests, TestContext } from '@datagrok-libraries/utils/src/test';
|
|
3
|
+
import { runTests, tests, TestContext , initAutoTests as initTests } from '@datagrok-libraries/utils/src/test';
|
|
4
4
|
|
|
5
5
|
export let _package = new DG.Package();
|
|
6
6
|
export { tests };
|
|
@@ -13,4 +13,9 @@ export { tests };
|
|
|
13
13
|
export async function test(category: string, test: string, testContext: TestContext): Promise<DG.DataFrame> {
|
|
14
14
|
const data = await runTests({ category, test, testContext });
|
|
15
15
|
return DG.DataFrame.fromObjects(data)!;
|
|
16
|
-
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//name: initAutoTests
|
|
19
|
+
export async function initAutoTests() {
|
|
20
|
+
await initTests(_package, _package.getModule('package-test.js'));
|
|
21
|
+
}
|
package/package.json
CHANGED