UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

74 lines 10.8 kB
"use strict"; 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==