UNPKG

10.7 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6const path_1 = __importDefault(require("path"));
7const globby_1 = __importDefault(require("globby"));
8const is_glob_1 = __importDefault(require("is-glob"));
9const compiler_1 = __importDefault(require("../compiler"));
10const os_family_1 = __importDefault(require("os-family"));
11const lodash_1 = require("lodash");
12const promisified_functions_1 = require("../utils/promisified-functions");
13const DEFAULT_TEST_LOOKUP_DIRS = ['test/', 'tests/'];
14const TEST_FILE_GLOB_PATTERN = `./**/*@(${compiler_1.default.getSupportedTestFileExtensions().join('|')})`;
15function modifyFileRoot(baseDir, file) {
16 const absPath = path_1.default.resolve(baseDir, file);
17 const fileIsOnOtherDrive = path_1.default.isAbsolute(path_1.default.relative(baseDir, file));
18 if (!path_1.default.isAbsolute(file) || fileIsOnOtherDrive)
19 return file;
20 const { root, dir, base } = path_1.default.parse(absPath);
21 return path_1.default.join(path_1.default.parse(baseDir).root, path_1.default.relative(root, dir), base);
22}
23async function getDefaultDirs(baseDir) {
24 return await globby_1.default(DEFAULT_TEST_LOOKUP_DIRS, {
25 cwd: baseDir,
26 absolute: true,
27 caseSensitiveMatch: false,
28 expandDirectories: false,
29 onlyDirectories: true,
30 suppressErrors: true
31 });
32}
33async function convertDirsToGlobs(fileList, baseDir) {
34 fileList = await Promise.all(fileList.map(async (file) => {
35 if (!is_glob_1.default(file)) {
36 const absPath = path_1.default.resolve(baseDir, file);
37 let fileStat = null;
38 try {
39 fileStat = await promisified_functions_1.stat(absPath);
40 }
41 catch (err) {
42 return null;
43 }
44 if (fileStat.isDirectory())
45 return path_1.default.join(file, TEST_FILE_GLOB_PATTERN);
46 if (os_family_1.default.win)
47 file = modifyFileRoot(baseDir, file);
48 }
49 return file;
50 }));
51 return fileList.filter(file => !!file);
52}
53async function getFiles(globTask) {
54 const files = await globby_1.default(globTask.pattern, globTask.options);
55 return files.sort((fileA, fileB) => fileA.localeCompare(fileB));
56}
57async function execFileGlobs(globs, baseDir) {
58 // NOTE: We have to create glob tasks, execute them and sort their results separately to preserve the same item order
59 // as in the older globby versions (<7.1.1)
60 const tasks = globby_1.default.generateGlobTasks(globs, { cwd: baseDir, expandDirectories: false, onlyFiles: true });
61 const files = await Promise.all(tasks.map(getFiles));
62 return lodash_1.flatten(files);
63}
64async function parseFileList(fileList, baseDir) {
65 if (lodash_1.isEmpty(fileList))
66 fileList = await getDefaultDirs(baseDir);
67 fileList = await convertDirsToGlobs(fileList, baseDir);
68 fileList = await execFileGlobs(fileList, baseDir);
69 return fileList.map(file => path_1.default.resolve(baseDir, file));
70}
71exports.default = parseFileList;
72module.exports = exports.default;
73//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtZmlsZS1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BhcnNlLWZpbGUtbGlzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF3QjtBQUN4QixvREFBNEI7QUFDNUIsc0RBQTZCO0FBQzdCLDJEQUFtQztBQUNuQywwREFBMkI7QUFDM0IsbUNBQTBDO0FBQzFDLDBFQUFzRDtBQUV0RCxNQUFNLHdCQUF3QixHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3JELE1BQU0sc0JBQXNCLEdBQUssV0FBVyxrQkFBUSxDQUFDLDhCQUE4QixFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFFbkcsU0FBUyxjQUFjLENBQUUsT0FBTyxFQUFFLElBQUk7SUFDbEMsTUFBTSxPQUFPLEdBQWMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkQsTUFBTSxrQkFBa0IsR0FBRyxjQUFJLENBQUMsVUFBVSxDQUFDLGNBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFekUsSUFBSSxDQUFDLGNBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksa0JBQWtCO1FBQzVDLE9BQU8sSUFBSSxDQUFDO0lBRWhCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLGNBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFaEQsT0FBTyxjQUFJLENBQUMsSUFBSSxDQUFDLGNBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLGNBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9FLENBQUM7QUFFRCxLQUFLLFVBQVUsY0FBYyxDQUFFLE9BQU87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c0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgZ2xvYmJ5IGZyb20gJ2dsb2JieSc7XG5pbXBvcnQgaXNHbG9iIGZyb20gJ2lzLWdsb2InO1xuaW1wb3J0IENvbXBpbGVyIGZyb20gJy4uL2NvbXBpbGVyJztcbmltcG9ydCBPUyBmcm9tICdvcy1mYW1pbHknO1xuaW1wb3J0IHsgaXNFbXB0eSwgZmxhdHRlbiB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBzdGF0IH0gZnJvbSAnLi4vdXRpbHMvcHJvbWlzaWZpZWQtZnVuY3Rpb25zJztcblxuY29uc3QgREVGQVVMVF9URVNUX0xPT0tVUF9ESVJTID0gWyd0ZXN0LycsICd0ZXN0cy8nXTtcbmNvbnN0IFRFU1RfRklMRV9HTE9CX1BBVFRFUk4gICA9IGAuLyoqLypAKCR7Q29tcGlsZXIuZ2V0U3VwcG9ydGVkVGVzdEZpbGVFeHRlbnNpb25zKCkuam9pbignfCcpfSlgO1xuXG5mdW5jdGlvbiBtb2RpZnlGaWxlUm9vdCAoYmFzZURpciwgZmlsZSkge1xuICAgIGNvbnN0IGFic1BhdGggICAgICAgICAgICA9IHBhdGgucmVzb2x2ZShiYXNlRGlyLCBmaWxlKTtcbiAgICBjb25zdCBmaWxlSXNPbk90aGVyRHJpdmUgPSBwYXRoLmlzQWJzb2x1dGUocGF0aC5yZWxhdGl2ZShiYXNlRGlyLCBmaWxlKSk7XG5cbiAgICBpZiAoIXBhdGguaXNBYnNvbHV0ZShmaWxlKSB8fCBmaWxlSXNPbk90aGVyRHJpdmUpXG4gICAgICAgIHJldHVybiBmaWxlO1xuXG4gICAgY29uc3QgeyByb290LCBkaXIsIGJhc2UgfSA9IHBhdGgucGFyc2UoYWJzUGF0aCk7XG5cbiAgICByZXR1cm4gcGF0aC5qb2luKHBhdGgucGFyc2UoYmFzZURpcikucm9vdCwgcGF0aC5yZWxhdGl2ZShyb290LCBkaXIpLCBiYXNlKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RGVmYXVsdERpcnMgKGJhc2VEaXIpIHtcbiAgICByZXR1cm4gYXdhaXQgZ2xvYmJ5KERFRkFVTFRfVEVTVF9MT09LVVBfRElSUywge1xuICAgICAgICBjd2Q6ICAgICAgICAgICAgICAgIGJhc2VEaXIsXG4gICAgICAgIGFic29sdXRlOiAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgY2FzZVNlbnNpdGl2ZU1hdGNoOiBmYWxzZSxcbiAgICAgICAgZXhwYW5kRGlyZWN0b3JpZXM6ICBmYWxzZSxcbiAgICAgICAgb25seURpcmVjdG9yaWVzOiAgICB0cnVlLFxuICAgICAgICBzdXBwcmVzc0Vycm9yczogICAgIHRydWVcbiAgICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydERpcnNUb0dsb2JzIChmaWxlTGlzdCwgYmFzZURpcikge1xuICAgIGZpbGVMaXN0ID0gYXdhaXQgUHJvbWlzZS5hbGwoZmlsZUxpc3QubWFwKGFzeW5jIGZpbGUgPT4ge1xuICAgICAgICBpZiAoIWlzR2xvYihmaWxlKSkge1xuICAgICAgICAgICAgY29uc3QgYWJzUGF0aCA9IHBhdGgucmVzb2x2ZShiYXNlRGlyLCBmaWxlKTtcbiAgICAgICAgICAgIGxldCBmaWxlU3RhdCAgPSBudWxsO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZpbGVTdGF0ID0gYXdhaXQgc3RhdChhYnNQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpbGVTdGF0LmlzRGlyZWN0b3J5KCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhdGguam9pbihmaWxlLCBURVNUX0ZJTEVfR0xPQl9QQVRURVJOKTtcblxuICAgICAgICAgICAgaWYgKE9TLndpbilcbiAgICAgICAgICAgICAgICBmaWxlID0gbW9kaWZ5RmlsZVJvb3QoYmFzZURpciwgZmlsZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsZTtcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gZmlsZUxpc3QuZmlsdGVyKGZpbGUgPT4gISFmaWxlKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RmlsZXMgKGdsb2JUYXNrKSB7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iYnkoZ2xvYlRhc2sucGF0dGVybiwgZ2xvYlRhc2sub3B0aW9ucyk7XG5cbiAgICByZXR1cm4gZmlsZXMuc29ydCgoZmlsZUEsIGZpbGVCKSA9PiBmaWxlQS5sb2NhbGVDb21wYXJlKGZpbGVCKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4ZWNGaWxlR2xvYnMgKGdsb2JzLCBiYXNlRGlyKSB7XG4gICAgLy8gTk9URTogV2UgaGF2ZSB0byBjcmVhdGUgZ2xvYiB0YXNrcywgZXhlY3V0ZSB0aGVtIGFuZCBzb3J0IHRoZWlyIHJlc3VsdHMgc2VwYXJhdGVseSB0byBwcmVzZXJ2ZSB0aGUgc2FtZSBpdGVtIG9yZGVyXG4gICAgLy8gYXMgaW4gdGhlIG9sZGVyIGdsb2JieSB2ZXJzaW9ucyAoPDcuMS4xKVxuICAgIGNvbnN0IHRhc2tzID0gZ2xvYmJ5LmdlbmVyYXRlR2xvYlRhc2tzKGdsb2JzLCB7IGN3ZDogYmFzZURpciwgZXhwYW5kRGlyZWN0b3JpZXM6IGZhbHNlLCBvbmx5RmlsZXM6IHRydWUgfSk7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBQcm9taXNlLmFsbCh0YXNrcy5tYXAoZ2V0RmlsZXMpKTtcblxuICAgIHJldHVybiBmbGF0dGVuKGZpbGVzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcGFyc2VGaWxlTGlzdCAoZmlsZUxpc3QsIGJhc2VEaXIpIHtcbiAgICBpZiAoaXNFbXB0eShmaWxlTGlzdCkpXG4gICAgICAgIGZpbGVMaXN0ID0gYXdhaXQgZ2V0RGVmYXVsdERpcnMoYmFzZURpcik7XG5cbiAgICBmaWxlTGlzdCA9IGF3YWl0IGNvbnZlcnREaXJzVG9HbG9icyhmaWxlTGlzdCwgYmFzZURpcik7XG4gICAgZmlsZUxpc3QgPSBhd2FpdCBleGVjRmlsZUdsb2JzKGZpbGVMaXN0LCBiYXNlRGlyKTtcblxuICAgIHJldHVybiBmaWxlTGlzdC5tYXAoZmlsZSA9PiBwYXRoLnJlc29sdmUoYmFzZURpciwgZmlsZSkpO1xufVxuIl19
\No newline at end of file