@sasjs/cli 3.12.1 → 3.12.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/build/commands/add/spec/addTarget.spec.js +10 -8
- package/build/commands/compile/compile.js +49 -6
- package/build/commands/compile/spec/compile.spec.js +33 -1
- package/build/commands/testing/internal/saveOutput.d.ts +2 -2
- package/build/commands/testing/spec/mockedAdapter/testResponses.js +10 -0
- package/build/commands/testing/spec/testing.spec.js +23 -0
- package/build/commands/testing/test.js +23 -6
- package/build/types/index.d.ts +1 -1
- package/build/types/testing.d.ts +8 -0
- package/build/utils/test.js +3 -0
- package/package.json +3 -3
|
@@ -82,6 +82,7 @@ describe('addTarget', function () {
|
|
|
82
82
|
var viyaTargetName = "test-viya-".concat((0, utils_1.generateTimestamp)());
|
|
83
83
|
var sas9TargetName = "test-sas9-".concat((0, utils_1.generateTimestamp)());
|
|
84
84
|
var sasjsTargetName = "test-server-".concat((0, utils_1.generateTimestamp)());
|
|
85
|
+
var serverUrl = process.env.VIYA_SERVER_URL || '';
|
|
85
86
|
var globalTestTarget;
|
|
86
87
|
beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
87
88
|
return __generator(this, function (_a) {
|
|
@@ -138,7 +139,7 @@ describe('addTarget', function () {
|
|
|
138
139
|
serverType: utils_1.ServerType.SasViya,
|
|
139
140
|
name: viyaTargetName,
|
|
140
141
|
appLoc: '/Public/app',
|
|
141
|
-
serverUrl:
|
|
142
|
+
serverUrl: serverUrl,
|
|
142
143
|
existingTarget: {}
|
|
143
144
|
};
|
|
144
145
|
jest
|
|
@@ -175,7 +176,7 @@ describe('addTarget', function () {
|
|
|
175
176
|
serverType: utils_1.ServerType.Sasjs,
|
|
176
177
|
name: sasjsTargetName,
|
|
177
178
|
appLoc: '/Public/app',
|
|
178
|
-
serverUrl:
|
|
179
|
+
serverUrl: serverUrl,
|
|
179
180
|
existingTarget: {}
|
|
180
181
|
};
|
|
181
182
|
jest
|
|
@@ -211,7 +212,7 @@ describe('addTarget', function () {
|
|
|
211
212
|
serverType: utils_1.ServerType.Sas9,
|
|
212
213
|
name: sas9TargetName,
|
|
213
214
|
appLoc: '/Public/app',
|
|
214
|
-
serverUrl:
|
|
215
|
+
serverUrl: serverUrl,
|
|
215
216
|
existingTarget: {}
|
|
216
217
|
};
|
|
217
218
|
jest
|
|
@@ -248,7 +249,7 @@ describe('addTarget', function () {
|
|
|
248
249
|
serverType: utils_1.ServerType.SasViya,
|
|
249
250
|
name: viyaTargetName,
|
|
250
251
|
appLoc: '/Public/app',
|
|
251
|
-
serverUrl:
|
|
252
|
+
serverUrl: serverUrl,
|
|
252
253
|
existingTarget: {}
|
|
253
254
|
};
|
|
254
255
|
jest
|
|
@@ -285,12 +286,13 @@ describe('addTarget', function () {
|
|
|
285
286
|
case 1:
|
|
286
287
|
config = _a.sent();
|
|
287
288
|
targetJson = (config.targets || []).find(function (t) { return t.name === 'viya'; });
|
|
289
|
+
targetJson.streamConfig.streamWeb = false;
|
|
288
290
|
commonFields = {
|
|
289
291
|
scope: targetScope_1.TargetScope.Local,
|
|
290
292
|
serverType: utils_1.ServerType.SasViya,
|
|
291
293
|
name: 'viya',
|
|
292
294
|
appLoc: '/Public/app/new/location',
|
|
293
|
-
serverUrl:
|
|
295
|
+
serverUrl: serverUrl,
|
|
294
296
|
existingTarget: targetJson
|
|
295
297
|
};
|
|
296
298
|
jest
|
|
@@ -332,7 +334,7 @@ describe('addTarget', function () {
|
|
|
332
334
|
serverType: utils_1.ServerType.Sas9,
|
|
333
335
|
name: 'sas9',
|
|
334
336
|
appLoc: '/Public/app/new/location/2',
|
|
335
|
-
serverUrl:
|
|
337
|
+
serverUrl: serverUrl,
|
|
336
338
|
existingTarget: target
|
|
337
339
|
};
|
|
338
340
|
jest
|
|
@@ -374,7 +376,7 @@ describe('addTarget', function () {
|
|
|
374
376
|
serverType: utils_1.ServerType.Sasjs,
|
|
375
377
|
name: 'server',
|
|
376
378
|
appLoc: '/Public/app/new/location/2',
|
|
377
|
-
serverUrl:
|
|
379
|
+
serverUrl: serverUrl,
|
|
378
380
|
existingTarget: targetJson
|
|
379
381
|
};
|
|
380
382
|
jest
|
|
@@ -410,7 +412,7 @@ describe('addTarget', function () {
|
|
|
410
412
|
serverType: globalTestTarget.serverType,
|
|
411
413
|
name: globalTestTarget.name,
|
|
412
414
|
appLoc: '/Public/app/new/location/3',
|
|
413
|
-
serverUrl:
|
|
415
|
+
serverUrl: serverUrl,
|
|
414
416
|
existingTarget: globalTestTarget
|
|
415
417
|
};
|
|
416
418
|
jest
|
|
@@ -324,6 +324,7 @@ function recreateBuildFolder() {
|
|
|
324
324
|
});
|
|
325
325
|
});
|
|
326
326
|
}
|
|
327
|
+
// REFACTOR: combine compileServiceFolder and compileJobFolder
|
|
327
328
|
var compileServiceFolder = function (target, serviceFolder, macroFolders, programFolders, compileTree) { return __awaiter(void 0, void 0, void 0, function () {
|
|
328
329
|
var destinationPath, subFolders, filesNamesInPath;
|
|
329
330
|
return __generator(this, function (_a) {
|
|
@@ -333,9 +334,30 @@ var compileServiceFolder = function (target, serviceFolder, macroFolders, progra
|
|
|
333
334
|
return [4 /*yield*/, (0, utils_1.listSubFoldersInFolder)(destinationPath)];
|
|
334
335
|
case 1:
|
|
335
336
|
subFolders = _a.sent();
|
|
336
|
-
return [4 /*yield*/, (0, utils_1.listFilesInFolder)(destinationPath)
|
|
337
|
+
return [4 /*yield*/, (0, utils_1.listFilesInFolder)(destinationPath)
|
|
338
|
+
// Checks if file in sasjsbuild folder exists in source folder.
|
|
339
|
+
// If not, it means that the file shouldn't be compiled.
|
|
340
|
+
];
|
|
337
341
|
case 2:
|
|
338
342
|
filesNamesInPath = _a.sent();
|
|
343
|
+
// Checks if file in sasjsbuild folder exists in source folder.
|
|
344
|
+
// If not, it means that the file shouldn't be compiled.
|
|
345
|
+
return [4 /*yield*/, (0, utils_1.asyncForEach)(filesNamesInPath, function (fileName, i) { return __awaiter(void 0, void 0, void 0, function () {
|
|
346
|
+
return __generator(this, function (_a) {
|
|
347
|
+
switch (_a.label) {
|
|
348
|
+
case 0: return [4 /*yield*/, (0, utils_1.fileExists)(path_1.default.join(serviceFolder, fileName))];
|
|
349
|
+
case 1:
|
|
350
|
+
if (!(_a.sent())) {
|
|
351
|
+
filesNamesInPath.splice(i, 1);
|
|
352
|
+
}
|
|
353
|
+
return [2 /*return*/];
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
}); })];
|
|
357
|
+
case 3:
|
|
358
|
+
// Checks if file in sasjsbuild folder exists in source folder.
|
|
359
|
+
// If not, it means that the file shouldn't be compiled.
|
|
360
|
+
_a.sent();
|
|
339
361
|
return [4 /*yield*/, (0, utils_1.asyncForEach)(filesNamesInPath, function (fileName) { return __awaiter(void 0, void 0, void 0, function () {
|
|
340
362
|
var filePath;
|
|
341
363
|
return __generator(this, function (_a) {
|
|
@@ -355,7 +377,7 @@ var compileServiceFolder = function (target, serviceFolder, macroFolders, progra
|
|
|
355
377
|
}
|
|
356
378
|
});
|
|
357
379
|
}); })];
|
|
358
|
-
case
|
|
380
|
+
case 4:
|
|
359
381
|
_a.sent();
|
|
360
382
|
return [4 /*yield*/, (0, utils_1.asyncForEach)(subFolders, function (subFolder) { return __awaiter(void 0, void 0, void 0, function () {
|
|
361
383
|
var fileNames;
|
|
@@ -389,7 +411,7 @@ var compileServiceFolder = function (target, serviceFolder, macroFolders, progra
|
|
|
389
411
|
}
|
|
390
412
|
});
|
|
391
413
|
}); })];
|
|
392
|
-
case
|
|
414
|
+
case 5:
|
|
393
415
|
_a.sent();
|
|
394
416
|
compileTree.saveTree();
|
|
395
417
|
return [2 /*return*/];
|
|
@@ -405,9 +427,30 @@ var compileJobFolder = function (target, jobFolder, macroFolders, programFolders
|
|
|
405
427
|
return [4 /*yield*/, (0, utils_1.listSubFoldersInFolder)(destinationPath)];
|
|
406
428
|
case 1:
|
|
407
429
|
subFolders = _a.sent();
|
|
408
|
-
return [4 /*yield*/, (0, utils_1.listFilesInFolder)(destinationPath)
|
|
430
|
+
return [4 /*yield*/, (0, utils_1.listFilesInFolder)(destinationPath)
|
|
431
|
+
// Checks if file in sasjsbuild folder exists in source folder.
|
|
432
|
+
// If not, it means that the file shouldn't be compiled.
|
|
433
|
+
];
|
|
409
434
|
case 2:
|
|
410
435
|
filesNamesInPath = _a.sent();
|
|
436
|
+
// Checks if file in sasjsbuild folder exists in source folder.
|
|
437
|
+
// If not, it means that the file shouldn't be compiled.
|
|
438
|
+
return [4 /*yield*/, (0, utils_1.asyncForEach)(filesNamesInPath, function (fileName, i) { return __awaiter(void 0, void 0, void 0, function () {
|
|
439
|
+
return __generator(this, function (_a) {
|
|
440
|
+
switch (_a.label) {
|
|
441
|
+
case 0: return [4 /*yield*/, (0, utils_1.fileExists)(path_1.default.join(jobFolder, fileName))];
|
|
442
|
+
case 1:
|
|
443
|
+
if (!(_a.sent())) {
|
|
444
|
+
filesNamesInPath.splice(i, 1);
|
|
445
|
+
}
|
|
446
|
+
return [2 /*return*/];
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
}); })];
|
|
450
|
+
case 3:
|
|
451
|
+
// Checks if file in sasjsbuild folder exists in source folder.
|
|
452
|
+
// If not, it means that the file shouldn't be compiled.
|
|
453
|
+
_a.sent();
|
|
411
454
|
return [4 /*yield*/, (0, utils_1.asyncForEach)(filesNamesInPath, function (fileName) { return __awaiter(void 0, void 0, void 0, function () {
|
|
412
455
|
var filePath;
|
|
413
456
|
return __generator(this, function (_a) {
|
|
@@ -427,7 +470,7 @@ var compileJobFolder = function (target, jobFolder, macroFolders, programFolders
|
|
|
427
470
|
}
|
|
428
471
|
});
|
|
429
472
|
}); })];
|
|
430
|
-
case
|
|
473
|
+
case 4:
|
|
431
474
|
_a.sent();
|
|
432
475
|
return [4 /*yield*/, (0, utils_1.asyncForEach)(subFolders, function (subFolder) { return __awaiter(void 0, void 0, void 0, function () {
|
|
433
476
|
var fileNames;
|
|
@@ -461,7 +504,7 @@ var compileJobFolder = function (target, jobFolder, macroFolders, programFolders
|
|
|
461
504
|
}
|
|
462
505
|
});
|
|
463
506
|
}); })];
|
|
464
|
-
case
|
|
507
|
+
case 5:
|
|
465
508
|
_a.sent();
|
|
466
509
|
return [2 /*return*/];
|
|
467
510
|
}
|
|
@@ -739,10 +739,10 @@ describe('sasjs compile outside project', function () {
|
|
|
739
739
|
return [4 /*yield*/, (0, config_1.saveGlobalRcFile)('')];
|
|
740
740
|
case 1:
|
|
741
741
|
_a.sent();
|
|
742
|
-
process.projectDir = '';
|
|
743
742
|
return [4 /*yield*/, (0, utils_2.setConstants)()];
|
|
744
743
|
case 2:
|
|
745
744
|
_a.sent();
|
|
745
|
+
process.projectDir = '';
|
|
746
746
|
process.currentDir = path_1.default.join(__dirname, appName);
|
|
747
747
|
return [4 /*yield*/, (0, utils_1.createFolder)(process.currentDir)];
|
|
748
748
|
case 3:
|
|
@@ -785,6 +785,38 @@ describe('sasjs compile outside project', function () {
|
|
|
785
785
|
}
|
|
786
786
|
});
|
|
787
787
|
}); });
|
|
788
|
+
it('should compile without duplicates', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
789
|
+
var testServicePath, appPath, command, compiledTestService;
|
|
790
|
+
var _a;
|
|
791
|
+
return __generator(this, function (_b) {
|
|
792
|
+
switch (_b.label) {
|
|
793
|
+
case 0:
|
|
794
|
+
testServicePath = path_1.default.join('services', 'admin', 'test.sas');
|
|
795
|
+
appPath = path_1.default.join(__dirname, appName);
|
|
796
|
+
return [4 /*yield*/, (0, test_1.createTestApp)(__dirname, appName)];
|
|
797
|
+
case 1:
|
|
798
|
+
_b.sent();
|
|
799
|
+
return [4 /*yield*/, (0, utils_1.createFile)(path_1.default.join(appPath, 'sasjs', 'targets', 'viya', testServicePath), '')];
|
|
800
|
+
case 2:
|
|
801
|
+
_b.sent();
|
|
802
|
+
command = new compileCommand_1.CompileCommand([
|
|
803
|
+
'node',
|
|
804
|
+
'sasjs',
|
|
805
|
+
'compile',
|
|
806
|
+
'-t',
|
|
807
|
+
'viya'
|
|
808
|
+
]);
|
|
809
|
+
return [4 /*yield*/, command.executeCompile()];
|
|
810
|
+
case 3:
|
|
811
|
+
_b.sent();
|
|
812
|
+
return [4 /*yield*/, (0, utils_1.readFile)(path_1.default.join(appPath, 'sasjsbuild', testServicePath))];
|
|
813
|
+
case 4:
|
|
814
|
+
compiledTestService = _b.sent();
|
|
815
|
+
expect((_a = compiledTestService.match(/^\*\sService start;$/gm)) === null || _a === void 0 ? void 0 : _a.length).toEqual(1);
|
|
816
|
+
return [2 /*return*/];
|
|
817
|
+
}
|
|
818
|
+
});
|
|
819
|
+
}); });
|
|
788
820
|
});
|
|
789
821
|
});
|
|
790
822
|
var prefixConfigWithPath = function (prefixPath) { return ({
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { TestResults } from '../../../types';
|
|
1
|
+
import { TestResults, TestResultCsv } from '../../../types';
|
|
2
2
|
export declare const saveLog: (outDirectory: string, test: string, log: string, lineBreak?: boolean) => Promise<void>;
|
|
3
3
|
export declare const saveResultJson: (outDirectory: string, result: TestResults) => Promise<string | false>;
|
|
4
4
|
export declare const saveResultCsv: (outDirectory: string, result: TestResults, options?: {}) => Promise<{
|
|
5
|
-
csvData:
|
|
5
|
+
csvData: TestResultCsv[];
|
|
6
6
|
csvPath: string;
|
|
7
7
|
}>;
|
|
8
8
|
export declare const saveResultXml: (outDirectory: string, result: TestResults) => Promise<string>;
|
|
@@ -19,5 +19,15 @@ exports.testResponses = {
|
|
|
19
19
|
TEST_DESCRIPTION: 'examplemacro test.1 description',
|
|
20
20
|
TEST_RESULT: 'PASS'
|
|
21
21
|
}
|
|
22
|
+
],
|
|
23
|
+
'notexisting.test': [
|
|
24
|
+
{
|
|
25
|
+
TEST_DESCRIPTION: 'examplemacro test.1 description',
|
|
26
|
+
TEST_RESULT: 'PASS'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
TEST_DESCRIPTION: 'examplemacro test.1 description',
|
|
30
|
+
TEST_RESULT: 'FAIL'
|
|
31
|
+
}
|
|
22
32
|
]
|
|
23
33
|
};
|
|
@@ -71,6 +71,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
71
71
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
72
72
|
var path_1 = __importDefault(require("path"));
|
|
73
73
|
var test_1 = require("../test");
|
|
74
|
+
var types_1 = require("../../../types");
|
|
74
75
|
var utils_1 = require("@sasjs/utils");
|
|
75
76
|
var test_2 = require("../../../utils/test");
|
|
76
77
|
var setConstants_1 = require("../../../utils/setConstants");
|
|
@@ -78,6 +79,9 @@ var dotenv_1 = __importDefault(require("dotenv"));
|
|
|
78
79
|
var __1 = require("../..");
|
|
79
80
|
var sasJsModules = __importStar(require("../../../utils/createSASjsInstance"));
|
|
80
81
|
var testResponses_1 = require("./mockedAdapter/testResponses");
|
|
82
|
+
var fileModule = __importStar(require("@sasjs/utils/file"));
|
|
83
|
+
var utilsModule = __importStar(require("@sasjs/utils/utils"));
|
|
84
|
+
var chalk_1 = __importDefault(require("chalk"));
|
|
81
85
|
describe('sasjs test', function () {
|
|
82
86
|
var expectedCoverageLcov = "TN:testsetup.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:exampleprogram.test.sas\nSF:jobs/jobs/exampleprogram.sas\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:standalone.test.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:examplemacro.test.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:shouldFail.test.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:dostuff.test.0.sas\nSF:services/admin/dostuff.sas\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:dostuff.test.1.sas\nSF:services/admin/dostuff.sas\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record\nTN:testteardown.sas\nSF:standalone\nFNF:1\nFNH:1\nLF:1\nLH:1\nBRF:1\nBRH:1\nend_of_record";
|
|
83
87
|
describe('SASVIYA', function () {
|
|
@@ -576,6 +580,25 @@ describe('sasjs test', function () {
|
|
|
576
580
|
}
|
|
577
581
|
});
|
|
578
582
|
}); });
|
|
583
|
+
it('should FAIL test suit if any test has status FAIL', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
584
|
+
var testService;
|
|
585
|
+
return __generator(this, function (_a) {
|
|
586
|
+
switch (_a.label) {
|
|
587
|
+
case 0:
|
|
588
|
+
testService = 'notexisting';
|
|
589
|
+
jest.spyOn(process.logger, 'table');
|
|
590
|
+
jest.spyOn(utilsModule, 'uuidv4').mockImplementation(function () { return 'uuidv4'; });
|
|
591
|
+
jest.spyOn(fileModule, 'readFile').mockImplementation(function () {
|
|
592
|
+
return Promise.resolve("{\n \"tests\": [\n \"tests/macros/".concat(testService, ".test.sas\"\n ],\n \"testSetUp\": \"\",\n \"testTearDown\": \"\"\n}"));
|
|
593
|
+
});
|
|
594
|
+
return [4 /*yield*/, (0, test_1.runTest)(target, undefined, undefined, undefined)];
|
|
595
|
+
case 1:
|
|
596
|
+
_a.sent();
|
|
597
|
+
expect(process.logger.table).toHaveBeenCalledWith([['uuidv4', testService, chalk_1.default.redBright(types_1.TestResultStatus.fail)]], { head: ['SASjs Test ID', 'Test Target', 'Test Suite Result'] });
|
|
598
|
+
return [2 /*return*/];
|
|
599
|
+
}
|
|
600
|
+
});
|
|
601
|
+
}); });
|
|
579
602
|
});
|
|
580
603
|
});
|
|
581
604
|
function generateTarget(serverType) {
|
|
@@ -86,11 +86,12 @@ var path_1 = __importDefault(require("path"));
|
|
|
86
86
|
var chalk_1 = __importDefault(require("chalk"));
|
|
87
87
|
var utils_2 = require("../../utils/utils");
|
|
88
88
|
var createSASjsInstance_1 = require("../../utils/createSASjsInstance");
|
|
89
|
+
// interface
|
|
89
90
|
function runTest(target, testRegExps, outDirectory, flowSourcePath) {
|
|
90
91
|
var _a, _b;
|
|
91
92
|
if (testRegExps === void 0) { testRegExps = []; }
|
|
92
93
|
return __awaiter(this, void 0, void 0, function () {
|
|
93
|
-
var testFlowData, testFlow, flow, sasjs, authConfig, username, password, _c, sas9CredentialsError, e_1, result, isCodeExamplePrinted, printCodeExample, jsonPath, xmlPath, _d, csvData, csvPath, coverageReportPath, resultTable, testsCount, passedTestsCount, testsWithResultsCount;
|
|
94
|
+
var testFlowData, testFlow, flow, sasjs, authConfig, username, password, _c, sas9CredentialsError, e_1, result, isCodeExamplePrinted, printCodeExample, jsonPath, xmlPath, _d, csvData, csvPath, coverageReportPath, resultTable, testSuites, testsCount, passedTestsCount, testsWithResultsCount;
|
|
94
95
|
var _this = this;
|
|
95
96
|
return __generator(this, function (_e) {
|
|
96
97
|
switch (_e.label) {
|
|
@@ -300,7 +301,8 @@ function runTest(target, testRegExps, outDirectory, flowSourcePath) {
|
|
|
300
301
|
});
|
|
301
302
|
}
|
|
302
303
|
}
|
|
303
|
-
else if (target.serverType
|
|
304
|
+
else if (target.serverType === utils_1.ServerType.SasViya ||
|
|
305
|
+
target.serverType === utils_1.ServerType.Sas9) {
|
|
304
306
|
(0, displayResult_1.displayError)({}, "'test_results' not found in server response, to debug click ".concat(testUrl));
|
|
305
307
|
printCodeExample();
|
|
306
308
|
}
|
|
@@ -353,11 +355,26 @@ function runTest(target, testRegExps, outDirectory, flowSourcePath) {
|
|
|
353
355
|
coverageReportPath = _e.sent();
|
|
354
356
|
resultTable = {};
|
|
355
357
|
if (Array.isArray(csvData)) {
|
|
356
|
-
csvData.
|
|
357
|
-
return
|
|
358
|
-
|
|
359
|
-
|
|
358
|
+
testSuites = csvData.reduce(function (acc, item) {
|
|
359
|
+
if (!acc.filter(function (i) { return i.sasjs_test_id === item.sasjs_test_id; }).length)
|
|
360
|
+
acc.push(item);
|
|
361
|
+
return acc;
|
|
362
|
+
}, []);
|
|
363
|
+
testSuites.forEach(function (test) {
|
|
364
|
+
var passedTests = csvData.filter(function (item) {
|
|
365
|
+
return item.sasjs_test_id === test.sasjs_test_id &&
|
|
366
|
+
item.test_suite_result === types_1.TestResultStatus.pass;
|
|
360
367
|
});
|
|
368
|
+
var failedTests = csvData.filter(function (item) {
|
|
369
|
+
return item.sasjs_test_id === test.sasjs_test_id &&
|
|
370
|
+
item.test_suite_result === types_1.TestResultStatus.fail;
|
|
371
|
+
});
|
|
372
|
+
resultTable[test.sasjs_test_id] = {
|
|
373
|
+
test_target: test.test_target,
|
|
374
|
+
test_suite_result: passedTests.length && !failedTests.length
|
|
375
|
+
? types_1.TestResultStatus.pass
|
|
376
|
+
: types_1.TestResultStatus.fail
|
|
377
|
+
};
|
|
361
378
|
});
|
|
362
379
|
}
|
|
363
380
|
(_a = process.logger) === null || _a === void 0 ? void 0 : _a.table(Object.keys(resultTable).map(function (key) { return [
|
package/build/types/index.d.ts
CHANGED
|
@@ -2,6 +2,6 @@ export { CommandBase } from './command/commandBase';
|
|
|
2
2
|
export { File, FilePath } from './file';
|
|
3
3
|
export { Folder } from './folder';
|
|
4
4
|
export { TargetScope } from './targetScope';
|
|
5
|
-
export { TestFlow, Coverage, CoverageType, CoverageState, TestResults, TestResultStatus, TestDescription, TestResult, TestResultDescription } from './testing';
|
|
5
|
+
export { TestFlow, Coverage, CoverageType, CoverageState, TestResults, TestResultStatus, TestDescription, TestResult, TestResultDescription, TestResultCsv } from './testing';
|
|
6
6
|
export { Flow, FlowWave, FlowWaveJob } from './flow';
|
|
7
7
|
export { ServicePack, ServicePackMember } from './servicePack';
|
package/build/types/testing.d.ts
CHANGED
|
@@ -42,3 +42,11 @@ export interface TestResult {
|
|
|
42
42
|
export interface TestResults {
|
|
43
43
|
sasjs_test_meta: TestDescription[];
|
|
44
44
|
}
|
|
45
|
+
export interface TestResultCsv {
|
|
46
|
+
test_target: string;
|
|
47
|
+
test_loc: string;
|
|
48
|
+
sasjs_test_id: string;
|
|
49
|
+
test_suite_result: TestResultStatus.pass | TestResultStatus.fail;
|
|
50
|
+
test_description: string;
|
|
51
|
+
test_url: string;
|
|
52
|
+
}
|
package/build/utils/test.js
CHANGED
|
@@ -413,6 +413,9 @@ var updateTarget = function (targetJson, targetName, isLocal) {
|
|
|
413
413
|
targetIndex = config.targets.findIndex(function (t) { return t.name === targetName; });
|
|
414
414
|
if (!(targetIndex >= 0)) return [3 /*break*/, 9];
|
|
415
415
|
config.targets.splice(targetIndex, 1, __assign(__assign({}, config.targets[targetIndex]), targetJson));
|
|
416
|
+
config = __assign(__assign({}, config), { targets: config.targets.map(function (target) { return (__assign(__assign({}, target), { serverUrl: process.env["".concat(target.serverType === types_1.ServerType.SasViya
|
|
417
|
+
? 'VIYA'
|
|
418
|
+
: target.serverType, "_SERVER_URL")] })); }) });
|
|
416
419
|
if (!isLocal) return [3 /*break*/, 6];
|
|
417
420
|
return [4 /*yield*/, (0, config_1.saveLocalConfigFile)(JSON.stringify(config, null, 2))];
|
|
418
421
|
case 5:
|
package/package.json
CHANGED
|
@@ -47,10 +47,10 @@
|
|
|
47
47
|
"access": "public"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@sasjs/adapter": "3.8.
|
|
50
|
+
"@sasjs/adapter": "3.8.1",
|
|
51
51
|
"@sasjs/core": "4.15.3",
|
|
52
52
|
"@sasjs/lint": "1.11.2",
|
|
53
|
-
"@sasjs/utils": "2.
|
|
53
|
+
"@sasjs/utils": "2.41.0",
|
|
54
54
|
"chalk": "4.1.2",
|
|
55
55
|
"csv-stringify": "5.6.5",
|
|
56
56
|
"dotenv": "10.0.0",
|
|
@@ -94,5 +94,5 @@
|
|
|
94
94
|
"typescript": "4.5.4",
|
|
95
95
|
"util": "0.12.4"
|
|
96
96
|
},
|
|
97
|
-
"version": "3.12.
|
|
97
|
+
"version": "3.12.4"
|
|
98
98
|
}
|