testcafe
Version:
Automated browser testing for the modern web development stack.
74 lines • 10.8 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
const pinkie_1 = __importDefault(require("pinkie"));
const globby_1 = __importDefault(require("globby"));
const is_glob_1 = __importDefault(require("is-glob"));
const compiler_1 = __importDefault(require("../compiler"));
const os_family_1 = __importDefault(require("os-family"));
const lodash_1 = require("lodash");
const promisified_functions_1 = require("../utils/promisified-functions");
const DEFAULT_TEST_LOOKUP_DIRS = ['test/', 'tests/'];
const TEST_FILE_GLOB_PATTERN = `./**/*@(${compiler_1.default.getSupportedTestFileExtensions().join('|')})`;
function modifyFileRoot(baseDir, file) {
const absPath = path_1.default.resolve(baseDir, file);
const fileIsOnOtherDrive = path_1.default.isAbsolute(path_1.default.relative(baseDir, file));
if (!path_1.default.isAbsolute(file) || fileIsOnOtherDrive)
return file;
const { root, dir, base } = path_1.default.parse(absPath);
return path_1.default.join(path_1.default.parse(baseDir).root, path_1.default.relative(root, dir), base);
}
async function getDefaultDirs(baseDir) {
return await globby_1.default(DEFAULT_TEST_LOOKUP_DIRS, {
cwd: baseDir,
absolute: true,
caseSensitiveMatch: false,
expandDirectories: false,
onlyDirectories: true,
suppressErrors: true
});
}
async function convertDirsToGlobs(fileList, baseDir) {
fileList = await pinkie_1.default.all(fileList.map(async (file) => {
if (!is_glob_1.default(file)) {
const absPath = path_1.default.resolve(baseDir, file);
let fileStat = null;
try {
fileStat = await promisified_functions_1.stat(absPath);
}
catch (err) {
return null;
}
if (fileStat.isDirectory())
return path_1.default.join(file, TEST_FILE_GLOB_PATTERN);
if (os_family_1.default.win)
file = modifyFileRoot(baseDir, file);
}
return file;
}));
return fileList.filter(file => !!file);
}
async function getFiles(globTask) {
const files = await globby_1.default(globTask.pattern, globTask.options);
return files.sort((fileA, fileB) => fileA.localeCompare(fileB));
}
async function execFileGlobs(globs, baseDir) {
// NOTE: We have to create glob tasks, execute them and sort their results separately to preserve the same item order
// as in the older globby versions (<7.1.1)
const tasks = globby_1.default.generateGlobTasks(globs, { cwd: baseDir, expandDirectories: false, onlyFiles: true });
const files = await pinkie_1.default.all(tasks.map(getFiles));
return lodash_1.flatten(files);
}
async function parseFileList(fileList, baseDir) {
if (lodash_1.isEmpty(fileList))
fileList = await getDefaultDirs(baseDir);
fileList = await convertDirsToGlobs(fileList, baseDir);
fileList = await execFileGlobs(fileList, baseDir);
return fileList.map(file => path_1.default.resolve(baseDir, file));
}
exports.default = parseFileList;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtZmlsZS1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BhcnNlLWZpbGUtbGlzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF3QjtBQUN4QixvREFBNkI7QUFDN0Isb0RBQTRCO0FBQzVCLHNEQUE2QjtBQUM3QiwyREFBbUM7QUFDbkMsMERBQTJCO0FBQzNCLG1DQUEwQztBQUMxQywwRUFBc0Q7QUFFdEQsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNyRCxNQUFNLHNCQUFzQixHQUFLLFdBQVcsa0JBQVEsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0FBRW5HLFNBQVMsY0FBYyxDQUFFLE9BQU8sRUFBRSxJQUFJO0lBQ2xDLE1BQU0sT0FBTyxHQUFjLGNBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sa0JBQWtCLEdBQUcsY0FBSSxDQUFDLFVBQVUsQ0FBQyxjQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRXpFLElBQUksQ0FBQyxjQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLGtCQUFrQjtRQUM1QyxPQUFPLElBQUksQ0FBQztJQUVoQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxjQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRWhELE9BQU8sY0FBSSxDQUFDLElBQUksQ0FBQyxjQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxjQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBRUQsS0FBSyxVQUFVLGNB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LGdDQVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgUHJvbWlzZSBmcm9tICdwaW5raWUnO1xuaW1wb3J0IGdsb2JieSBmcm9tICdnbG9iYnknO1xuaW1wb3J0IGlzR2xvYiBmcm9tICdpcy1nbG9iJztcbmltcG9ydCBDb21waWxlciBmcm9tICcuLi9jb21waWxlcic7XG5pbXBvcnQgT1MgZnJvbSAnb3MtZmFtaWx5JztcbmltcG9ydCB7IGlzRW1wdHksIGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgc3RhdCB9IGZyb20gJy4uL3V0aWxzL3Byb21pc2lmaWVkLWZ1bmN0aW9ucyc7XG5cbmNvbnN0IERFRkFVTFRfVEVTVF9MT09LVVBfRElSUyA9IFsndGVzdC8nLCAndGVzdHMvJ107XG5jb25zdCBURVNUX0ZJTEVfR0xPQl9QQVRURVJOICAgPSBgLi8qKi8qQCgke0NvbXBpbGVyLmdldFN1cHBvcnRlZFRlc3RGaWxlRXh0ZW5zaW9ucygpLmpvaW4oJ3wnKX0pYDtcblxuZnVuY3Rpb24gbW9kaWZ5RmlsZVJvb3QgKGJhc2VEaXIsIGZpbGUpIHtcbiAgICBjb25zdCBhYnNQYXRoICAgICAgICAgICAgPSBwYXRoLnJlc29sdmUoYmFzZURpciwgZmlsZSk7XG4gICAgY29uc3QgZmlsZUlzT25PdGhlckRyaXZlID0gcGF0aC5pc0Fic29sdXRlKHBhdGgucmVsYXRpdmUoYmFzZURpciwgZmlsZSkpO1xuXG4gICAgaWYgKCFwYXRoLmlzQWJzb2x1dGUoZmlsZSkgfHwgZmlsZUlzT25PdGhlckRyaXZlKVxuICAgICAgICByZXR1cm4gZmlsZTtcblxuICAgIGNvbnN0IHsgcm9vdCwgZGlyLCBiYXNlIH0gPSBwYXRoLnBhcnNlKGFic1BhdGgpO1xuXG4gICAgcmV0dXJuIHBhdGguam9pbihwYXRoLnBhcnNlKGJhc2VEaXIpLnJvb3QsIHBhdGgucmVsYXRpdmUocm9vdCwgZGlyKSwgYmFzZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldERlZmF1bHREaXJzIChiYXNlRGlyKSB7XG4gICAgcmV0dXJuIGF3YWl0IGdsb2JieShERUZBVUxUX1RFU1RfTE9PS1VQX0RJUlMsIHtcbiAgICAgICAgY3dkOiAgICAgICAgICAgICAgICBiYXNlRGlyLFxuICAgICAgICBhYnNvbHV0ZTogICAgICAgICAgIHRydWUsXG4gICAgICAgIGNhc2VTZW5zaXRpdmVNYXRjaDogZmFsc2UsXG4gICAgICAgIGV4cGFuZERpcmVjdG9yaWVzOiAgZmFsc2UsXG4gICAgICAgIG9ubHlEaXJlY3RvcmllczogICAgdHJ1ZSxcbiAgICAgICAgc3VwcHJlc3NFcnJvcnM6ICAgICB0cnVlXG4gICAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnREaXJzVG9HbG9icyAoZmlsZUxpc3QsIGJhc2VEaXIpIHtcbiAgICBmaWxlTGlzdCA9IGF3YWl0IFByb21pc2UuYWxsKGZpbGVMaXN0Lm1hcChhc3luYyBmaWxlID0+IHtcbiAgICAgICAgaWYgKCFpc0dsb2IoZmlsZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGFic1BhdGggPSBwYXRoLnJlc29sdmUoYmFzZURpciwgZmlsZSk7XG4gICAgICAgICAgICBsZXQgZmlsZVN0YXQgID0gbnVsbDtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmaWxlU3RhdCA9IGF3YWl0IHN0YXQoYWJzUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmaWxlU3RhdC5pc0RpcmVjdG9yeSgpKVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXRoLmpvaW4oZmlsZSwgVEVTVF9GSUxFX0dMT0JfUEFUVEVSTik7XG5cbiAgICAgICAgICAgIGlmIChPUy53aW4pXG4gICAgICAgICAgICAgICAgZmlsZSA9IG1vZGlmeUZpbGVSb290KGJhc2VEaXIsIGZpbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIGZpbGVMaXN0LmZpbHRlcihmaWxlID0+ICEhZmlsZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEZpbGVzIChnbG9iVGFzaykge1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYmJ5KGdsb2JUYXNrLnBhdHRlcm4sIGdsb2JUYXNrLm9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGZpbGVzLnNvcnQoKGZpbGVBLCBmaWxlQikgPT4gZmlsZUEubG9jYWxlQ29tcGFyZShmaWxlQikpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleGVjRmlsZUdsb2JzIChnbG9icywgYmFzZURpcikge1xuICAgIC8vIE5PVEU6IFdlIGhhdmUgdG8gY3JlYXRlIGdsb2IgdGFza3MsIGV4ZWN1dGUgdGhlbSBhbmQgc29ydCB0aGVpciByZXN1bHRzIHNlcGFyYXRlbHkgdG8gcHJlc2VydmUgdGhlIHNhbWUgaXRlbSBvcmRlclxuICAgIC8vIGFzIGluIHRoZSBvbGRlciBnbG9iYnkgdmVyc2lvbnMgKDw3LjEuMSlcbiAgICBjb25zdCB0YXNrcyA9IGdsb2JieS5nZW5lcmF0ZUdsb2JUYXNrcyhnbG9icywgeyBjd2Q6IGJhc2VEaXIsIGV4cGFuZERpcmVjdG9yaWVzOiBmYWxzZSwgb25seUZpbGVzOiB0cnVlIH0pO1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgUHJvbWlzZS5hbGwodGFza3MubWFwKGdldEZpbGVzKSk7XG5cbiAgICByZXR1cm4gZmxhdHRlbihmaWxlcyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlRmlsZUxpc3QgKGZpbGVMaXN0LCBiYXNlRGlyKSB7XG4gICAgaWYgKGlzRW1wdHkoZmlsZUxpc3QpKVxuICAgICAgICBmaWxlTGlzdCA9IGF3YWl0IGdldERlZmF1bHREaXJzKGJhc2VEaXIpO1xuXG4gICAgZmlsZUxpc3QgPSBhd2FpdCBjb252ZXJ0RGlyc1RvR2xvYnMoZmlsZUxpc3QsIGJhc2VEaXIpO1xuICAgIGZpbGVMaXN0ID0gYXdhaXQgZXhlY0ZpbGVHbG9icyhmaWxlTGlzdCwgYmFzZURpcik7XG5cbiAgICByZXR1cm4gZmlsZUxpc3QubWFwKGZpbGUgPT4gcGF0aC5yZXNvbHZlKGJhc2VEaXIsIGZpbGUpKTtcbn1cbiJdfQ==