UNPKG

@sasjs/cli

Version:

Command line interface for SASjs

666 lines (665 loc) 33.4 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { 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; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.verifyGitNotPresent = exports.verifyCompiledJob = exports.verifyCompiledService = exports.verifyDotFilesNotGenerated = exports.verifyDotFiles = exports.verifyDocs = exports.updateConfig = exports.updateTarget = exports.removeAllTargetsFromConfigs = exports.verifyPackageJsonContent = exports.verifyFolder = exports.mockProcessExit = exports.verifyStep = exports.createTestGlobalTarget = exports.generateTestTarget = exports.removeTestServerFolder = exports.removeTestApp = exports.createTestMinimalApp = exports.createTestJobsApp = exports.createTestApp = void 0; var path_1 = __importDefault(require("path")); var dotenv_1 = __importDefault(require("dotenv")); var utils_1 = require("@sasjs/utils"); var delete_1 = require("../commands/folder/delete"); var types_1 = require("@sasjs/utils/types"); var config_1 = require("./config"); var dbFiles_1 = require("./fileStructures/dbFiles"); var compiledFiles_1 = require("./fileStructures/compiledFiles"); var compiledFilesCustom1_1 = require("./fileStructures/compiledFilesCustom1"); var builtFiles_1 = require("./fileStructures/builtFiles"); var builtFilesCustom1_1 = require("./fileStructures/builtFilesCustom1"); var create_1 = require("../commands/create/create"); var setConstants_1 = require("./setConstants"); var createTestApp = function (parentFolder, appName) { return __awaiter(void 0, void 0, void 0, function () { var _a; return __generator(this, function (_b) { switch (_b.label) { case 0: process.projectDir = parentFolder; return [4 /*yield*/, (0, create_1.create)(appName, '')]; case 1: _b.sent(); process.projectDir = path_1.default.join(parentFolder, appName); process.currentDir = process.projectDir; _a = process; return [4 /*yield*/, (0, config_1.getLocalConfig)()]; case 2: _a.sasjsConfig = _b.sent(); return [4 /*yield*/, (0, setConstants_1.setConstants)()]; case 3: _b.sent(); return [2 /*return*/]; } }); }); }; exports.createTestApp = createTestApp; var createTestJobsApp = function (parentFolder, appName) { return __awaiter(void 0, void 0, void 0, function () { var _a; return __generator(this, function (_b) { switch (_b.label) { case 0: process.projectDir = parentFolder; return [4 /*yield*/, (0, create_1.create)(appName, 'jobs')]; case 1: _b.sent(); process.projectDir = path_1.default.join(parentFolder, appName); process.currentDir = process.projectDir; _a = process; return [4 /*yield*/, (0, config_1.getLocalConfig)()]; case 2: _a.sasjsConfig = _b.sent(); return [4 /*yield*/, (0, setConstants_1.setConstants)()]; case 3: _b.sent(); return [4 /*yield*/, (0, exports.updateTarget)({ serverUrl: 'https://example.com' }, 'viya')]; case 4: _b.sent(); return [2 /*return*/]; } }); }); }; exports.createTestJobsApp = createTestJobsApp; var createTestMinimalApp = function (parentFolder, appName) { return __awaiter(void 0, void 0, void 0, function () { var _a; return __generator(this, function (_b) { switch (_b.label) { case 0: process.projectDir = parentFolder; return [4 /*yield*/, (0, create_1.create)(appName, 'minimal')]; case 1: _b.sent(); process.projectDir = path_1.default.join(parentFolder, appName); process.currentDir = process.projectDir; _a = process; return [4 /*yield*/, (0, config_1.getLocalConfig)()]; case 2: _a.sasjsConfig = _b.sent(); return [4 /*yield*/, (0, setConstants_1.setConstants)()]; case 3: _b.sent(); return [2 /*return*/]; } }); }); }; exports.createTestMinimalApp = createTestMinimalApp; var removeTestApp = function (parentFolder, appName) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, (0, utils_1.deleteFolder)(path_1.default.join(parentFolder, appName))]; case 1: _a.sent(); process.projectDir = ''; process.currentDir = ''; process.sasjsConstants = undefined; return [2 /*return*/]; } }); }); }; exports.removeTestApp = removeTestApp; var removeTestServerFolder = function (folderPath, target) { return __awaiter(void 0, void 0, void 0, function () { var sasjs, accessToken; return __generator(this, function (_a) { switch (_a.label) { case 0: // We do not have a way of deleting server folders with SAS9 yet if (target.serverType === types_1.ServerType.Sas9) { return [2 /*return*/]; } sasjs = (0, config_1.getSASjs)(target); return [4 /*yield*/, (0, config_1.getAccessToken)(target)]; case 1: accessToken = _a.sent(); return [4 /*yield*/, (0, delete_1.deleteFolder)(folderPath, sasjs, accessToken)]; case 2: _a.sent(); return [2 /*return*/]; } }); }); }; exports.removeTestServerFolder = removeTestServerFolder; var generateTestTarget = function (targetName, appLoc, serviceConfig, serverType, jobConfig) { if (serviceConfig === void 0) { serviceConfig = { serviceFolders: [path_1.default.join('sasjs', 'services')], initProgram: '', termProgram: '', macroVars: {} }; } if (serverType === void 0) { serverType = types_1.ServerType.SasViya; } if (jobConfig === void 0) { jobConfig = { jobFolders: [], initProgram: '', termProgram: '', macroVars: {} }; } dotenv_1.default.config(); var serverUrl = process.env.SASJS_SERVER_URL; if (serverType === types_1.ServerType.SasViya) serverUrl = process.env.VIYA_SERVER_URL; if (serverType === types_1.ServerType.Sas9) serverUrl = process.env.SAS9_SERVER_URL; var target = new types_1.Target({ name: targetName, serverType: serverType, serverUrl: serverUrl, contextName: setConstants_1.contextName, appLoc: appLoc, authConfig: { client: process.env.CLIENT, secret: process.env.SECRET, access_token: process.env.ACCESS_TOKEN, refresh_token: process.env.REFRESH_TOKEN }, jobConfig: jobConfig, serviceConfig: serviceConfig, testConfig: { initProgram: path_1.default.join('tests', 'testinit.sas'), termProgram: path_1.default.join('tests', 'testterm.sas'), macroVars: { testsuite: 'SASjs Test Template' }, testSetUp: path_1.default.join('tests', 'testsetup.sas'), testTearDown: path_1.default.join('tests', 'sub', 'testteardown.sas') }, buildConfig: { buildOutputFileName: "".concat(targetName, ".sas") }, deployConfig: { deployServicePack: true } }); return target; }; exports.generateTestTarget = generateTestTarget; var createTestGlobalTarget = function (targetName, appLoc, serviceConfig, serverType) { if (serviceConfig === void 0) { serviceConfig = { serviceFolders: [path_1.default.join('sasjs', 'services')], initProgram: '', termProgram: '', macroVars: {} }; } if (serverType === void 0) { serverType = types_1.ServerType.SasViya; } return __awaiter(void 0, void 0, void 0, function () { var target; return __generator(this, function (_a) { switch (_a.label) { case 0: target = (0, exports.generateTestTarget)(targetName, appLoc, serviceConfig, serverType); return [4 /*yield*/, (0, config_1.saveToGlobalConfig)(target, false)]; case 1: _a.sent(); return [2 /*return*/, target]; } }); }); }; exports.createTestGlobalTarget = createTestGlobalTarget; var verifyStep = function (step, buildFileName, customFiles) { if (step === void 0) { step = 'compile'; } if (buildFileName === void 0) { buildFileName = 'viya'; } if (customFiles === void 0) { customFiles = 'no'; } return __awaiter(void 0, void 0, void 0, function () { var fileStructure, buildJsonFilePath, buildJson, _a, _b, buildSasFilePath, buildSas; return __generator(this, function (_c) { switch (_c.label) { case 0: fileStructure = step === 'db' ? dbFiles_1.dbFiles : step === 'compile' ? customFiles === 'no' ? compiledFiles_1.compiledFiles : compiledFilesCustom1_1.compiledFilesCustom1 : step === 'build' ? customFiles === 'no' ? (0, builtFiles_1.builtFiles)(buildFileName) : (0, builtFilesCustom1_1.builtFilesCustom1)(buildFileName) : compiledFiles_1.compiledFiles; return [4 /*yield*/, expect((0, exports.verifyFolder)(fileStructure)).resolves.toEqual(true)]; case 1: _c.sent(); if (!(step === 'build')) return [3 /*break*/, 4]; buildJsonFilePath = path_1.default.join(process.projectDir, 'sasjsbuild', "".concat(buildFileName, ".json")); _b = (_a = JSON).parse; return [4 /*yield*/, (0, utils_1.readFile)(buildJsonFilePath)]; case 2: buildJson = _b.apply(_a, [_c.sent()]); buildSasFilePath = path_1.default.join(process.projectDir, 'sasjsbuild', "".concat(buildFileName, ".sas")); return [4 /*yield*/, (0, utils_1.readFile)(buildSasFilePath)]; case 3: buildSas = _c.sent(); expect(verifyBuildJson(fileStructure.subFolders, buildJson.members, buildSas)).toEqual(true); _c.label = 4; case 4: return [2 /*return*/]; } }); }); }; exports.verifyStep = verifyStep; var mockProcessExit = function () { return jest.spyOn(process, 'exit').mockImplementation(function (code) { return code; }); }; exports.mockProcessExit = mockProcessExit; var verifyBuildJson = function (folders, buildJson, buildSas) { if (buildJson === void 0) { buildJson = []; } folders.forEach(function (folder) { var folderFound = buildJson .filter(function (buildMember) { return buildMember.type === 'folder'; }) .find(function (buildMember) { return buildMember.name === folder.folderName; }); expect(folderFound).toBeTruthy(); folder.files.forEach(function (file) { var fileFound = folderFound .members.filter(function (buildMember) { return buildMember.type === 'service'; }) .find(function (buildMember) { return buildMember.name === file.fileName.replace(/.sas$/, ''); }); expect(fileFound).toBeTruthy(); expect(buildSas).toEqual(expect.stringContaining("%let service=".concat(fileFound.name, ";"))); }); expect(verifyBuildJson(folder.subFolders, folderFound.members, buildSas)).toEqual(true); }); return true; }; var verifyFolder = function (folder, parentFolderName) { if (parentFolderName === void 0) { parentFolderName = '.'; } return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, expect((0, utils_1.folderExists)(path_1.default.join(process.projectDir, parentFolderName, folder.folderName))).resolves.toEqual(true)]; case 1: _a.sent(); return [4 /*yield*/, (0, utils_1.asyncForEach)(folder.files, function (file) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, expect((0, utils_1.fileExists)(path_1.default.join(process.projectDir, parentFolderName, folder.folderName, file.fileName))).resolves.toEqual(true)]; case 1: _a.sent(); return [2 /*return*/]; } }); }); })]; case 2: _a.sent(); return [4 /*yield*/, (0, utils_1.asyncForEach)(folder.subFolders, function (subFolder) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, (0, exports.verifyFolder)(subFolder, path_1.default.join(parentFolderName, folder.folderName))]; case 1: _a.sent(); return [2 /*return*/]; } }); }); })]; case 3: _a.sent(); return [2 /*return*/, true]; } }); }); }; exports.verifyFolder = verifyFolder; var verifyPackageJsonContent = function (parentFolderName) { if (parentFolderName === void 0) { parentFolderName = '.'; } return __awaiter(void 0, void 0, void 0, function () { var packageJsonPath, packageJsonContent, packageJson; return __generator(this, function (_a) { switch (_a.label) { case 0: packageJsonPath = path_1.default.join(process.projectDir, parentFolderName, 'package.json'); return [4 /*yield*/, expect((0, utils_1.fileExists)(packageJsonPath)).resolves.toEqual(true)]; case 1: _a.sent(); return [4 /*yield*/, (0, utils_1.readFile)(packageJsonPath)]; case 2: packageJsonContent = _a.sent(); packageJson = JSON.parse(packageJsonContent); expect(parentFolderName.includes('minimal') ? packageJson.devDependencies : packageJson.dependencies).toEqual(expect.objectContaining({ '@sasjs/core': expect.anything() })); return [2 /*return*/]; } }); }); }; exports.verifyPackageJsonContent = verifyPackageJsonContent; var removeAllTargetsFromConfigs = function () { return __awaiter(void 0, void 0, void 0, function () { var buildSourceFolder, configPath, config, globalConfig; var _a; return __generator(this, function (_b) { switch (_b.label) { case 0: buildSourceFolder = process.sasjsConstants.buildSourceFolder; configPath = path_1.default.join(buildSourceFolder, 'sasjs', 'sasjsconfig.json'); return [4 /*yield*/, (0, config_1.getConfiguration)(configPath)]; case 1: config = _b.sent(); config.targets = []; return [4 /*yield*/, (0, utils_1.createFile)(configPath, JSON.stringify(config, null, 2))]; case 2: _b.sent(); return [4 /*yield*/, (0, config_1.getGlobalRcFile)()]; case 3: globalConfig = _b.sent(); if (!((_a = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.targets) === null || _a === void 0 ? void 0 : _a.length)) return [3 /*break*/, 5]; globalConfig.targets = []; return [4 /*yield*/, (0, config_1.saveGlobalRcFile)(JSON.stringify(globalConfig, null, 2))]; case 4: _b.sent(); _b.label = 5; case 5: return [2 /*return*/]; } }); }); }; exports.removeAllTargetsFromConfigs = removeAllTargetsFromConfigs; var updateTarget = function (targetJson, targetName, isLocal) { if (isLocal === void 0) { isLocal = true; } return __awaiter(void 0, void 0, void 0, function () { var config, _a, targetIndex, _b; return __generator(this, function (_c) { switch (_c.label) { case 0: if (!isLocal) return [3 /*break*/, 2]; return [4 /*yield*/, (0, config_1.getLocalConfig)()]; case 1: _a = _c.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, (0, config_1.getGlobalRcFile)()]; case 3: _a = _c.sent(); _c.label = 4; case 4: config = _a; if (!(config === null || config === void 0 ? void 0 : config.targets)) return [3 /*break*/, 10]; targetIndex = config.targets.findIndex(function (t) { return t.name === targetName; }); if (!(targetIndex >= 0)) return [3 /*break*/, 9]; config.targets.splice(targetIndex, 1, __assign(__assign({}, config.targets[targetIndex]), targetJson)); config = __assign(__assign({}, config), { targets: config.targets.map(function (target) { return (__assign(__assign({}, target), { serverUrl: process.env["".concat(target.serverType === types_1.ServerType.SasViya ? 'VIYA' : target.serverType, "_SERVER_URL")] })); }) }); if (!isLocal) return [3 /*break*/, 6]; return [4 /*yield*/, (0, config_1.saveLocalConfigFile)(JSON.stringify(config, null, 2))]; case 5: _b = _c.sent(); return [3 /*break*/, 8]; case 6: return [4 /*yield*/, (0, config_1.saveGlobalRcFile)(JSON.stringify(config, null, 2))]; case 7: _b = _c.sent(); _c.label = 8; case 8: _b; return [2 /*return*/, new types_1.Target(config.targets[targetIndex])]; case 9: throw "Unable to find Target: ".concat(targetName); case 10: throw "Unable to find Target: ".concat(targetName); } }); }); }; exports.updateTarget = updateTarget; var updateConfig = function (config, isLocal) { if (isLocal === void 0) { isLocal = true; } return __awaiter(void 0, void 0, void 0, function () { var currentConfig, _a, updatedConfig, _b; return __generator(this, function (_c) { switch (_c.label) { case 0: if (!isLocal) return [3 /*break*/, 2]; return [4 /*yield*/, (0, config_1.getLocalConfig)()]; case 1: _a = _c.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, (0, config_1.getGlobalRcFile)()]; case 3: _a = _c.sent(); _c.label = 4; case 4: currentConfig = _a; updatedConfig = __assign(__assign({}, currentConfig), config); if (!isLocal) return [3 /*break*/, 6]; return [4 /*yield*/, (0, config_1.saveLocalConfigFile)(JSON.stringify(updatedConfig, null, 2))]; case 5: _b = _c.sent(); return [3 /*break*/, 8]; case 6: return [4 /*yield*/, (0, config_1.saveGlobalRcFile)(JSON.stringify(updatedConfig, null, 2))]; case 7: _b = _c.sent(); _c.label = 8; case 8: _b; return [2 /*return*/]; } }); }); }; exports.updateConfig = updateConfig; var verifyDocs = function (docsFolder, target, macroCore) { if (macroCore === void 0) { macroCore = true; } return __awaiter(void 0, void 0, void 0, function () { var indexHTML, appInitHTML, sas9MacrosExampleMacro, sas9ServicesAdminDostuff, viyaMacrosExampleMacro, viyaServicesAdminDostuff, yetAnotherMacro, yetAnotherMacroSource, macroCoreFile, macroCoreFileSource, expectSas9Files, expectViyaFiles, indexHTMLContent; return __generator(this, function (_a) { switch (_a.label) { case 0: indexHTML = path_1.default.join(docsFolder, 'index.html'); appInitHTML = path_1.default.join(docsFolder, 'appinit_8sas.html'); sas9MacrosExampleMacro = path_1.default.join(docsFolder, 'targets_2sas9_2macros_2examplemacro_8sas_source.html'); sas9ServicesAdminDostuff = path_1.default.join(docsFolder, 'targets_2sas9_2services_2admin_2dostuff_8sas_source.html'); viyaMacrosExampleMacro = path_1.default.join(docsFolder, 'targets_2viya_2macros_2examplemacro_8sas_source.html'); viyaServicesAdminDostuff = path_1.default.join(docsFolder, 'targets_2viya_2services_2admin_2dostuff_8sas_source.html'); yetAnotherMacro = path_1.default.join(docsFolder, 'yetanothermacro_8sas.html'); yetAnotherMacroSource = path_1.default.join(docsFolder, 'yetanothermacro_8sas_source.html'); macroCoreFile = path_1.default.join(docsFolder, 'mf__existds_8sas.html'); macroCoreFileSource = path_1.default.join(docsFolder, 'mf__existds_8sas_source.html'); return [4 /*yield*/, expect((0, utils_1.folderExists)(docsFolder)).resolves.toEqual(true)]; case 1: _a.sent(); return [4 /*yield*/, expect((0, utils_1.fileExists)(indexHTML)).resolves.toEqual(true)]; case 2: _a.sent(); return [4 /*yield*/, expect((0, utils_1.fileExists)(appInitHTML)).resolves.toEqual(true)]; case 3: _a.sent(); expectSas9Files = target === 'sas9'; expectViyaFiles = target === 'viya'; return [4 /*yield*/, expect((0, utils_1.fileExists)(sas9MacrosExampleMacro)).resolves.toEqual(expectSas9Files)]; case 4: _a.sent(); return [4 /*yield*/, expect((0, utils_1.fileExists)(sas9ServicesAdminDostuff)).resolves.toEqual(expectSas9Files)]; case 5: _a.sent(); return [4 /*yield*/, expect((0, utils_1.fileExists)(viyaMacrosExampleMacro)).resolves.toEqual(expectViyaFiles)]; case 6: _a.sent(); return [4 /*yield*/, expect((0, utils_1.fileExists)(viyaServicesAdminDostuff)).resolves.toEqual(expectViyaFiles)]; case 7: _a.sent(); return [4 /*yield*/, expect((0, utils_1.fileExists)(yetAnotherMacro)).resolves.toEqual(true)]; case 8: _a.sent(); return [4 /*yield*/, expect((0, utils_1.fileExists)(yetAnotherMacroSource)).resolves.toEqual(true)]; case 9: _a.sent(); return [4 /*yield*/, expect((0, utils_1.fileExists)(macroCoreFile)).resolves.toEqual(macroCore)]; case 10: _a.sent(); return [4 /*yield*/, expect((0, utils_1.fileExists)(macroCoreFileSource)).resolves.toEqual(macroCore)]; case 11: _a.sent(); return [4 /*yield*/, (0, utils_1.readFile)(indexHTML)]; case 12: indexHTMLContent = _a.sent(); expect(indexHTMLContent).toEqual(expect.stringMatching(/Contributing/)); expect(indexHTMLContent).toEqual(expect.stringMatching(/Environment Setup/)); return [2 /*return*/]; } }); }); }; exports.verifyDocs = verifyDocs; var verifyDotFiles = function (docsFolder) { return __awaiter(void 0, void 0, void 0, function () { var dotCodeFile, dotGraphFile; return __generator(this, function (_a) { switch (_a.label) { case 0: dotCodeFile = path_1.default.join(docsFolder, 'data_lineage.dot'); dotGraphFile = path_1.default.join(docsFolder, 'data_lineage.svg'); return [4 /*yield*/, expect((0, utils_1.folderExists)(docsFolder)).resolves.toEqual(true)]; case 1: _a.sent(); return [4 /*yield*/, expect((0, utils_1.fileExists)(dotCodeFile)).resolves.toEqual(true)]; case 2: _a.sent(); return [4 /*yield*/, expect((0, utils_1.fileExists)(dotGraphFile)).resolves.toEqual(true)]; case 3: _a.sent(); return [2 /*return*/]; } }); }); }; exports.verifyDotFiles = verifyDotFiles; var verifyDotFilesNotGenerated = function (docsFolder) { return __awaiter(void 0, void 0, void 0, function () { var dotCodeFile, dotGraphFile; return __generator(this, function (_a) { switch (_a.label) { case 0: dotCodeFile = path_1.default.join(docsFolder, 'data_lineage.dot'); dotGraphFile = path_1.default.join(docsFolder, 'data_lineage.svg'); return [4 /*yield*/, expect((0, utils_1.fileExists)(dotCodeFile)).resolves.toEqual(false)]; case 1: _a.sent(); return [4 /*yield*/, expect((0, utils_1.fileExists)(dotGraphFile)).resolves.toEqual(false)]; case 2: _a.sent(); return [2 /*return*/]; } }); }); }; exports.verifyDotFilesNotGenerated = verifyDotFilesNotGenerated; var verifyCompiledService = function (compiledContent, macrosToTest, checkInit, checkTerm) { if (checkInit === void 0) { checkInit = true; } if (checkTerm === void 0) { checkTerm = true; } return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, verifyCompile(compiledContent, macrosToTest, checkInit, checkTerm, 'service')]; case 1: _a.sent(); return [2 /*return*/]; } }); }); }; exports.verifyCompiledService = verifyCompiledService; var verifyCompiledJob = function (compiledContent, macrosToTest, checkInit, checkTerm) { if (checkInit === void 0) { checkInit = true; } if (checkTerm === void 0) { checkTerm = true; } return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, verifyCompile(compiledContent, macrosToTest, checkInit, checkTerm, 'job')]; case 1: _a.sent(); return [2 /*return*/]; } }); }); }; exports.verifyCompiledJob = verifyCompiledJob; var verifyCompile = function (compiledContent, macrosToTest, checkInit, checkTerm, fileType) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { if (fileType === 'service') { if (checkInit) { expect(/\* ServiceInit start;/.test(compiledContent)).toEqual(true); expect(/\* ServiceInit end;/.test(compiledContent)).toEqual(true); } if (checkTerm) { expect(/\* ServiceTerm start;/.test(compiledContent)).toEqual(true); expect(/\* ServiceTerm end;/.test(compiledContent)).toEqual(true); } } if (fileType === 'job') { if (checkInit) { expect(/\* JobInit start;/.test(compiledContent)).toEqual(true); expect(/\* JobInit end;/.test(compiledContent)).toEqual(true); } if (checkTerm) { expect(/\* JobTerm start;/.test(compiledContent)).toEqual(true); expect(/\* JobTerm end;/.test(compiledContent)).toEqual(true); } } macrosToTest.forEach(function (macro) { var re = new RegExp("%macro ".concat(macro)); expect(re.test(compiledContent)).toEqual(true); }); return [2 /*return*/]; }); }); }; var verifyGitNotPresent = function (folder) { return __awaiter(void 0, void 0, void 0, function () { var gitFolderOrModules; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, (0, utils_1.listFilesAndSubFoldersInFolder)(folder, true)]; case 1: gitFolderOrModules = (_a.sent()).filter(function (sub) { return /\.git$/.test(sub) || new RegExp(".git".concat(utils_1.pathSepEscaped)).test(sub) || /\.gitmodules/.test(sub); }); expect(gitFolderOrModules.length).toEqual(0); return [2 /*return*/]; } }); }); }; exports.verifyGitNotPresent = verifyGitNotPresent;