@sasjs/cli 3.7.7 → 3.7.8
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/compile/compile.js +5 -6
- package/build/commands/compile/internal/checkCompileStatus.js +3 -4
- package/build/commands/compile/internal/compileTestFile.d.ts +3 -2
- package/build/commands/compile/internal/compileTestFile.js +26 -13
- package/build/commands/compile/internal/getAllFolders.d.ts +6 -0
- package/build/commands/compile/internal/{getAllJobFolders.js → getAllFolders.js} +49 -23
- package/build/commands/compile/internal/identifySasFile.js +3 -4
- package/build/commands/compile/internal/spec/compileTestFile.spec.js +37 -0
- package/build/commands/compile/internal/spec/getAllFolders.spec.d.ts +1 -0
- package/build/commands/compile/internal/spec/getAllFolders.spec.js +184 -0
- package/build/commands/compile/spec/copyFilesToBuildFolder.spec.js +2 -4
- package/build/utils/test.d.ts +2 -2
- package/build/utils/test.js +8 -5
- package/package.json +1 -1
- package/build/commands/compile/internal/getAllJobFolders.d.ts +0 -2
- package/build/commands/compile/internal/getAllServiceFolders.d.ts +0 -2
- package/build/commands/compile/internal/getAllServiceFolders.js +0 -91
|
@@ -77,8 +77,7 @@ var web_1 = require("../web/web");
|
|
|
77
77
|
var file_1 = require("../../utils/file");
|
|
78
78
|
var checkCompileStatus_1 = require("./internal/checkCompileStatus");
|
|
79
79
|
var compileModule = __importStar(require("./compile"));
|
|
80
|
-
var
|
|
81
|
-
var getAllServiceFolders_1 = require("./internal/getAllServiceFolders");
|
|
80
|
+
var getAllFolders_1 = require("./internal/getAllFolders");
|
|
82
81
|
var compileServiceFile_1 = require("./internal/compileServiceFile");
|
|
83
82
|
var compileJobFile_1 = require("./internal/compileJobFile");
|
|
84
83
|
var compileTestFile_1 = require("./internal/compileTestFile");
|
|
@@ -171,10 +170,10 @@ function copyFilesToBuildFolder(target) {
|
|
|
171
170
|
_c.label = 2;
|
|
172
171
|
case 2:
|
|
173
172
|
_c.trys.push([2, 7, , 8]);
|
|
174
|
-
return [4 /*yield*/, (0,
|
|
173
|
+
return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Service)];
|
|
175
174
|
case 3:
|
|
176
175
|
serviceFolders = _c.sent();
|
|
177
|
-
return [4 /*yield*/, (0,
|
|
176
|
+
return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Job)
|
|
178
177
|
// REFACTOR
|
|
179
178
|
];
|
|
180
179
|
case 4:
|
|
@@ -231,10 +230,10 @@ function compileJobsServicesTests(target) {
|
|
|
231
230
|
switch (_b.label) {
|
|
232
231
|
case 0:
|
|
233
232
|
_b.trys.push([0, 13, , 14]);
|
|
234
|
-
return [4 /*yield*/, (0,
|
|
233
|
+
return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Service)];
|
|
235
234
|
case 1:
|
|
236
235
|
serviceFolders = _b.sent();
|
|
237
|
-
return [4 /*yield*/, (0,
|
|
236
|
+
return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Job)];
|
|
238
237
|
case 2:
|
|
239
238
|
jobFolders = _b.sent();
|
|
240
239
|
return [4 /*yield*/, (0, config_1.getMacroFolders)(target)];
|
|
@@ -39,8 +39,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
39
39
|
exports.checkCompileStatus = void 0;
|
|
40
40
|
var utils_1 = require("@sasjs/utils");
|
|
41
41
|
var compareFolders_1 = require("./compareFolders");
|
|
42
|
-
var
|
|
43
|
-
var getAllServiceFolders_1 = require("./getAllServiceFolders");
|
|
42
|
+
var getAllFolders_1 = require("./getAllFolders");
|
|
44
43
|
var getDestinationPath_1 = require("./getDestinationPath");
|
|
45
44
|
function checkCompileStatus(target, exceptions) {
|
|
46
45
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -87,7 +86,7 @@ var checkServiceFolders = function (target, exceptions) { return __awaiter(void
|
|
|
87
86
|
var serviceFolders, areServiceFoldersMatching, reasons;
|
|
88
87
|
return __generator(this, function (_a) {
|
|
89
88
|
switch (_a.label) {
|
|
90
|
-
case 0: return [4 /*yield*/, (0,
|
|
89
|
+
case 0: return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Service)];
|
|
91
90
|
case 1:
|
|
92
91
|
serviceFolders = _a.sent();
|
|
93
92
|
areServiceFoldersMatching = true;
|
|
@@ -126,7 +125,7 @@ var checkJobFolders = function (target, exceptions) { return __awaiter(void 0, v
|
|
|
126
125
|
var jobFolders, areJobFoldersMatching, reasons;
|
|
127
126
|
return __generator(this, function (_a) {
|
|
128
127
|
switch (_a.label) {
|
|
129
|
-
case 0: return [4 /*yield*/, (0,
|
|
128
|
+
case 0: return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Job)];
|
|
130
129
|
case 1:
|
|
131
130
|
jobFolders = _a.sent();
|
|
132
131
|
areJobFoldersMatching = true;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TestFlow } from '../../../types';
|
|
2
|
+
import { Target, Configuration } from '@sasjs/utils';
|
|
2
3
|
export declare function compileTestFile(target: Target, filePath: string, testVar?: string, saveToRoot?: boolean, removeOriginalFile?: boolean): Promise<void>;
|
|
3
4
|
export declare function moveTestFile(filePath: string): Promise<void>;
|
|
4
5
|
export declare function copyTestMacroFiles(folderAbsolutePath: string): Promise<void>;
|
|
5
|
-
export declare const compileTestFlow: (target: Target) => Promise<
|
|
6
|
+
export declare const compileTestFlow: (target: Target, config?: Configuration | undefined) => Promise<TestFlow | undefined>;
|
|
@@ -200,22 +200,35 @@ function copyTestMacroFiles(folderAbsolutePath) {
|
|
|
200
200
|
});
|
|
201
201
|
}
|
|
202
202
|
exports.copyTestMacroFiles = copyTestMacroFiles;
|
|
203
|
-
var compileTestFlow = function (target) { return __awaiter(void 0, void 0, void 0, function () {
|
|
204
|
-
var _a, buildDestinationFolder, buildDestinationTestFolder, testFiles, testFlow, testSetUp, testTearDown, testSetUpFileName_1, testTearDownFileName_1;
|
|
205
|
-
var
|
|
206
|
-
return __generator(this, function (
|
|
207
|
-
switch (
|
|
203
|
+
var compileTestFlow = function (target, config) { return __awaiter(void 0, void 0, void 0, function () {
|
|
204
|
+
var _a, buildDestinationFolder, buildDestinationTestFolder, testFiles, _b, testFlow, testSetUp, testTearDown, testSetUpFileName_1, testTearDownFileName_1;
|
|
205
|
+
var _c, _d, _e, _f;
|
|
206
|
+
return __generator(this, function (_g) {
|
|
207
|
+
switch (_g.label) {
|
|
208
208
|
case 0:
|
|
209
|
+
if (target.testConfig &&
|
|
210
|
+
Object.keys(target.testConfig).includes('testFolders')) {
|
|
211
|
+
process.logger.warn("'testFolders' is not supported 'testConfig' entry, please use 'serviceFolders' entry in 'serviceConfig' or 'jobFolders' entry in 'jobConfig'.");
|
|
212
|
+
}
|
|
209
213
|
_a = process.sasjsConstants, buildDestinationFolder = _a.buildDestinationFolder, buildDestinationTestFolder = _a.buildDestinationTestFolder;
|
|
210
214
|
return [4 /*yield*/, (0, utils_1.folderExists)(buildDestinationTestFolder)];
|
|
211
215
|
case 1:
|
|
212
|
-
if (!
|
|
216
|
+
if (!_g.sent()) return [3 /*break*/, 7];
|
|
213
217
|
return [4 /*yield*/, (0, utils_1.listFilesAndSubFoldersInFolder)(buildDestinationTestFolder)];
|
|
214
218
|
case 2:
|
|
215
|
-
testFiles = (
|
|
219
|
+
testFiles = (_g.sent()).map(function (file) { return path_1.default.join('tests', file); });
|
|
220
|
+
_b = config;
|
|
221
|
+
if (_b) return [3 /*break*/, 5];
|
|
222
|
+
return [4 /*yield*/, (0, config_1.getLocalOrGlobalConfig)()];
|
|
223
|
+
case 3: return [4 /*yield*/, (_g.sent()).configuration];
|
|
224
|
+
case 4:
|
|
225
|
+
_b = (_g.sent());
|
|
226
|
+
_g.label = 5;
|
|
227
|
+
case 5:
|
|
228
|
+
config = _b;
|
|
216
229
|
testFlow = { tests: [] };
|
|
217
|
-
testSetUp = (
|
|
218
|
-
testTearDown = (
|
|
230
|
+
testSetUp = ((_c = target.testConfig) === null || _c === void 0 ? void 0 : _c.testSetUp) || ((_d = config.testConfig) === null || _d === void 0 ? void 0 : _d.testSetUp);
|
|
231
|
+
testTearDown = ((_e = target.testConfig) === null || _e === void 0 ? void 0 : _e.testTearDown) || ((_f = config.testConfig) === null || _f === void 0 ? void 0 : _f.testTearDown);
|
|
219
232
|
if (testFiles.length) {
|
|
220
233
|
if (testSetUp) {
|
|
221
234
|
testSetUpFileName_1 = getFileName(testSetUp);
|
|
@@ -236,10 +249,10 @@ var compileTestFlow = function (target) { return __awaiter(void 0, void 0, void
|
|
|
236
249
|
return file.split(path_1.default.sep).join('/');
|
|
237
250
|
});
|
|
238
251
|
return [4 /*yield*/, printTestCoverage(testFlow, buildDestinationFolder, target)];
|
|
239
|
-
case
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
case
|
|
252
|
+
case 6:
|
|
253
|
+
_g.sent();
|
|
254
|
+
return [2 /*return*/, Promise.resolve(testFlow)];
|
|
255
|
+
case 7: return [2 /*return*/];
|
|
243
256
|
}
|
|
244
257
|
});
|
|
245
258
|
}); };
|
|
@@ -61,29 +61,55 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
61
61
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
62
62
|
};
|
|
63
63
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
64
|
-
exports.
|
|
64
|
+
exports.getAllFolders = exports.SasFileType = void 0;
|
|
65
65
|
var utils_1 = require("@sasjs/utils");
|
|
66
66
|
var config_1 = require("../../../utils/config");
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
67
|
+
var SasFileType;
|
|
68
|
+
(function (SasFileType) {
|
|
69
|
+
SasFileType["Service"] = "service";
|
|
70
|
+
SasFileType["Job"] = "job";
|
|
71
|
+
})(SasFileType = exports.SasFileType || (exports.SasFileType = {}));
|
|
72
|
+
var getAllFolders = function (target, type, rootConfig) { return __awaiter(void 0, void 0, void 0, function () {
|
|
73
|
+
var configuration, _a, allFolders, config, folders, addFolders, buildSourceFolder;
|
|
74
|
+
return __generator(this, function (_b) {
|
|
75
|
+
switch (_b.label) {
|
|
76
|
+
case 0:
|
|
77
|
+
_a = rootConfig;
|
|
78
|
+
if (_a) return [3 /*break*/, 3];
|
|
79
|
+
return [4 /*yield*/, (0, config_1.getLocalOrGlobalConfig)()];
|
|
80
|
+
case 1: return [4 /*yield*/, (_b.sent()).configuration];
|
|
81
|
+
case 2:
|
|
82
|
+
_a = (_b.sent());
|
|
83
|
+
_b.label = 3;
|
|
84
|
+
case 3:
|
|
85
|
+
configuration = _a;
|
|
86
|
+
addFolders = function (folders) {
|
|
87
|
+
allFolders = __spreadArray(__spreadArray([], __read((allFolders || [])), false), __read((folders || [])), false);
|
|
88
|
+
};
|
|
89
|
+
if (type === SasFileType.Service) {
|
|
90
|
+
config = configuration.serviceConfig;
|
|
91
|
+
folders = config === null || config === void 0 ? void 0 : config.serviceFolders;
|
|
92
|
+
addFolders(folders);
|
|
93
|
+
config = target.serviceConfig;
|
|
94
|
+
folders = config === null || config === void 0 ? void 0 : config.serviceFolders;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
config = configuration.jobConfig;
|
|
98
|
+
folders = config === null || config === void 0 ? void 0 : config.jobFolders;
|
|
99
|
+
addFolders(folders);
|
|
100
|
+
config = target.jobConfig;
|
|
101
|
+
folders = config === null || config === void 0 ? void 0 : config.jobFolders;
|
|
102
|
+
}
|
|
103
|
+
addFolders(folders);
|
|
104
|
+
if (!allFolders)
|
|
105
|
+
return [2 /*return*/, []];
|
|
106
|
+
allFolders = allFolders.filter(function (p) { return !!p; });
|
|
107
|
+
buildSourceFolder = process.sasjsConstants.buildSourceFolder;
|
|
108
|
+
allFolders = allFolders.map(function (sasFile) {
|
|
109
|
+
return (0, utils_1.getAbsolutePath)(sasFile, buildSourceFolder);
|
|
110
|
+
});
|
|
111
|
+
return [2 /*return*/, __spreadArray([], __read(new Set(allFolders)), false)];
|
|
112
|
+
}
|
|
87
113
|
});
|
|
88
|
-
}
|
|
89
|
-
exports.
|
|
114
|
+
}); };
|
|
115
|
+
exports.getAllFolders = getAllFolders;
|
|
@@ -37,19 +37,18 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.identifySasFile = void 0;
|
|
40
|
-
var
|
|
41
|
-
var getAllServiceFolders_1 = require("./getAllServiceFolders");
|
|
40
|
+
var getAllFolders_1 = require("./getAllFolders");
|
|
42
41
|
var identifySasFile = function (target, sourcePath) { return __awaiter(void 0, void 0, void 0, function () {
|
|
43
42
|
var serviceFolders, isService, jobFolders, isJob;
|
|
44
43
|
return __generator(this, function (_a) {
|
|
45
44
|
switch (_a.label) {
|
|
46
|
-
case 0: return [4 /*yield*/, (0,
|
|
45
|
+
case 0: return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Service)];
|
|
47
46
|
case 1:
|
|
48
47
|
serviceFolders = _a.sent();
|
|
49
48
|
isService = serviceFolders.find(function (folder) { return sourcePath.includes(folder); });
|
|
50
49
|
if (isService)
|
|
51
50
|
return [2 /*return*/, 'service'];
|
|
52
|
-
return [4 /*yield*/, (0,
|
|
51
|
+
return [4 /*yield*/, (0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Job)];
|
|
53
52
|
case 2:
|
|
54
53
|
jobFolders = _a.sent();
|
|
55
54
|
isJob = jobFolders.find(function (folder) { return sourcePath.includes(folder); });
|
|
@@ -330,6 +330,43 @@ describe('compileTestFile', function () {
|
|
|
330
330
|
}
|
|
331
331
|
});
|
|
332
332
|
}); });
|
|
333
|
+
it('should log a warning is testFolders was used in root or target configuration', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
334
|
+
var testTarget, testConfig, expectedWarn;
|
|
335
|
+
return __generator(this, function (_a) {
|
|
336
|
+
testTarget = {
|
|
337
|
+
name: 'viya',
|
|
338
|
+
serverUrl: '',
|
|
339
|
+
serverType: utils_1.ServerType.SasViya,
|
|
340
|
+
appLoc: '/Public/sasjs/jobs',
|
|
341
|
+
macroFolders: [],
|
|
342
|
+
programFolders: [],
|
|
343
|
+
binaryFolders: [],
|
|
344
|
+
testConfig: {
|
|
345
|
+
testSetUp: '',
|
|
346
|
+
testTearDown: '',
|
|
347
|
+
macroVars: {},
|
|
348
|
+
initProgram: '',
|
|
349
|
+
termProgram: '',
|
|
350
|
+
testFolders: ['tests']
|
|
351
|
+
}
|
|
352
|
+
};
|
|
353
|
+
testConfig = {
|
|
354
|
+
macroFolders: ['macros'],
|
|
355
|
+
testConfig: {
|
|
356
|
+
testFolders: ['tests']
|
|
357
|
+
},
|
|
358
|
+
defaultTarget: 'viya',
|
|
359
|
+
targets: [testTarget]
|
|
360
|
+
};
|
|
361
|
+
expectedWarn = "'testFolders' is not supported 'testConfig' entry, please use 'serviceFolders' entry in 'serviceConfig' or 'jobFolders' entry in 'jobConfig'.";
|
|
362
|
+
jest.spyOn(process.logger, 'warn');
|
|
363
|
+
(0, compileTestFile_1.compileTestFlow)(testTarget);
|
|
364
|
+
expect(process.logger.warn).toHaveBeenCalledWith(expectedWarn);
|
|
365
|
+
(0, compileTestFile_1.compileTestFlow)(testTarget, testConfig);
|
|
366
|
+
expect(process.logger.warn).toHaveBeenCalledWith(expectedWarn);
|
|
367
|
+
return [2 /*return*/];
|
|
368
|
+
});
|
|
369
|
+
}); });
|
|
333
370
|
});
|
|
334
371
|
});
|
|
335
372
|
describe('isTestFile', function () {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
|
+
if (mod && mod.__esModule) return mod;
|
|
27
|
+
var result = {};
|
|
28
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
29
|
+
__setModuleDefault(result, mod);
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
32
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
33
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
34
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
35
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
36
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
37
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
38
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
42
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
43
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
44
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
45
|
+
function step(op) {
|
|
46
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
47
|
+
while (_) try {
|
|
48
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
49
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
50
|
+
switch (op[0]) {
|
|
51
|
+
case 0: case 1: t = op; break;
|
|
52
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
53
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
54
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
55
|
+
default:
|
|
56
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
57
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
58
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
59
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
60
|
+
if (t[2]) _.ops.pop();
|
|
61
|
+
_.trys.pop(); continue;
|
|
62
|
+
}
|
|
63
|
+
op = body.call(thisArg, _);
|
|
64
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
65
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
69
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
70
|
+
if (!m) return o;
|
|
71
|
+
var i = m.call(o), r, ar = [], e;
|
|
72
|
+
try {
|
|
73
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
74
|
+
}
|
|
75
|
+
catch (error) { e = { error: error }; }
|
|
76
|
+
finally {
|
|
77
|
+
try {
|
|
78
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
79
|
+
}
|
|
80
|
+
finally { if (e) throw e.error; }
|
|
81
|
+
}
|
|
82
|
+
return ar;
|
|
83
|
+
};
|
|
84
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
85
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
86
|
+
if (ar || !(i in from)) {
|
|
87
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
88
|
+
ar[i] = from[i];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
92
|
+
};
|
|
93
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
94
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
95
|
+
};
|
|
96
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
97
|
+
var getAllFolders_1 = require("../getAllFolders");
|
|
98
|
+
var utils_1 = require("@sasjs/utils");
|
|
99
|
+
var test_1 = require("../../../../utils/test");
|
|
100
|
+
var configUtils = __importStar(require("../../../../utils/config"));
|
|
101
|
+
var utils_2 = require("../../../../utils");
|
|
102
|
+
var path_1 = __importDefault(require("path"));
|
|
103
|
+
describe('getAllFolders', function () {
|
|
104
|
+
var config;
|
|
105
|
+
var target;
|
|
106
|
+
beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
107
|
+
var _a, _b, temp;
|
|
108
|
+
var _c, _d;
|
|
109
|
+
return __generator(this, function (_e) {
|
|
110
|
+
switch (_e.label) {
|
|
111
|
+
case 0: return [4 /*yield*/, (0, utils_2.setConstants)()];
|
|
112
|
+
case 1:
|
|
113
|
+
_e.sent();
|
|
114
|
+
_b = (_a = JSON).parse;
|
|
115
|
+
return [4 /*yield*/, (0, utils_1.readFile)(path_1.default.join(__dirname, '..', '..', '..', '..', 'config.json'))];
|
|
116
|
+
case 2:
|
|
117
|
+
(config = _b.apply(_a, [_e.sent()]).config);
|
|
118
|
+
config.jobConfig = {
|
|
119
|
+
jobFolders: ['sasjs/targets/viya/jobs'],
|
|
120
|
+
initProgram: '',
|
|
121
|
+
termProgram: '',
|
|
122
|
+
macroVars: {}
|
|
123
|
+
};
|
|
124
|
+
temp = (0, test_1.generateTestTarget)('testTarget', '/Public/app', {
|
|
125
|
+
serviceFolders: [
|
|
126
|
+
path_1.default.join('sasjs', 'targetServices'),
|
|
127
|
+
(_c = config.serviceConfig) === null || _c === void 0 ? void 0 : _c.serviceFolders[0] // duplicate
|
|
128
|
+
],
|
|
129
|
+
initProgram: '',
|
|
130
|
+
termProgram: '',
|
|
131
|
+
macroVars: {}
|
|
132
|
+
}, utils_1.ServerType.SasViya, {
|
|
133
|
+
jobFolders: [
|
|
134
|
+
path_1.default.join('sasjs', 'targetJobs'),
|
|
135
|
+
(_d = config.jobConfig) === null || _d === void 0 ? void 0 : _d.jobFolders[0] // duplicate
|
|
136
|
+
],
|
|
137
|
+
initProgram: '',
|
|
138
|
+
termProgram: '',
|
|
139
|
+
macroVars: {}
|
|
140
|
+
});
|
|
141
|
+
target = new utils_1.Target(__assign({}, temp.toJson()));
|
|
142
|
+
return [2 /*return*/];
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}); });
|
|
146
|
+
beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
147
|
+
return [2 /*return*/];
|
|
148
|
+
}); }); });
|
|
149
|
+
it('should get all service and job folders', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
150
|
+
var buildSourceFolder;
|
|
151
|
+
var _a, _b, _c, _d;
|
|
152
|
+
return __generator(this, function (_e) {
|
|
153
|
+
switch (_e.label) {
|
|
154
|
+
case 0:
|
|
155
|
+
jest
|
|
156
|
+
.spyOn(configUtils, 'getLocalOrGlobalConfig')
|
|
157
|
+
.mockImplementation(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
158
|
+
return __generator(this, function (_a) {
|
|
159
|
+
return [2 /*return*/, Promise.resolve({
|
|
160
|
+
configuration: config,
|
|
161
|
+
isLocal: true
|
|
162
|
+
})];
|
|
163
|
+
});
|
|
164
|
+
}); });
|
|
165
|
+
buildSourceFolder = process.sasjsConstants.buildSourceFolder;
|
|
166
|
+
return [4 /*yield*/, expect((0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Service, config)).resolves.toEqual(__spreadArray([], __read(new Set(Array.prototype.concat((_a = config.serviceConfig) === null || _a === void 0 ? void 0 : _a.serviceFolders.map(function (folder) {
|
|
167
|
+
return path_1.default.join(buildSourceFolder, folder);
|
|
168
|
+
}), (_b = target.serviceConfig) === null || _b === void 0 ? void 0 : _b.serviceFolders.map(function (folder) {
|
|
169
|
+
return path_1.default.join(buildSourceFolder, folder);
|
|
170
|
+
})))), false))];
|
|
171
|
+
case 1:
|
|
172
|
+
_e.sent();
|
|
173
|
+
return [4 /*yield*/, expect((0, getAllFolders_1.getAllFolders)(target, getAllFolders_1.SasFileType.Job, config)).resolves.toEqual(__spreadArray([], __read(new Set(Array.prototype.concat((_c = config.jobConfig) === null || _c === void 0 ? void 0 : _c.jobFolders.map(function (folder) {
|
|
174
|
+
return path_1.default.join(buildSourceFolder, folder);
|
|
175
|
+
}), (_d = target.jobConfig) === null || _d === void 0 ? void 0 : _d.jobFolders.map(function (folder) {
|
|
176
|
+
return path_1.default.join(buildSourceFolder, folder);
|
|
177
|
+
})))), false))];
|
|
178
|
+
case 2:
|
|
179
|
+
_e.sent();
|
|
180
|
+
return [2 /*return*/];
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
}); });
|
|
184
|
+
});
|
|
@@ -58,7 +58,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
58
58
|
var config_1 = require("../../../utils/config");
|
|
59
59
|
var test_1 = require("../../../utils/test");
|
|
60
60
|
var utils_1 = require("@sasjs/utils");
|
|
61
|
-
var
|
|
61
|
+
var getAllFoldersModule = __importStar(require("../internal/getAllFolders"));
|
|
62
62
|
var compileModule = __importStar(require("../compile"));
|
|
63
63
|
describe('copyFilesToBuildFolder', function () {
|
|
64
64
|
var appName;
|
|
@@ -106,9 +106,7 @@ describe('copyFilesToBuildFolder', function () {
|
|
|
106
106
|
return __generator(this, function (_a) {
|
|
107
107
|
switch (_a.label) {
|
|
108
108
|
case 0:
|
|
109
|
-
jest
|
|
110
|
-
.spyOn(getAllServiceFoldersModule, 'getAllServiceFolders')
|
|
111
|
-
.mockImplementation(function () {
|
|
109
|
+
jest.spyOn(getAllFoldersModule, 'getAllFolders').mockImplementation(function () {
|
|
112
110
|
throw new Error('Test Error');
|
|
113
111
|
});
|
|
114
112
|
return [4 /*yield*/, (0, config_1.findTargetInConfiguration)('viya')];
|
package/build/utils/test.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/// <reference types="jest" />
|
|
2
2
|
import { ServerType, Target, TargetJson, Configuration } from '@sasjs/utils/types';
|
|
3
3
|
import { Folder } from '../types';
|
|
4
|
-
import { ServiceConfig } from '@sasjs/utils/types/config';
|
|
4
|
+
import { ServiceConfig, JobConfig } from '@sasjs/utils/types/config';
|
|
5
5
|
export declare const createTestApp: (parentFolder: string, appName: string) => Promise<void>;
|
|
6
6
|
export declare const createTestJobsApp: (parentFolder: string, appName: string) => Promise<void>;
|
|
7
7
|
export declare const createTestMinimalApp: (parentFolder: string, appName: string) => Promise<void>;
|
|
8
8
|
export declare const removeTestApp: (parentFolder: string, appName: string) => Promise<void>;
|
|
9
9
|
export declare const removeTestServerFolder: (folderPath: string, target: Target) => Promise<void>;
|
|
10
|
-
export declare const generateTestTarget: (targetName: string, appLoc: string, serviceConfig?: ServiceConfig, serverType?: ServerType) => Target;
|
|
10
|
+
export declare const generateTestTarget: (targetName: string, appLoc: string, serviceConfig?: ServiceConfig, serverType?: ServerType, jobConfig?: JobConfig) => Target;
|
|
11
11
|
export declare const createTestGlobalTarget: (targetName: string, appLoc: string, serviceConfig?: ServiceConfig, serverType?: ServerType) => Promise<Target>;
|
|
12
12
|
export declare const verifyStep: (step?: 'db' | 'compile' | 'build', buildFileName?: string, customFiles?: 'custom' | 'no') => Promise<void>;
|
|
13
13
|
export declare const mockProcessExit: () => jest.SpyInstance<never, [code?: number | undefined]>;
|
package/build/utils/test.js
CHANGED
|
@@ -160,7 +160,7 @@ var removeTestServerFolder = function (folderPath, target) { return __awaiter(vo
|
|
|
160
160
|
});
|
|
161
161
|
}); };
|
|
162
162
|
exports.removeTestServerFolder = removeTestServerFolder;
|
|
163
|
-
var generateTestTarget = function (targetName, appLoc, serviceConfig, serverType) {
|
|
163
|
+
var generateTestTarget = function (targetName, appLoc, serviceConfig, serverType, jobConfig) {
|
|
164
164
|
if (serviceConfig === void 0) { serviceConfig = {
|
|
165
165
|
serviceFolders: [path_1.default.join('sasjs', 'services')],
|
|
166
166
|
initProgram: '',
|
|
@@ -168,6 +168,12 @@ var generateTestTarget = function (targetName, appLoc, serviceConfig, serverType
|
|
|
168
168
|
macroVars: {}
|
|
169
169
|
}; }
|
|
170
170
|
if (serverType === void 0) { serverType = types_1.ServerType.SasViya; }
|
|
171
|
+
if (jobConfig === void 0) { jobConfig = {
|
|
172
|
+
jobFolders: [],
|
|
173
|
+
initProgram: '',
|
|
174
|
+
termProgram: '',
|
|
175
|
+
macroVars: {}
|
|
176
|
+
}; }
|
|
171
177
|
dotenv_1.default.config();
|
|
172
178
|
var target = new types_1.Target({
|
|
173
179
|
name: targetName,
|
|
@@ -183,12 +189,9 @@ var generateTestTarget = function (targetName, appLoc, serviceConfig, serverType
|
|
|
183
189
|
access_token: process.env.ACCESS_TOKEN,
|
|
184
190
|
refresh_token: process.env.REFRESH_TOKEN
|
|
185
191
|
},
|
|
186
|
-
jobConfig:
|
|
187
|
-
jobFolders: []
|
|
188
|
-
},
|
|
192
|
+
jobConfig: jobConfig,
|
|
189
193
|
serviceConfig: serviceConfig,
|
|
190
194
|
testConfig: {
|
|
191
|
-
testFolders: ['tests'],
|
|
192
195
|
initProgram: path_1.default.join('tests', 'testinit.sas'),
|
|
193
196
|
termProgram: path_1.default.join('tests', 'testterm.sas'),
|
|
194
197
|
macroVars: {
|
package/package.json
CHANGED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
39
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
40
|
-
if (!m) return o;
|
|
41
|
-
var i = m.call(o), r, ar = [], e;
|
|
42
|
-
try {
|
|
43
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
44
|
-
}
|
|
45
|
-
catch (error) { e = { error: error }; }
|
|
46
|
-
finally {
|
|
47
|
-
try {
|
|
48
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
49
|
-
}
|
|
50
|
-
finally { if (e) throw e.error; }
|
|
51
|
-
}
|
|
52
|
-
return ar;
|
|
53
|
-
};
|
|
54
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
55
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
56
|
-
if (ar || !(i in from)) {
|
|
57
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
58
|
-
ar[i] = from[i];
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
62
|
-
};
|
|
63
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
64
|
-
exports.getAllServiceFolders = void 0;
|
|
65
|
-
var utils_1 = require("@sasjs/utils");
|
|
66
|
-
var config_1 = require("../../../utils/config");
|
|
67
|
-
function getAllServiceFolders(target) {
|
|
68
|
-
var _a, _b;
|
|
69
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
70
|
-
var configuration, allServices, buildSourceFolder;
|
|
71
|
-
return __generator(this, function (_c) {
|
|
72
|
-
switch (_c.label) {
|
|
73
|
-
case 0: return [4 /*yield*/, (0, config_1.getLocalOrGlobalConfig)()];
|
|
74
|
-
case 1:
|
|
75
|
-
configuration = (_c.sent()).configuration;
|
|
76
|
-
allServices = [];
|
|
77
|
-
if ((_a = configuration === null || configuration === void 0 ? void 0 : configuration.serviceConfig) === null || _a === void 0 ? void 0 : _a.serviceFolders)
|
|
78
|
-
allServices = __spreadArray([], __read(configuration.serviceConfig.serviceFolders), false);
|
|
79
|
-
if ((_b = target === null || target === void 0 ? void 0 : target.serviceConfig) === null || _b === void 0 ? void 0 : _b.serviceFolders)
|
|
80
|
-
allServices = __spreadArray(__spreadArray([], __read(allServices), false), __read(target.serviceConfig.serviceFolders), false);
|
|
81
|
-
allServices = allServices.filter(function (p) { return !!p; });
|
|
82
|
-
buildSourceFolder = process.sasjsConstants.buildSourceFolder;
|
|
83
|
-
allServices = allServices.map(function (service) {
|
|
84
|
-
return (0, utils_1.getAbsolutePath)(service, buildSourceFolder);
|
|
85
|
-
});
|
|
86
|
-
return [2 /*return*/, __spreadArray([], __read(new Set(allServices)), false)];
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
exports.getAllServiceFolders = getAllServiceFolders;
|