@aws-cdk-testing/cli-integ
Version:
Integration tests for the AWS CDK CLI
72 lines • 9 kB
JavaScript
;
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==