datagrok-tools 4.13.58 → 4.13.60

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 CHANGED
@@ -1,5 +1,19 @@
1
1
  # Datagrok-tools changelog
2
2
 
3
+ ## 4.13.60 (2025-01-09)
4
+
5
+ ### Features
6
+
7
+ * Updated console output for cases "Tests not found"
8
+
9
+ ## 4.13.59 (2025-01-09)
10
+
11
+ ### Features
12
+
13
+ * Benchmark testing fix
14
+ * Updated csv output result(it saves benchmark and stress data now)
15
+
16
+
3
17
  ## 4.13.58 (2025-01-09)
4
18
 
5
19
  ### Features
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.help = void 0;
7
- var HELP = "\nUsage: grok <command>\n\nDatagrok's package management tool\n\nCommands:\n add Add an object template\n api Create wrapper functions\n check Check package content (function signatures, etc.)\n config Create and manage config files\n create Create a package\n init Modify a package template\n link Link `datagrok-api` and libraries for local development\n publish Upload a package\n test Run package tests\n testAll Run packages tests\n\nTo get help on a particular command, use:\n grok <command> --help\n\nRead more about the package development workflow:\nhttps://datagrok.ai/help/develop/develop\n";
7
+ var HELP = "\nUsage: grok <command>\n\nDatagrok's package management tool\n\nCommands:\n add Add an object template\n api Create wrapper functions\n check Check package content (function signatures, etc.)\n config Create and manage config files\n create Create a package\n init Modify a package template\n link Link `datagrok-api` and libraries for local development\n publish Upload a package\n test Run package tests\n testall Run packages tests\n\nTo get help on a particular command, use:\n grok <command> --help\n\nRead more about the package development workflow:\nhttps://datagrok.ai/help/develop/develop\n";
8
8
  var HELP_ADD = "\nUsage: grok add <entity> <name>\n\nAdd an object template to your package:\n\ngrok add app <name>\ngrok add connection <name>\ngrok add detector <semantic-type-name>\ngrok add function [tag] <name>\ngrok add query <name>\ngrok add script [tag] <language> <name>\ngrok add view <name>\ngrok add viewer <name>\ngrok add tests\n\nPlease note that entity names may only include letters and numbers\n\nSupported languages for scripts:\njavascript, julia, node, octave, python, r\n\nAvailable tags:\npanel, init\n";
9
9
  var HELP_INIT = "\nUsage: grok init\n\nModify a package template by adding config files for linters, IDE, etc.\n\nOptions:\n[--eslint] [--ide] [--test] [--ts] [--git]\n\n--eslint Add a configuration for eslint\n--ide Add an IDE-specific configuration for debugging (vscode)\n--test Add tests support (TypeScript packages only)\n--ts Convert a JavaScript package to TypeScript\n--git Configure GIT and install commit linting tools.\n Read more: https://datagrok.ai/help/develop/advanced/git-policy\n";
10
10
  var HELP_API = "\nUsage: grok api\n\nCreate wrapper functions for package scripts and queries\n";
@@ -16,7 +16,6 @@ var utils = _interopRequireWildcard(require("../utils/utils"));
16
16
  var _testUtils = _interopRequireWildcard(require("../utils/test-utils"));
17
17
  var testUtils = _testUtils;
18
18
  var _orderFunctions = require("../utils/order-functions");
19
- var Papa = _interopRequireWildcard(require("papaparse"));
20
19
  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); }
21
20
  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; }
22
21
  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; } } }; }
@@ -66,7 +65,7 @@ function testAll(_x) {
66
65
  }
67
66
  function _testAll() {
68
67
  _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;
68
+ var _args$tags, _args$order, _args$benchmark, _args$stressTest, _args$catchUnhandled, _args$gui, _args$record, _args$report, _args$verbose;
70
69
  var config, packagesToRun, testsObj, filteredTests, browsersOrder, testsResults, i, _iterator, _step, result;
71
70
  return _regenerator["default"].wrap(function _callee$(_context) {
72
71
  while (1) switch (_context.prev = _context.next) {
@@ -94,6 +93,7 @@ function _testAll() {
94
93
  _context.next = 16;
95
94
  return runTests(browsersOrder, {
96
95
  benchmark: (_args$benchmark = args.benchmark) !== null && _args$benchmark !== void 0 ? _args$benchmark : false,
96
+ stressTest: (_args$stressTest = args['stress-test']) !== null && _args$stressTest !== void 0 ? _args$stressTest : false,
97
97
  catchUnhandled: (_args$catchUnhandled = args.catchUnhandled) !== null && _args$catchUnhandled !== void 0 ? _args$catchUnhandled : false,
98
98
  gui: (_args$gui = args.gui) !== null && _args$gui !== void 0 ? _args$gui : false,
99
99
  record: (_args$record = args.record) !== null && _args$record !== void 0 ? _args$record : false,
@@ -272,7 +272,7 @@ function runTests(_x5, _x6) {
272
272
  }
273
273
  function _runTests() {
274
274
  _runTests = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(browsersOrder, browserOptions) {
275
- var browsersCommands, _iterator3, _step3, browserOrder, browsersPromises, _i, _browsersCommands, browserCommands, resultObjects, i;
275
+ var browsersCommands, _iterator3, _step3, browserOrder, browsersPromises, _i, _browsersCommands, browserCommands, resultObjects, i, _browserOptions$stres, _browserOptions$bench;
276
276
  return _regenerator["default"].wrap(function _callee4$(_context5) {
277
277
  while (1) switch (_context5.prev = _context5.next) {
278
278
  case 0:
@@ -312,56 +312,32 @@ function _runTests() {
312
312
  i = 0;
313
313
  case 9:
314
314
  if (!(i < resultObjects.length)) {
315
- _context5.next = 16;
315
+ _context5.next = 22;
316
316
  break;
317
317
  }
318
318
  _context5.next = 12;
319
- return addBrowserColumn(resultObjects[i].csv, i);
319
+ return (0, _testUtils.addColumnToCsv)(resultObjects[i].csv, "browser", i);
320
320
  case 12:
321
321
  resultObjects[i].csv = _context5.sent;
322
- case 13:
322
+ _context5.next = 15;
323
+ return (0, _testUtils.addColumnToCsv)(resultObjects[i].csv, "stress_test", (_browserOptions$stres = browserOptions.stressTest) !== null && _browserOptions$stres !== void 0 ? _browserOptions$stres : false);
324
+ case 15:
325
+ resultObjects[i].csv = _context5.sent;
326
+ _context5.next = 18;
327
+ return (0, _testUtils.addColumnToCsv)(resultObjects[i].csv, "benchmark", (_browserOptions$bench = browserOptions.benchmark) !== null && _browserOptions$bench !== void 0 ? _browserOptions$bench : false);
328
+ case 18:
329
+ resultObjects[i].csv = _context5.sent;
330
+ case 19:
323
331
  i++;
324
332
  _context5.next = 9;
325
333
  break;
326
- case 16:
334
+ case 22:
327
335
  return _context5.abrupt("return", resultObjects);
328
- case 17:
336
+ case 23:
329
337
  case "end":
330
338
  return _context5.stop();
331
339
  }
332
340
  }, _callee4);
333
341
  }));
334
342
  return _runTests.apply(this, arguments);
335
- }
336
- function addBrowserColumn(_x7, _x8) {
337
- return _addBrowserColumn.apply(this, arguments);
338
- }
339
- function _addBrowserColumn() {
340
- _addBrowserColumn = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(csv, workerNumber) {
341
- var result;
342
- return _regenerator["default"].wrap(function _callee5$(_context6) {
343
- while (1) switch (_context6.prev = _context6.next) {
344
- case 0:
345
- result = "";
346
- Papa.parse(csv, {
347
- header: true,
348
- skipEmptyLines: true,
349
- complete: function complete(results) {
350
- var dataWithDefaultColumn = results.data.map(function (row) {
351
- row["browser"] = workerNumber;
352
- return row;
353
- });
354
- result = Papa.unparse(dataWithDefaultColumn, {
355
- header: true
356
- });
357
- }
358
- });
359
- return _context6.abrupt("return", result);
360
- case 3:
361
- case "end":
362
- return _context6.stop();
363
- }
364
- }, _callee5);
365
- }));
366
- return _addBrowserColumn.apply(this, arguments);
367
343
  }
@@ -68,7 +68,10 @@ function _test() {
68
68
  res = _context.sent;
69
69
  if (args.csv) (0, _testUtils.saveCsvResults)([res.csv], csvReportDir);
70
70
  (0, _testUtils.printBrowsersResult)(res, args.verbose);
71
- if (res.failed) testUtils.exitWithCode(1);else testUtils.exitWithCode(0);
71
+ if (res.failed) {
72
+ if (res.verboseFailed === 'Package not found') testUtils.exitWithCode(0);
73
+ testUtils.exitWithCode(1);
74
+ } else testUtils.exitWithCode(0);
72
75
  return _context.abrupt("return", true);
73
76
  case 20:
74
77
  case "end":
@@ -91,7 +94,7 @@ function runTesting(_x2) {
91
94
  function _runTesting() {
92
95
  _runTesting = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(args) {
93
96
  var _process$env$TARGET_P, _args$category;
94
- var testsObj, parsed, organized, filtered, categoryRegex, _iterator, _step, element, testsResults, r, browserId;
97
+ var loadedTests, testsObj, _iterator, _step, element, parsed, organized, filtered, categoryRegex, _iterator2, _step2, _element, testsResults, r, browserId;
95
98
  return _regenerator["default"].wrap(function _callee3$(_context3) {
96
99
  while (1) switch (_context3.prev = _context3.next) {
97
100
  case 0:
@@ -99,10 +102,51 @@ function _runTesting() {
99
102
  _context3.next = 3;
100
103
  return (0, _testUtils.loadTestsList)([(_process$env$TARGET_P = process.env.TARGET_PACKAGE) !== null && _process$env$TARGET_P !== void 0 ? _process$env$TARGET_P : ''], args.core);
101
104
  case 3:
102
- testsObj = _context3.sent;
105
+ loadedTests = _context3.sent;
106
+ testsObj = [];
107
+ if (!(args['stress-test'] || args.benchmark)) {
108
+ _context3.next = 26;
109
+ break;
110
+ }
111
+ _iterator = _createForOfIteratorHelper(loadedTests);
112
+ _context3.prev = 7;
113
+ _iterator.s();
114
+ case 9:
115
+ if ((_step = _iterator.n()).done) {
116
+ _context3.next = 16;
117
+ break;
118
+ }
119
+ element = _step.value;
120
+ if (!(args.benchmark && !element.options.benchmark || args['stress-test'] && !element.options.stressTest)) {
121
+ _context3.next = 13;
122
+ break;
123
+ }
124
+ return _context3.abrupt("continue", 14);
125
+ case 13:
126
+ testsObj.push(element);
127
+ case 14:
128
+ _context3.next = 9;
129
+ break;
130
+ case 16:
131
+ _context3.next = 21;
132
+ break;
133
+ case 18:
134
+ _context3.prev = 18;
135
+ _context3.t0 = _context3["catch"](7);
136
+ _iterator.e(_context3.t0);
137
+ case 21:
138
+ _context3.prev = 21;
139
+ _iterator.f();
140
+ return _context3.finish(21);
141
+ case 24:
142
+ _context3.next = 27;
143
+ break;
144
+ case 26:
145
+ testsObj = loadedTests;
146
+ case 27:
103
147
  parsed = (0, _orderFunctions.setAlphabeticalOrder)(testsObj, 1, 1);
104
148
  if (!(parsed.length == 0)) {
105
- _context3.next = 7;
149
+ _context3.next = 30;
106
150
  break;
107
151
  }
108
152
  return _context3.abrupt("return", {
@@ -115,7 +159,7 @@ function _runTesting() {
115
159
  failedAmount: 0,
116
160
  csv: ''
117
161
  });
118
- case 7:
162
+ case 30:
119
163
  organized = parsed[0].map(function (testObj) {
120
164
  return {
121
165
  "package": testObj.packageName,
@@ -132,18 +176,18 @@ function _runTesting() {
132
176
  filtered = [];
133
177
  categoryRegex = new RegExp("".concat((_args$category = args.category) === null || _args$category === void 0 ? void 0 : _args$category.replaceAll(' ', ''), ".*"));
134
178
  if (args.category) {
135
- _iterator = _createForOfIteratorHelper(organized);
179
+ _iterator2 = _createForOfIteratorHelper(organized);
136
180
  try {
137
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
138
- element = _step.value;
139
- if (categoryRegex.test(element.params.category.replaceAll(' ', ''))) {
140
- if (element.params.test === args.test || !args.test) filtered.push(element);
181
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
182
+ _element = _step2.value;
183
+ if (categoryRegex.test(_element.params.category.replaceAll(' ', ''))) {
184
+ if (_element.params.test === args.test || !args.test) filtered.push(_element);
141
185
  }
142
186
  }
143
187
  } catch (err) {
144
- _iterator.e(err);
188
+ _iterator2.e(err);
145
189
  } finally {
146
- _iterator.f();
190
+ _iterator2.f();
147
191
  }
148
192
  organized = filtered;
149
193
  }
@@ -154,15 +198,16 @@ function _runTesting() {
154
198
  color.info('Starting tests...');
155
199
  testsResults = [];
156
200
  browserId = 1;
157
- _context3.next = 17;
201
+ _context3.next = 40;
158
202
  return (0, _testUtils.timeout)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
159
- var _args$benchmark, _args$catchUnhandled, _args$gui, _args$record, _args$report, _args$verbose, _args$ciCd, testsLeft, testsToReproduce, _iterator2, _step2, testData, reproduced, _iterator3, _step3, _test2, _reproducedTest2;
203
+ var _args$benchmark, _args$stressTest, _args$catchUnhandled, _args$gui, _args$record, _args$report, _args$verbose, _args$ciCd, _args$stressTest2, _args$benchmark2, testsLeft, testsToReproduce, _iterator3, _step3, testData, reproduced, _iterator4, _step4, _test2, _reproducedTest2;
160
204
  return _regenerator["default"].wrap(function _callee2$(_context2) {
161
205
  while (1) switch (_context2.prev = _context2.next) {
162
206
  case 0:
163
207
  _context2.next = 2;
164
208
  return (0, _testUtils.runBrowser)(organized, {
165
209
  benchmark: (_args$benchmark = args.benchmark) !== null && _args$benchmark !== void 0 ? _args$benchmark : false,
210
+ stressTest: (_args$stressTest = args['stress-test']) !== null && _args$stressTest !== void 0 ? _args$stressTest : false,
166
211
  catchUnhandled: (_args$catchUnhandled = args.catchUnhandled) !== null && _args$catchUnhandled !== void 0 ? _args$catchUnhandled : false,
167
212
  gui: (_args$gui = args.gui) !== null && _args$gui !== void 0 ? _args$gui : false,
168
213
  record: (_args$record = args.record) !== null && _args$record !== void 0 ? _args$record : false,
@@ -175,19 +220,19 @@ function _runTesting() {
175
220
  r = _context2.sent;
176
221
  testsLeft = [];
177
222
  testsToReproduce = [];
178
- _iterator2 = _createForOfIteratorHelper(organized);
223
+ _iterator3 = _createForOfIteratorHelper(organized);
179
224
  try {
180
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
181
- testData = _step2.value;
225
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
226
+ testData = _step3.value;
182
227
  if (!r.verbosePassed.includes("".concat(testData.params.category, ": ").concat(testData.params.test)) && !r.verboseSkipped.includes("".concat(testData.params.category, ": ").concat(testData.params.test)) && !r.verboseFailed.includes("".concat(testData.params.category, ": ").concat(testData.params.test)) && !new RegExp("".concat(testData.params.category.trim(), "[^\\n]*: (before|after)")).test(r.verboseFailed)) testsLeft.push(testData);
183
228
  if (r.verboseFailed.includes("".concat(testData.params.category, ": ").concat(testData.params.test, " : Error:"))) {
184
229
  testsToReproduce.push(testData);
185
230
  }
186
231
  }
187
232
  } catch (err) {
188
- _iterator2.e(err);
233
+ _iterator3.e(err);
189
234
  } finally {
190
- _iterator2.f();
235
+ _iterator3.f();
191
236
  }
192
237
  if (!(testsToReproduce.length > 0)) {
193
238
  _context2.next = 31;
@@ -197,15 +242,15 @@ function _runTesting() {
197
242
  return reproducedTest(args, testsToReproduce);
198
243
  case 10:
199
244
  reproduced = _context2.sent;
200
- _iterator3 = _createForOfIteratorHelper(testsToReproduce);
245
+ _iterator4 = _createForOfIteratorHelper(testsToReproduce);
201
246
  _context2.prev = 12;
202
- _iterator3.s();
247
+ _iterator4.s();
203
248
  case 14:
204
- if ((_step3 = _iterator3.n()).done) {
249
+ if ((_step4 = _iterator4.n()).done) {
205
250
  _context2.next = 23;
206
251
  break;
207
252
  }
208
- _test2 = _step3.value;
253
+ _test2 = _step4.value;
209
254
  _reproducedTest2 = reproduced.get(_test2);
210
255
  if (!(_reproducedTest2 && !_reproducedTest2.failed)) {
211
256
  _context2.next = 21;
@@ -224,36 +269,49 @@ function _runTesting() {
224
269
  case 25:
225
270
  _context2.prev = 25;
226
271
  _context2.t0 = _context2["catch"](12);
227
- _iterator3.e(_context2.t0);
272
+ _iterator4.e(_context2.t0);
228
273
  case 28:
229
274
  _context2.prev = 28;
230
- _iterator3.f();
275
+ _iterator4.f();
231
276
  return _context2.finish(28);
232
277
  case 31:
278
+ _context2.next = 33;
279
+ return (0, _testUtils.addColumnToCsv)(r.csv, "stress_test", (_args$stressTest2 = args['stress-test']) !== null && _args$stressTest2 !== void 0 ? _args$stressTest2 : false);
280
+ case 33:
281
+ r.csv = _context2.sent;
282
+ _context2.next = 36;
283
+ return (0, _testUtils.addColumnToCsv)(r.csv, "benchmark", (_args$benchmark2 = args.benchmark) !== null && _args$benchmark2 !== void 0 ? _args$benchmark2 : false);
284
+ case 36:
285
+ r.csv = _context2.sent;
233
286
  testsResults.push(r);
234
287
  organized = testsLeft;
235
288
  browserId++;
236
- case 34:
289
+ if (!(r.verboseFailed === 'Tests execution failed')) {
290
+ _context2.next = 42;
291
+ break;
292
+ }
293
+ return _context2.abrupt("break", 43);
294
+ case 42:
237
295
  if (r.failed) {
238
296
  _context2.next = 0;
239
297
  break;
240
298
  }
241
- case 35:
299
+ case 43:
242
300
  case "end":
243
301
  return _context2.stop();
244
302
  }
245
303
  }, _callee2, null, [[12, 25, 28, 31]]);
246
304
  })), testInvocationTimeout);
247
- case 17:
248
- _context3.next = 19;
305
+ case 40:
306
+ _context3.next = 42;
249
307
  return (0, _testUtils.mergeBrowsersResults)(testsResults);
250
- case 19:
308
+ case 42:
251
309
  return _context3.abrupt("return", _context3.sent);
252
- case 20:
310
+ case 43:
253
311
  case "end":
254
312
  return _context3.stop();
255
313
  }
256
- }, _callee3);
314
+ }, _callee3, null, [[7, 18, 21, 24]]);
257
315
  }));
258
316
  return _runTesting.apply(this, arguments);
259
317
  }
@@ -262,23 +320,23 @@ function reproducedTest(_x3, _x4) {
262
320
  }
263
321
  function _reproducedTest() {
264
322
  _reproducedTest = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(args, testsToReproduce) {
265
- var res, _iterator4, _step4, _args$benchmark2, _args$ciCd2, _test3, r;
323
+ var res, _iterator5, _step5, _args$benchmark3, _args$ciCd2, _test3, r;
266
324
  return _regenerator["default"].wrap(function _callee4$(_context4) {
267
325
  while (1) switch (_context4.prev = _context4.next) {
268
326
  case 0:
269
327
  res = new Map();
270
- _iterator4 = _createForOfIteratorHelper(testsToReproduce);
328
+ _iterator5 = _createForOfIteratorHelper(testsToReproduce);
271
329
  _context4.prev = 2;
272
- _iterator4.s();
330
+ _iterator5.s();
273
331
  case 4:
274
- if ((_step4 = _iterator4.n()).done) {
332
+ if ((_step5 = _iterator5.n()).done) {
275
333
  _context4.next = 12;
276
334
  break;
277
335
  }
278
- _test3 = _step4.value;
336
+ _test3 = _step5.value;
279
337
  _context4.next = 8;
280
338
  return (0, _testUtils.runBrowser)([_test3], {
281
- benchmark: (_args$benchmark2 = args.benchmark) !== null && _args$benchmark2 !== void 0 ? _args$benchmark2 : false,
339
+ benchmark: (_args$benchmark3 = args.benchmark) !== null && _args$benchmark3 !== void 0 ? _args$benchmark3 : false,
282
340
  catchUnhandled: false,
283
341
  gui: false,
284
342
  record: false,
@@ -300,10 +358,10 @@ function _reproducedTest() {
300
358
  case 14:
301
359
  _context4.prev = 14;
302
360
  _context4.t0 = _context4["catch"](2);
303
- _iterator4.e(_context4.t0);
361
+ _iterator5.e(_context4.t0);
304
362
  case 17:
305
363
  _context4.prev = 17;
306
- _iterator4.f();
364
+ _iterator5.f();
307
365
  return _context4.finish(17);
308
366
  case 20:
309
367
  return _context4.abrupt("return", res);
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.TestContext = void 0;
9
+ exports.addColumnToCsv = addColumnToCsv;
9
10
  exports.addLogsToFile = addLogsToFile;
10
11
  exports.defaultLaunchParameters = void 0;
11
12
  exports.exitWithCode = exitWithCode;
@@ -38,6 +39,7 @@ var utils = _utils;
38
39
  var _puppeteerScreenRecorder = require("puppeteer-screen-recorder");
39
40
  var _puppeteer = _interopRequireDefault(require("puppeteer"));
40
41
  var color = _interopRequireWildcard(require("../utils/color-utils"));
42
+ var _papaparse = _interopRequireDefault(require("papaparse"));
41
43
  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); }
42
44
  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; }
43
45
  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; } } }; }
@@ -597,7 +599,7 @@ function printBrowsersResult(browserResult) {
597
599
  console.log("Skipped amount: " + (browserResult === null || browserResult === void 0 ? void 0 : browserResult.skippedAmount));
598
600
  console.log("Failed amount: " + (browserResult === null || browserResult === void 0 ? void 0 : browserResult.failedAmount));
599
601
  if (browserResult.failed) {
600
- color.fail('Tests failed.');
602
+ if (browserResult.verboseFailed === 'Package not found') color.fail('Tests not found');else color.fail('Tests failed.');
601
603
  } else {
602
604
  color.success('Tests passed.');
603
605
  }
@@ -791,4 +793,36 @@ var TestContext = exports.TestContext = /*#__PURE__*/(0, _createClass2["default"
791
793
  (0, _defineProperty2["default"])(this, "report", false);
792
794
  if (catchUnhandled !== undefined) this.catchUnhandled = catchUnhandled;
793
795
  if (report !== undefined) this.report = report;
794
- });
796
+ });
797
+ function addColumnToCsv(_x22, _x23, _x24) {
798
+ return _addColumnToCsv.apply(this, arguments);
799
+ }
800
+ function _addColumnToCsv() {
801
+ _addColumnToCsv = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12(csv, columnName, defaultValue) {
802
+ var result;
803
+ return _regenerator["default"].wrap(function _callee12$(_context12) {
804
+ while (1) switch (_context12.prev = _context12.next) {
805
+ case 0:
806
+ result = csv;
807
+ _papaparse["default"].parse(csv, {
808
+ header: true,
809
+ skipEmptyLines: true,
810
+ complete: function complete(results) {
811
+ var dataWithDefaultColumn = results.data.map(function (row) {
812
+ row[columnName] = defaultValue;
813
+ return row;
814
+ });
815
+ result = _papaparse["default"].unparse(dataWithDefaultColumn, {
816
+ header: true
817
+ });
818
+ }
819
+ });
820
+ return _context12.abrupt("return", result);
821
+ case 3:
822
+ case "end":
823
+ return _context12.stop();
824
+ }
825
+ }, _callee12);
826
+ }));
827
+ return _addColumnToCsv.apply(this, arguments);
828
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "datagrok-tools",
3
- "version": "4.13.58",
3
+ "version": "4.13.60",
4
4
  "description": "Utility to upload and publish packages to Datagrok",
5
5
  "homepage": "https://github.com/datagrok-ai/public/tree/master/tools#readme",
6
6
  "dependencies": {