hq-test
Version:
Automatically generate test code based on test parameters
112 lines (111 loc) • 3.91 kB
JavaScript
;
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
};