UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

97 lines 11.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RepoPackageSource = exports.RepoPackageSourceSetup = void 0; exports.findYarnPackages = findYarnPackages; exports.autoFindRoot = autoFindRoot; const os = require("os"); const path = require("path"); const fs = require("fs-extra"); const files_1 = require("../files"); const shell_1 = require("../shell"); class RepoPackageSourceSetup { constructor(repoRoot) { this.repoRoot = repoRoot; this.name = 'repo'; this.description = `repo(${this.repoRoot})`; } async prepare() { if (!await fs.pathExists(path.join(this.repoRoot, 'package.json')) || !await fs.pathExists(path.join(this.repoRoot, 'yarn.lock'))) { throw new Error(`${this.repoRoot}: does not look like the repository root`); } process.env.REPO_ROOT = this.repoRoot; process.env.REPO_PACKAGE_MAP = await writePackageMap(this.repoRoot); (0, shell_1.addToShellPath)(path.resolve(__dirname, 'repo-tools')); } async cleanup() { } } exports.RepoPackageSourceSetup = RepoPackageSourceSetup; class RepoPackageSource { constructor() { this.repoRoot = process.env.REPO_ROOT; } async makeCliAvailable() { (0, shell_1.addToShellPath)(path.join(this.repoRoot, 'packages', 'aws-cdk', 'bin')); } assertJsiiPackagesAvailable() { throw new Error('jsii client packages are not available when using REPO source'); } async initializeDotnetPackages() { } majorVersion() { const releaseJson = fs.readJsonSync(path.resolve(this.repoRoot, 'release.json')); return releaseJson.majorVersion; } requestedCliVersion() { return '*'; } requestedFrameworkVersion() { return '*'; } requestedAlphaVersion() { return '*'; } } exports.RepoPackageSource = RepoPackageSource; async function writePackageMap(repoRoot) { const packages = await findYarnPackages(repoRoot); const fileName = path.join(os.tmpdir(), 'package-map.json'); await fs.writeJson(fileName, packages); return fileName; } /** * Cache monorepo discovery results, we only want to do this once per run */ const YARN_MONOREPO_CACHE = {}; /** * Return a { name -> directory } packages found in a Yarn monorepo * * Cached in YARN_MONOREPO_CACHE. */ async function findYarnPackages(root) { if (!(root in YARN_MONOREPO_CACHE)) { const outputDataString = JSON.parse(await (0, shell_1.shell)(['yarn', 'workspaces', '--json', 'info'], { captureStderr: false, cwd: root, show: 'error', })).data; const output = JSON.parse(outputDataString); const ret = {}; for (const [k, v] of Object.entries(output)) { ret[k] = path.join(root, v.location); } YARN_MONOREPO_CACHE[root] = ret; } return YARN_MONOREPO_CACHE[root]; } /** * Find the root directory of the repo from the current directory */ async function autoFindRoot() { const found = (0, files_1.findUp)('release.json'); if (!found) { throw new Error(`Could not determine repository root: 'release.json' not found from ${process.cwd()}`); } return path.dirname(found); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwby1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZXBvLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFrRkEsNENBZ0JDO0FBS0Qsb0NBTUM7QUE3R0QseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QiwrQkFBK0I7QUFFL0Isb0NBQWtDO0FBQ2xDLG9DQUFpRDtBQUVqRCxNQUFhLHNCQUFzQjtJQUlqQyxZQUE2QixRQUFnQjtRQUFoQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBSHBDLFNBQUksR0FBRyxNQUFNLENBQUM7UUFJckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQztJQUM5QyxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU87UUFDbEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xJLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSwwQ0FBMEMsQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BFLElBQUEsc0JBQWMsRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTztJQUNwQixDQUFDO0NBQ0Y7QUFwQkQs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QUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IElQYWNrYWdlU291cmNlU2V0dXAsIElQYWNrYWdlU291cmNlIH0gZnJvbSAnLi9zb3VyY2UnO1xuaW1wb3J0IHsgZmluZFVwIH0gZnJvbSAnLi4vZmlsZXMnO1xuaW1wb3J0IHsgc2hlbGwsIGFkZFRvU2hlbGxQYXRoIH0gZnJvbSAnLi4vc2hlbGwnO1xuXG5leHBvcnQgY2xhc3MgUmVwb1BhY2thZ2VTb3VyY2VTZXR1cCBpbXBsZW1lbnRzIElQYWNrYWdlU291cmNlU2V0dXAge1xuICByZWFkb25seSBuYW1lID0gJ3JlcG8nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmVwb1Jvb3Q6IHN0cmluZykge1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBgcmVwbygke3RoaXMucmVwb1Jvb3R9KWA7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJlcGFyZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHRoaXMucmVwb1Jvb3QsICdwYWNrYWdlLmpzb24nKSkgfHwgIWF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHRoaXMucmVwb1Jvb3QsICd5YXJuLmxvY2snKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLnJlcG9Sb290fTogZG9lcyBub3QgbG9vayBsaWtlIHRoZSByZXBvc2l0b3J5IHJvb3RgKTtcbiAgICB9XG5cbiAgICBwcm9jZXNzLmVudi5SRVBPX1JPT1QgPSB0aGlzLnJlcG9Sb290O1xuICAgIHByb2Nlc3MuZW52LlJFUE9fUEFDS0FHRV9NQVAgPSBhd2FpdCB3cml0ZVBhY2thZ2VNYXAodGhpcy5yZXBvUm9vdCk7XG4gICAgYWRkVG9TaGVsbFBhdGgocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3JlcG8tdG9vbHMnKSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2xlYW51cCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVwb1BhY2thZ2VTb3VyY2UgaW1wbGVtZW50cyBJUGFja2FnZVNvdXJjZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVwb1Jvb3Q6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnJlcG9Sb290ID0gcHJvY2Vzcy5lbnYuUkVQT19ST09UIGFzIHN0cmluZztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBtYWtlQ2xpQXZhaWxhYmxlKCkge1xuICAgIGFkZFRvU2hlbGxQYXRoKHBhdGguam9pbih0aGlzLnJlcG9Sb290LCAncGFja2FnZXMnLCAnYXdzLWNkaycsICdiaW4nKSk7XG4gIH1cblxuICBwdWJsaWMgYXNzZXJ0SnNpaVBhY2thZ2VzQXZhaWxhYmxlKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignanNpaSBjbGllbnQgcGFja2FnZXMgYXJlIG5vdCBhdmFpbGFibGUgd2hlbiB1c2luZyBSRVBPIHNvdXJjZScpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemVEb3RuZXRQYWNrYWdlcygpIHtcbiAgfVxuXG4gIHB1YmxpYyBtYWpvclZlcnNpb24oKSB7XG4gICAgY29uc3QgcmVsZWFzZUpzb24gPSBmcy5yZWFkSnNvblN5bmMocGF0aC5yZXNvbHZlKHRoaXMucmVwb1Jvb3QsICdyZWxlYXNlLmpzb24nKSk7XG4gICAgcmV0dXJuIHJlbGVhc2VKc29uLm1ham9yVmVyc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyByZXF1ZXN0ZWRDbGlWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcqJztcbiAgfVxuXG4gIHB1YmxpYyByZXF1ZXN0ZWRGcmFtZXdvcmtWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcqJztcbiAgfVxuXG4gIHB1YmxpYyByZXF1ZXN0ZWRBbHBoYVZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJyonO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlUGFja2FnZU1hcChyZXBvUm9vdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgcGFja2FnZXMgPSBhd2FpdCBmaW5kWWFyblBhY2thZ2VzKHJlcG9Sb290KTtcbiAgY29uc3QgZmlsZU5hbWUgPSBwYXRoLmpvaW4ob3MudG1wZGlyKCksICdwYWNrYWdlLW1hcC5qc29uJyk7XG4gIGF3YWl0IGZzLndyaXRlSnNvbihmaWxlTmFtZSwgcGFja2FnZXMpO1xuICByZXR1cm4gZmlsZU5hbWU7XG59XG5cbi8qKlxuICogQ2FjaGUgbW9ub3JlcG8gZGlzY292ZXJ5IHJlc3VsdHMsIHdlIG9ubHkgd2FudCB0byBkbyB0aGlzIG9uY2UgcGVyIHJ1blxuICovXG5jb25zdCBZQVJOX01PTk9SRVBPX0NBQ0hFOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cbi8qKlxuICogUmV0dXJuIGEgeyBuYW1lIC0+IGRpcmVjdG9yeSB9IHBhY2thZ2VzIGZvdW5kIGluIGEgWWFybiBtb25vcmVwb1xuICpcbiAqIENhY2hlZCBpbiBZQVJOX01PTk9SRVBPX0NBQ0hFLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZFlhcm5QYWNrYWdlcyhyb290OiBzdHJpbmcpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgaWYgKCEocm9vdCBpbiBZQVJOX01PTk9SRVBPX0NBQ0hFKSkge1xuICAgIGNvbnN0IG91dHB1dERhdGFTdHJpbmc6IHN0cmluZyA9IEpTT04ucGFyc2UoYXdhaXQgc2hlbGwoWyd5YXJuJywgJ3dvcmtzcGFjZXMnLCAnLS1qc29uJywgJ2luZm8nXSwge1xuICAgICAgY2FwdHVyZVN0ZGVycjogZmFsc2UsXG4gICAgICBjd2Q6IHJvb3QsXG4gICAgICBzaG93OiAnZXJyb3InLFxuICAgIH0pKS5kYXRhO1xuICAgIGNvbnN0IG91dHB1dDogWWFybldvcmtzcGFjZXNPdXRwdXQgPSBKU09OLnBhcnNlKG91dHB1dERhdGFTdHJpbmcpO1xuXG4gICAgY29uc3QgcmV0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMob3V0cHV0KSkge1xuICAgICAgcmV0W2tdID0gcGF0aC5qb2luKHJvb3QsIHYubG9jYXRpb24pO1xuICAgIH1cbiAgICBZQVJOX01PTk9SRVBPX0NBQ0hFW3Jvb3RdID0gcmV0O1xuICB9XG4gIHJldHVybiBZQVJOX01PTk9SRVBPX0NBQ0hFW3Jvb3RdO1xufVxuXG4vKipcbiAqIEZpbmQgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSByZXBvIGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhdXRvRmluZFJvb3QoKSB7XG4gIGNvbnN0IGZvdW5kID0gZmluZFVwKCdyZWxlYXNlLmpzb24nKTtcbiAgaWYgKCFmb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGRldGVybWluZSByZXBvc2l0b3J5IHJvb3Q6ICdyZWxlYXNlLmpzb24nIG5vdCBmb3VuZCBmcm9tICR7cHJvY2Vzcy5jd2QoKX1gKTtcbiAgfVxuICByZXR1cm4gcGF0aC5kaXJuYW1lKGZvdW5kKTtcbn1cblxudHlwZSBZYXJuV29ya3NwYWNlc091dHB1dCA9IFJlY29yZDxzdHJpbmcsIHsgbG9jYXRpb246IHN0cmluZyB9PjtcbiJdfQ==