UNPKG

hq-test

Version:

Automatically generate test code based on test parameters

112 lines (111 loc) 3.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const fs_1 = tslib_1.__importDefault(require("fs")); const path_1 = tslib_1.__importDefault(require("path")); function _serializeJson(testParams) { const arr = []; for (const item of testParams) { arr.push(JSON.stringify(item, null, 4)); } return arr.join(',\n'); } function _writeFile(testParams, outputFilePath) { try { if (!testParams.length) { return; } const { version } = testParams[0]; const serializeStr = _serializeJson(testParams); fs_1.default.mkdirSync(`${path_1.default.join(outputFilePath, version)}`, { recursive: true }); fs_1.default.writeFileSync(`${path_1.default.join(outputFilePath, version, 'params.json')}`, '[' + serializeStr + ']'); } catch (e) { throw new Error(e); } } function _appendFile(testParams, outputFilePath) { if (!testParams.length) { return; } const { version } = testParams[0]; const stats = fs_1.default.statSync(`${path_1.default.join(outputFilePath, version, 'params.json')}`); if (stats && stats.isFile()) { const originData = fs_1.default.readFileSync(`${path_1.default.join(outputFilePath, version, 'params.json')}`); const originDataToJson = JSON.parse(originData.toString()); const newData = originDataToJson.concat(testParams); _writeFile(newData, outputFilePath); } } function _readFileAndImport(filePath, outputFilePath, cover, exclude) { const stat = fs_1.default.statSync(filePath); if (stat && stat.isDirectory()) { const dirs = fs_1.default.readdirSync(filePath); for (let fileName of dirs) { if (exclude && exclude.length && exclude.includes(fileName)) { continue; } const filedir = path_1.default.join(filePath, fileName); const stats = fs_1.default.statSync(filedir); const isFile = stats.isFile(); const isDir = stats.isDirectory(); if (isFile) { const data = require(filedir); createTestParams({ testParams: data, cover, outputFilePath }); } if (isDir) { _readFileAndImport(filedir, outputFilePath, cover, exclude); } } } else if (stat && stat.isFile()) { const data = require(filePath); createTestParams({ testParams: data, cover, outputFilePath }); } } function _removeDir(filePath) { if (!fs_1.default.existsSync(filePath)) { return; } let files = fs_1.default.readdirSync(filePath); for (let i = 0; i < files.length; i++) { let filedir = path_1.default.join(filePath, files[i]); let stats = fs_1.default.statSync(filedir); if (stats.isDirectory()) { _removeDir(filedir); } else { fs_1.default.unlinkSync(filedir); } } fs_1.default.rmdirSync(filePath); } function createTestParams(options) { const { testParams, cover, outputFilePath } = options; if (!testParams.length) { return; } const { version } = testParams[0]; if (cover) { _writeFile(testParams, outputFilePath); return; } if (fs_1.default.existsSync(`${path_1.default.join(outputFilePath, version, 'params.json')}`)) { _appendFile(testParams, outputFilePath); } else { _writeFile(testParams, outputFilePath); } } function importTestParams(options) { const { path, exclude, cover, outputFilePath } = options; if (!fs_1.default.existsSync(path)) { throw new Error('该路径不存在'); } _removeDir(`${outputFilePath}`); _readFileAndImport(path, outputFilePath, cover, exclude); } exports.default = { createTestParams, importTestParams };