const fs = require('fs');
const path = require('path');
//读取指定文件夹下的全部文件,可通过正则进行过滤,返回文件路径数组
function readAllFile(root, reg, aaa) {
var resultArr = [];
if (fs.existsSync(root)) {
var stat = fs.lstatSync(root);
if (stat.isDirectory()) {
var files = fs.readdirSync(root);
files.forEach(function (file) {
var t = readAllFile(root + '/' + file, reg);
resultArr = resultArr.concat(t);
});
} else {
if (reg !== undefined) {
if (typeof reg.test == 'function'
&& reg.test(root)) {
resultArr.push(root);
}
} else {
resultArr.push(root);
}
}
}
return resultArr;
}
//获取除去node_modules 后的文件路径数组
//filePath 如果是正则 就匹配正则 是路径 就匹配路径
const readAllFileList = (fileList, testReg) => {
if (fileList.length) {
const result = fileList.reduce((target, file) => {
const { filePath, ExtensionName } = file;
let files = [];
if (filePath instanceof RegExp == false && typeof filePath !== 'string') {
console.log('filePath属性只能是:string || RegExp')
return false;
} else if (filePath instanceof RegExp) {
const noNodeModulesFiles = readAllFile(path.resolve(__dirname, '../'), /^((?!node_modules).)*$/);
files = noNodeModulesFiles
.filter(noNodeModuleFile => filePath.test(noNodeModuleFile))
.filter(file => testReg.test(file));
} else {
files = readAllFile(path.resolve(__dirname, filePath), testReg)
}
const collectList = files.map(path => path.split('creams-main/')[1].split('/__tests')[0] + ExtensionName)
target = target.concat(collectList);
return target;
},[])
return result;
} else {
const noNodeModulesFiles = readAllFile(path.resolve(__dirname, '../'), /^((?!node_modules).)*$/);
return noNodeModulesFiles
.filter(file => testReg.test(file))
.map(path => path.split('creams-main/')[1].split('/__tests')[0] + '/**/*.{ts,tsx}');
}
}
module.exports = readAllFileList;
//获取自定义 指定检查所有需要测试的文件 不配置是默认
const fileList = []
var testReg = /__tests__/;
const collectCoverageFrom = [...new Set(readAllFileList(fileList, testReg))];