UNPKG

@backstage/cli

Version:

CLI for developing Backstage plugins and apps

134 lines (128 loc) 3.99 kB
'use strict'; var os = require('os'); var PackageGraph = require('./PackageGraph-84e587f4.cjs.js'); var index = require('./index-d2845aa8.cjs.js'); var run = require('./run-eac5f3ab.cjs.js'); require('path'); require('@manypkg/get-packages'); require('@backstage/errors'); require('child_process'); require('util'); require('./Lockfile-e5943b84.cjs.js'); require('fs-extra'); require('semver'); require('@yarnpkg/parsers'); require('@yarnpkg/lockfile'); require('minimatch'); require('chalk'); require('./yarn-8315d2ff.cjs.js'); require('commander'); require('@backstage/cli-common'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var os__default = /*#__PURE__*/_interopDefaultLegacy(os); function createFlagFinder(args) { const flags = /* @__PURE__ */ new Set(); for (const arg of args) { if (arg.startsWith("--no-")) { flags.add(`--${arg.slice("--no-".length)}`); } else if (arg.startsWith("--")) { flags.add(arg.split("=")[0]); } else if (arg.startsWith("-")) { const shortFlags = arg.slice(1).split(""); for (const shortFlag of shortFlags) { flags.add(`-${shortFlag}`); } } } return (...findFlags) => { for (const flag of findFlags) { if (flags.has(flag)) { return true; } } return false; }; } function removeOptionArg(args, option) { let changed = false; do { changed = false; const index = args.indexOf(option); if (index >= 0) { changed = true; args.splice(index, 2); } const indexEq = args.findIndex((arg) => arg.startsWith(`${option}=`)); if (indexEq >= 0) { changed = true; args.splice(indexEq, 1); } } while (changed); } async function command(opts, cmd) { let parent = cmd; while (parent.parent) { parent = parent.parent; } const allArgs = parent.args; const args = allArgs.slice(allArgs.indexOf("test") + 1); const hasFlags = createFlagFinder(args); if (!hasFlags("-c", "--config")) { args.push("--config", index.paths.resolveOwn("config/jest.js")); } if (!hasFlags("--passWithNoTests")) { args.push("--passWithNoTests"); } if (!process.env.CI && !hasFlags("--coverage", "--watch", "--watchAll")) { const isGitRepo = () => run.runCheck("git", "rev-parse", "--is-inside-work-tree"); const isMercurialRepo = () => run.runCheck("hg", "--cwd", ".", "root"); if (await isGitRepo() || await isMercurialRepo()) { args.push("--watch"); } else { args.push("--watchAll"); } } if (!hasFlags("--workerIdleMemoryLimit")) { args.push("--workerIdleMemoryLimit=1000M"); } if (os__default["default"].cpus().length <= 3 && !hasFlags("-i", "--runInBand", "-w", "--maxWorkers")) { args.push("--maxWorkers=2"); } if (opts.since) { removeOptionArg(args, "--since"); } if (opts.since && !hasFlags("--selectProjects")) { const packages = await PackageGraph.PackageGraph.listTargetPackages(); const graph = PackageGraph.PackageGraph.fromPackages(packages); const changedPackages = await graph.listChangedPackages({ ref: opts.since, analyzeLockfile: true }); const packageNames = Array.from( graph.collectPackageNames( changedPackages.map((pkg) => pkg.name), (pkg) => pkg.allLocalDependents.keys() ) ); if (packageNames.length === 0) { console.log(`No packages changed since ${opts.since}`); return; } args.push("--selectProjects", ...packageNames); } if (!process.env.NODE_ENV) { process.env.NODE_ENV = "test"; } if (!process.env.TZ) { process.env.TZ = "UTC"; } if (args.includes("--jest-help")) { removeOptionArg(args, "--jest-help"); args.push("--help"); process.stdout._handle.setBlocking(true); } await require("jest").run(args); } exports.command = command; exports.createFlagFinder = createFlagFinder; //# sourceMappingURL=test-364cf6e1.cjs.js.map