UNPKG

uvu-jest

Version:

Run the existing jest code with uvu

73 lines (72 loc) 3.2 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parse = void 0; const fs_1 = require("fs"); const path_1 = require("path"); const util_1 = require("util"); const ls = (0, util_1.promisify)(fs_1.readdir); const toStat = (0, util_1.promisify)(fs_1.stat); const toRegex = x => new RegExp(x, 'i'); function exists(dep) { try { return require.resolve(dep); } catch (err) { return false; } } function parse(dir, pattern, opts = {}) { return __awaiter(this, void 0, void 0, function* () { if (pattern) pattern = toRegex(pattern); else if (dir) pattern = /(((?:[^\/]*(?:\/|$))*)[\\\/])?\w+\.([mc]js|[jt]sx?)$/; else pattern = /((\/|^)(tests?|__tests?__)\/.*|\.(tests?|spec)|^\/?tests?)\.([mc]js|[jt]sx?)$/i; dir = (0, path_1.resolve)(opts.cwd || '.', dir || '.'); let suites = []; let requires = [].concat(opts.require || []).filter(Boolean); let ignores = ['^.git', 'node_modules'].concat(opts.ignore || []).map(toRegex); requires.forEach(name => { let tmp = exists(name); if (tmp) return require(tmp); if (tmp = exists((0, path_1.resolve)(name))) return require(tmp); throw new Error(`Cannot find module '${name}'`); }); // NOTE: Node 8.x support // @modified lukeed/totalist yield (function collect(d, p) { return __awaiter(this, void 0, void 0, function* () { yield ls(d).then(files => { return Promise.all(files.map((str) => __awaiter(this, void 0, void 0, function* () { let name = (0, path_1.join)(p, str); for (let i = ignores.length; i--;) { if (ignores[i].test(name)) return; } let file = (0, path_1.join)(d, str); let stats = yield toStat(file); if (stats.isDirectory()) return collect(file, name); else if (pattern.test(name)) suites.push({ name, file }); }))); }); }); })(dir, ''); suites.sort((a, b) => a.name.localeCompare(b.name)); return { dir, suites, requires: requires.length > 0 }; }); } exports.parse = parse;