UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

72 lines 9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TestLibraryGlobalInstallSource = exports.RunnerLibraryGlobalInstallSource = void 0; const fs_1 = require("fs"); const os = require("os"); const path = require("path"); const files_1 = require("../files"); const npm_1 = require("../npm"); const shell_1 = require("../shell"); /** * A library dependency that cli-integ installs into its own `node_modules`. */ class RunnerLibraryGlobalInstallSource { packageName; range; sourceDescription; constructor(packageName, range) { this.packageName = packageName; this.range = range; this.sourceDescription = `${this.packageName}@${this.range}`; } async runnerPrepare() { // Create a tempdir where we install the requested package, then symlink into our `node_modules` const tempDir = await fs_1.promises.mkdtemp(path.join(os.tmpdir(), 'tmpcdk')); await fs_1.promises.mkdir(tempDir, { recursive: true }); await (0, shell_1.shell)(['node', require.resolve('npm'), 'install', `${this.packageName}@${this.range}`], { cwd: tempDir, show: 'error', outputs: [process.stderr], }); const symlinkPath = path.join(__dirname, '..', '..', 'node_modules', this.packageName); await fs_1.promises.mkdir(path.dirname(symlinkPath), { recursive: true }); await fs_1.promises.symlink(path.join(tempDir, 'node_modules', this.packageName), symlinkPath, 'junction'); const version = await (0, npm_1.npmQueryInstalledVersion)(this.packageName, tempDir); return { version, async dispose() { // Remove the symlink again await fs_1.promises.unlink(symlinkPath); }, serialize: () => { return [TestLibraryGlobalInstallSource, [this.packageName, version]]; }, }; } } exports.RunnerLibraryGlobalInstallSource = RunnerLibraryGlobalInstallSource; class TestLibraryGlobalInstallSource { packageName; version; constructor(packageName, version) { this.packageName = packageName; this.version = version; } requestedVersion() { return this.version; } assertJsiiPackagesAvailable() { // FIXME: Always a no-op. } async initializeDotnetPackages(currentDir) { // FIXME: this code has nothing to do with the package source, really, so shouldn't be here. if (process.env.CWD_FILES_DIR) { await (0, files_1.copyDirectoryContents)(process.env.CWD_FILES_DIR, currentDir); } } requestedAlphaVersion() { return this.version; } } exports.TestLibraryGlobalInstallSource = TestLibraryGlobalInstallSource; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicmFyeS1nbG9iYWxpbnN0YWxsLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxpYnJhcnktZ2xvYmFsaW5zdGFsbC1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQW9DO0FBQ3BDLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFFN0Isb0NBQWlEO0FBQ2pELGdDQUFrRDtBQUNsRCxvQ0FBaUM7QUFFakM7O0dBRUc7QUFDSCxNQUFhLGdDQUFnQztJQUdkO0lBQXNDO0lBRm5ELGlCQUFpQixDQUFTO0lBRTFDLFlBQTZCLFdBQW1CLEVBQW1CLEtBQWE7UUFBbkQsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBbUIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUM5RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvRCxDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWE7UUFDeEIsZ0dBQWdHO1FBQ2hHLE1BQU0sT0FBTyxHQUFHLE1BQU0sYUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sYUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU3QyxNQUFNLElBQUEsYUFBSyxFQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUM1RixHQUFHLEVBQUUsT0FBTztZQUNaLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUMxQixDQUFDLENBQUM7UUFFSCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkYsTUFBTSxhQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLGFBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFaEcsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLDhCQUF3QixFQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFMUUsT0FBTztZQUNMLE9BQU87WUFDUCxLQUFLLENBQUMsT0FBTztnQkFDWCwyQkFBMkI7Z0JBQzNCLE1BQU0sYUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMvQixDQUFDO1lBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFDZCxPQUFPLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDdkUsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFuQ0QsNEVBbUNDO0FBRUQsTUFBYSw4QkFBOEI7SUFDYjtJQUFzQztJQUFsRSxZQUE0QixXQUFtQixFQUFtQixPQUFlO1FBQXJELGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQW1CLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFDakYsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVNLDJCQUEyQjtRQUNoQyx5QkFBeUI7SUFDM0IsQ0FBQztJQUVNLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxVQUFrQjtRQUN0RCw0RkFBNEY7UUFDNUYsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzlCLE1BQU0sSUFBQSw2QkFBcUIsRUFBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNyRSxDQUFDO0lBQ0gsQ0FBQztJQUVNLHFCQUFxQjtRQUMxQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBdEJELHdFQXNCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB0eXBlIHsgSVJ1bm5lclNvdXJjZSwgSVByZXBhcmVkUnVubmVyU291cmNlLCBJVGVzdExpYnJhcnlTb3VyY2UgfSBmcm9tICcuL3NvdXJjZSc7XG5pbXBvcnQgeyBjb3B5RGlyZWN0b3J5Q29udGVudHMgfSBmcm9tICcuLi9maWxlcyc7XG5pbXBvcnQgeyBucG1RdWVyeUluc3RhbGxlZFZlcnNpb24gfSBmcm9tICcuLi9ucG0nO1xuaW1wb3J0IHsgc2hlbGwgfSBmcm9tICcuLi9zaGVsbCc7XG5cbi8qKlxuICogQSBsaWJyYXJ5IGRlcGVuZGVuY3kgdGhhdCBjbGktaW50ZWcgaW5zdGFsbHMgaW50byBpdHMgb3duIGBub2RlX21vZHVsZXNgLlxuICovXG5leHBvcnQgY2xhc3MgUnVubmVyTGlicmFyeUdsb2JhbEluc3RhbGxTb3VyY2UgaW1wbGVtZW50cyBJUnVubmVyU291cmNlPElUZXN0TGlicmFyeVNvdXJjZT4ge1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlRGVzY3JpcHRpb246IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBhY2thZ2VOYW1lOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgcmFuZ2U6IHN0cmluZykge1xuICAgIHRoaXMuc291cmNlRGVzY3JpcHRpb24gPSBgJHt0aGlzLnBhY2thZ2VOYW1lfUAke3RoaXMucmFuZ2V9YDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBydW5uZXJQcmVwYXJlKCk6IFByb21pc2U8SVByZXBhcmVkUnVubmVyU291cmNlPElUZXN0TGlicmFyeVNvdXJjZT4+IHtcbiAgICAvLyBDcmVhdGUgYSB0ZW1wZGlyIHdoZXJlIHdlIGluc3RhbGwgdGhlIHJlcXVlc3RlZCBwYWNrYWdlLCB0aGVuIHN5bWxpbmsgaW50byBvdXIgYG5vZGVfbW9kdWxlc2BcbiAgICBjb25zdCB0ZW1wRGlyID0gYXdhaXQgZnMubWtkdGVtcChwYXRoLmpvaW4ob3MudG1wZGlyKCksICd0bXBjZGsnKSk7XG4gICAgYXdhaXQgZnMubWtkaXIodGVtcERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICBhd2FpdCBzaGVsbChbJ25vZGUnLCByZXF1aXJlLnJlc29sdmUoJ25wbScpLCAnaW5zdGFsbCcsIGAke3RoaXMucGFja2FnZU5hbWV9QCR7dGhpcy5yYW5nZX1gXSwge1xuICAgICAgY3dkOiB0ZW1wRGlyLFxuICAgICAgc2hvdzogJ2Vycm9yJyxcbiAgICAgIG91dHB1dHM6IFtwcm9jZXNzLnN0ZGVycl0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBzeW1saW5rUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICdub2RlX21vZHVsZXMnLCB0aGlzLnBhY2thZ2VOYW1lKTtcbiAgICBhd2FpdCBmcy5ta2RpcihwYXRoLmRpcm5hbWUoc3ltbGlua1BhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBhd2FpdCBmcy5zeW1saW5rKHBhdGguam9pbih0ZW1wRGlyLCAnbm9kZV9tb2R1bGVzJywgdGhpcy5wYWNrYWdlTmFtZSksIHN5bWxpbmtQYXRoLCAnanVuY3Rpb24nKTtcblxuICAgIGNvbnN0IHZlcnNpb24gPSBhd2FpdCBucG1RdWVyeUluc3RhbGxlZFZlcnNpb24odGhpcy5wYWNrYWdlTmFtZSwgdGVtcERpcik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmVyc2lvbixcbiAgICAgIGFzeW5jIGRpc3Bvc2UoKSB7XG4gICAgICAgIC8vIFJlbW92ZSB0aGUgc3ltbGluayBhZ2FpblxuICAgICAgICBhd2FpdCBmcy51bmxpbmsoc3ltbGlua1BhdGgpO1xuICAgICAgfSxcbiAgICAgIHNlcmlhbGl6ZTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gW1Rlc3RMaWJyYXJ5R2xvYmFsSW5zdGFsbFNvdXJjZSwgW3RoaXMucGFja2FnZU5hbWUsIHZlcnNpb25dXTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVzdExpYnJhcnlHbG9iYWxJbnN0YWxsU291cmNlIGltcGxlbWVudHMgSVRlc3RMaWJyYXJ5U291cmNlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHBhY2thZ2VOYW1lOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nKSB7XG4gIH1cblxuICBwdWJsaWMgcmVxdWVzdGVkVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZlcnNpb247XG4gIH1cblxuICBwdWJsaWMgYXNzZXJ0SnNpaVBhY2thZ2VzQXZhaWxhYmxlKCk6IHZvaWQge1xuICAgIC8vIEZJWE1FOiBBbHdheXMgYSBuby1vcC5cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplRG90bmV0UGFja2FnZXMoY3VycmVudERpcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gRklYTUU6IHRoaXMgY29kZSBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBwYWNrYWdlIHNvdXJjZSwgcmVhbGx5LCBzbyBzaG91bGRuJ3QgYmUgaGVyZS5cbiAgICBpZiAocHJvY2Vzcy5lbnYuQ1dEX0ZJTEVTX0RJUikge1xuICAgICAgYXdhaXQgY29weURpcmVjdG9yeUNvbnRlbnRzKHByb2Nlc3MuZW52LkNXRF9GSUxFU19ESVIsIGN1cnJlbnREaXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXF1ZXN0ZWRBbHBoYVZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy52ZXJzaW9uO1xuICB9XG59XG5cbiJdfQ==