UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

55 lines 11.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = require("fs"); const path = require("path"); const lib_1 = require("../../lib"); const npm_1 = require("../../lib/npm"); ['app', 'sample-app'].forEach(template => { (0, lib_1.integTest)(`typescript init ${template}`, (0, lib_1.withTemporaryDirectory)((0, lib_1.withPackages)(async (context) => { const shell = lib_1.ShellHelper.fromContext(context); await context.cli.makeCliAvailable(); await shell.shell(['cdk', 'init', '--lib-version', context.library.requestedVersion(), '-l', 'typescript', template]); await shell.shell(['npm', 'ci']); // this will fail if we have bundled dependencies that introduce version conflicts await shell.shell(['npm', 'prune']); await shell.shell(['npm', 'ls']); // this will fail if we have unmet peer dependencies await shell.shell(['npm', 'run', 'build']); await shell.shell(['npm', 'run', 'test']); await shell.shell(['cdk', 'synth']); })), 300_000); }); // Same as https://github.com/DefinitelyTyped/DefinitelyTyped?tab=readme-ov-file#support-window const TYPESCRIPT_VERSION_AGE_DAYS = 2 * 365; const TYPESCRIPT_VERSIONS = (0, npm_1.typescriptVersionsYoungerThanDaysSync)(TYPESCRIPT_VERSION_AGE_DAYS, (0, npm_1.typescriptVersionsSync)()); /** * Test our generated code with various versions of TypeScript */ TYPESCRIPT_VERSIONS.forEach(tsVersion => { (0, lib_1.integTest)(`typescript ${tsVersion} init app`, (0, lib_1.withTemporaryDirectory)((0, lib_1.withPackages)(async (context) => { const shell = lib_1.ShellHelper.fromContext(context); await context.cli.makeCliAvailable(); await shell.shell(['node', '--version']); await shell.shell(['npm', '--version']); await shell.shell(['cdk', 'init', '--lib-version', context.library.requestedVersion(), '-l', 'typescript', 'app', '--generate-only']); // Necessary because recent versions of ts-jest require TypeScript>=4.3 but we // still want to test with older versions as well. await removeDevDependencies(context); await shell.shell(['npm', 'install', '--save-dev', `typescript@${tsVersion}`]); // After we've removed devDependencies we need to re-install ts-node because it's necessary for `cdk synth` await shell.shell(['npm', 'install', '--save-dev', 'ts-node@^10']); await shell.shell(['npm', 'install']); // Older versions of npm require this to be a separate step from the one above await shell.shell(['npx', 'tsc', '--version']); await shell.shell(['npm', 'prune']); await shell.shell(['npm', 'ls']); // this will fail if we have unmet peer dependencies // We just removed the 'jest' dependency so remove the tests as well because they won't compile await shell.shell(['rm', '-rf', 'test/']); await shell.shell(['npm', 'run', 'build']); await shell.shell(['cdk', 'synth']); }))); }); async function removeDevDependencies(context) { const filename = path.join(context.integTestDir, 'package.json'); const pj = JSON.parse(await fs_1.promises.readFile(filename, { encoding: 'utf-8' })); delete pj.devDependencies; await fs_1.promises.writeFile(filename, JSON.stringify(pj, undefined, 2), { encoding: 'utf-8' }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC10eXBlc2NyaXB0LWFwcC5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbml0LXR5cGVzY3JpcHQtYXBwLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJCQUFvQztBQUNwQyw2QkFBNkI7QUFFN0IsbUNBQXlGO0FBQ3pGLHVDQUE4RjtBQUU5RixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDdkMsSUFBQSxlQUFTLEVBQUMsbUJBQW1CLFFBQVEsRUFBRSxFQUFFLElBQUEsNEJBQXNCLEVBQUMsSUFBQSxrQkFBWSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUM3RixNQUFNLEtBQUssR0FBRyxpQkFBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUVyQyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRXRILE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsa0ZBQWtGO1FBRXBILE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsb0RBQW9EO1FBQ3RGLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FB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QU8sQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDakUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLGFBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7SUFDMUIsTUFBTSxhQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUN4RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHR5cGUgeyBUZW1wb3JhcnlEaXJlY3RvcnlDb250ZXh0IH0gZnJvbSAnLi4vLi4vbGliJztcbmltcG9ydCB7IGludGVnVGVzdCwgd2l0aFRlbXBvcmFyeURpcmVjdG9yeSwgU2hlbGxIZWxwZXIsIHdpdGhQYWNrYWdlcyB9IGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgeyB0eXBlc2NyaXB0VmVyc2lvbnNTeW5jLCB0eXBlc2NyaXB0VmVyc2lvbnNZb3VuZ2VyVGhhbkRheXNTeW5jIH0gZnJvbSAnLi4vLi4vbGliL25wbSc7XG5cblsnYXBwJywgJ3NhbXBsZS1hcHAnXS5mb3JFYWNoKHRlbXBsYXRlID0+IHtcbiAgaW50ZWdUZXN0KGB0eXBlc2NyaXB0IGluaXQgJHt0ZW1wbGF0ZX1gLCB3aXRoVGVtcG9yYXJ5RGlyZWN0b3J5KHdpdGhQYWNrYWdlcyhhc3luYyAoY29udGV4dCkgPT4ge1xuICAgIGNvbnN0IHNoZWxsID0gU2hlbGxIZWxwZXIuZnJvbUNvbnRleHQoY29udGV4dCk7XG4gICAgYXdhaXQgY29udGV4dC5jbGkubWFrZUNsaUF2YWlsYWJsZSgpO1xuXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydjZGsnLCAnaW5pdCcsICctLWxpYi12ZXJzaW9uJywgY29udGV4dC5saWJyYXJ5LnJlcXVlc3RlZFZlcnNpb24oKSwgJy1sJywgJ3R5cGVzY3JpcHQnLCB0ZW1wbGF0ZV0pO1xuXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAnY2knXSk7IC8vIHRoaXMgd2lsbCBmYWlsIGlmIHdlIGhhdmUgYnVuZGxlZCBkZXBlbmRlbmNpZXMgdGhhdCBpbnRyb2R1Y2UgdmVyc2lvbiBjb25mbGljdHNcblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ3BydW5lJ10pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ2xzJ10pOyAvLyB0aGlzIHdpbGwgZmFpbCBpZiB3ZSBoYXZlIHVubWV0IHBlZXIgZGVwZW5kZW5jaWVzXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAncnVuJywgJ2J1aWxkJ10pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ3J1bicsICd0ZXN0J10pO1xuXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydjZGsnLCAnc3ludGgnXSk7XG4gIH0pKSwgMzAwXzAwMCk7XG59KTtcblxuLy8gU2FtZSBhcyBodHRwczovL2dpdGh1Yi5jb20vRGVmaW5pdGVseVR5cGVkL0RlZmluaXRlbHlUeXBlZD90YWI9cmVhZG1lLW92LWZpbGUjc3VwcG9ydC13aW5kb3dcbmNvbnN0IFRZUEVTQ1JJUFRfVkVSU0lPTl9BR0VfREFZUyA9IDIgKiAzNjU7XG5cbmNvbnN0IFRZUEVTQ1JJUFRfVkVSU0lPTlMgPSB0eXBlc2NyaXB0VmVyc2lvbnNZb3VuZ2VyVGhhbkRheXNTeW5jKFRZUEVTQ1JJUFRfVkVSU0lPTl9BR0VfREFZUywgdHlwZXNjcmlwdFZlcnNpb25zU3luYygpKTtcblxuLyoqXG4gKiBUZXN0IG91ciBnZW5lcmF0ZWQgY29kZSB3aXRoIHZhcmlvdXMgdmVyc2lvbnMgb2YgVHlwZVNjcmlwdFxuICovXG5UWVBFU0NSSVBUX1ZFUlNJT05TLmZvckVhY2godHNWZXJzaW9uID0+IHtcbiAgaW50ZWdUZXN0KGB0eXBlc2NyaXB0ICR7dHNWZXJzaW9ufSBpbml0IGFwcGAsIHdpdGhUZW1wb3JhcnlEaXJlY3Rvcnkod2l0aFBhY2thZ2VzKGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgY29uc3Qgc2hlbGwgPSBTaGVsbEhlbHBlci5mcm9tQ29udGV4dChjb250ZXh0KTtcbiAgICBhd2FpdCBjb250ZXh0LmNsaS5tYWtlQ2xpQXZhaWxhYmxlKCk7XG5cbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25vZGUnLCAnLS12ZXJzaW9uJ10pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJy0tdmVyc2lvbiddKTtcblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnY2RrJywgJ2luaXQnLCAnLS1saWItdmVyc2lvbicsIGNvbnRleHQubGlicmFyeS5yZXF1ZXN0ZWRWZXJzaW9uKCksICctbCcsICd0eXBlc2NyaXB0JywgJ2FwcCcsICctLWdlbmVyYXRlLW9ubHknXSk7XG5cbiAgICAvLyBOZWNlc3NhcnkgYmVjYXVzZSByZWNlbnQgdmVyc2lvbnMgb2YgdHMtamVzdCByZXF1aXJlIFR5cGVTY3JpcHQ+PTQuMyBidXQgd2VcbiAgICAvLyBzdGlsbCB3YW50IHRvIHRlc3Qgd2l0aCBvbGRlciB2ZXJzaW9ucyBhcyB3ZWxsLlxuICAgIGF3YWl0IHJlbW92ZURldkRlcGVuZGVuY2llcyhjb250ZXh0KTtcblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ2luc3RhbGwnLCAnLS1zYXZlLWRldicsIGB0eXBlc2NyaXB0QCR7dHNWZXJzaW9ufWBdKTtcblxuICAgIC8vIEFmdGVyIHdlJ3ZlIHJlbW92ZWQgZGV2RGVwZW5kZW5jaWVzIHdlIG5lZWQgdG8gcmUtaW5zdGFsbCB0cy1ub2RlIGJlY2F1c2UgaXQncyBuZWNlc3NhcnkgZm9yIGBjZGsgc3ludGhgXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAnaW5zdGFsbCcsICctLXNhdmUtZGV2JywgJ3RzLW5vZGVAXjEwJ10pO1xuXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAnaW5zdGFsbCddKTsgLy8gT2xkZXIgdmVyc2lvbnMgb2YgbnBtIHJlcXVpcmUgdGhpcyB0byBiZSBhIHNlcGFyYXRlIHN0ZXAgZnJvbSB0aGUgb25lIGFib3ZlXG5cbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25weCcsICd0c2MnLCAnLS12ZXJzaW9uJ10pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ3BydW5lJ10pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ2xzJ10pOyAvLyB0aGlzIHdpbGwgZmFpbCBpZiB3ZSBoYXZlIHVubWV0IHBlZXIgZGVwZW5kZW5jaWVzXG5cbiAgICAvLyBXZSBqdXN0IHJlbW92ZWQgdGhlICdqZXN0JyBkZXBlbmRlbmN5IHNvIHJlbW92ZSB0aGUgdGVzdHMgYXMgd2VsbCBiZWNhdXNlIHRoZXkgd29uJ3QgY29tcGlsZVxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsncm0nLCAnLXJmJywgJ3Rlc3QvJ10pO1xuXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAncnVuJywgJ2J1aWxkJ10pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnY2RrJywgJ3N5bnRoJ10pO1xuICB9KSkpO1xufSk7XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbW92ZURldkRlcGVuZGVuY2llcyhjb250ZXh0OiBUZW1wb3JhcnlEaXJlY3RvcnlDb250ZXh0KSB7XG4gIGNvbnN0IGZpbGVuYW1lID0gcGF0aC5qb2luKGNvbnRleHQuaW50ZWdUZXN0RGlyLCAncGFja2FnZS5qc29uJyk7XG4gIGNvbnN0IHBqID0gSlNPTi5wYXJzZShhd2FpdCBmcy5yZWFkRmlsZShmaWxlbmFtZSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KSk7XG4gIGRlbGV0ZSBwai5kZXZEZXBlbmRlbmNpZXM7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShmaWxlbmFtZSwgSlNPTi5zdHJpbmdpZnkocGosIHVuZGVmaW5lZCwgMiksIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG59XG4iXX0=