@aws-cdk-testing/cli-integ 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +9 -0
- package/LICENSE +202 -0
- package/NOTICE +16 -0
- package/README.md +205 -0
- package/bin/apply-patches +22 -0
- package/bin/download-and-run-old-tests +52 -0
- package/bin/query-github +2 -0
- package/bin/query-github.d.ts +1 -0
- package/bin/query-github.js +54 -0
- package/bin/query-github.ts +56 -0
- package/bin/run-suite +2 -0
- package/bin/run-suite.d.ts +1 -0
- package/bin/run-suite.js +131 -0
- package/bin/run-suite.ts +140 -0
- package/bin/stage-distribution +2 -0
- package/bin/stage-distribution.d.ts +1 -0
- package/bin/stage-distribution.js +217 -0
- package/bin/stage-distribution.ts +267 -0
- package/bin/test-root +2 -0
- package/bin/test-root.d.ts +1 -0
- package/bin/test-root.js +6 -0
- package/bin/test-root.ts +3 -0
- package/entrypoints/test-cli-regression-against-current-code.sh +11 -0
- package/entrypoints/test-cli-regression-against-latest-release.sh +11 -0
- package/entrypoints/test-cli-regression.bash +83 -0
- package/entrypoints/test.sh +12 -0
- package/lib/aws.d.ts +51 -0
- package/lib/aws.js +206 -0
- package/lib/aws.ts +263 -0
- package/lib/corking.d.ts +12 -0
- package/lib/corking.js +35 -0
- package/lib/corking.ts +33 -0
- package/lib/eventually.d.ts +20 -0
- package/lib/eventually.js +34 -0
- package/lib/eventually.ts +42 -0
- package/lib/files.d.ts +15 -0
- package/lib/files.js +80 -0
- package/lib/files.ts +80 -0
- package/lib/github.d.ts +4 -0
- package/lib/github.js +43 -0
- package/lib/github.ts +43 -0
- package/lib/index.d.ts +13 -0
- package/lib/index.js +30 -0
- package/lib/index.ts +13 -0
- package/lib/integ-test.d.ts +10 -0
- package/lib/integ-test.js +70 -0
- package/lib/integ-test.ts +81 -0
- package/lib/lists.d.ts +1 -0
- package/lib/lists.js +11 -0
- package/lib/lists.ts +9 -0
- package/lib/memoize.d.ts +6 -0
- package/lib/memoize.js +18 -0
- package/lib/memoize.ts +14 -0
- package/lib/npm.d.ts +8 -0
- package/lib/npm.js +38 -0
- package/lib/npm.ts +41 -0
- package/lib/package-sources/release-source.d.ts +23 -0
- package/lib/package-sources/release-source.js +71 -0
- package/lib/package-sources/release-source.ts +81 -0
- package/lib/package-sources/repo-source.d.ts +30 -0
- package/lib/package-sources/repo-source.js +97 -0
- package/lib/package-sources/repo-source.ts +111 -0
- package/lib/package-sources/repo-tools/npm +2 -0
- package/lib/package-sources/repo-tools/npm.d.ts +1 -0
- package/lib/package-sources/repo-tools/npm.js +43 -0
- package/lib/package-sources/repo-tools/npm.ts +48 -0
- package/lib/package-sources/source.d.ts +28 -0
- package/lib/package-sources/source.js +3 -0
- package/lib/package-sources/source.ts +35 -0
- package/lib/package-sources/subprocess.d.ts +3 -0
- package/lib/package-sources/subprocess.js +17 -0
- package/lib/package-sources/subprocess.ts +15 -0
- package/lib/resource-pool.d.ts +50 -0
- package/lib/resource-pool.js +117 -0
- package/lib/resource-pool.ts +140 -0
- package/lib/resources.d.ts +1 -0
- package/lib/resources.js +6 -0
- package/lib/resources.ts +4 -0
- package/lib/shell.d.ts +56 -0
- package/lib/shell.js +123 -0
- package/lib/shell.ts +168 -0
- package/lib/staging/codeartifact.d.ts +44 -0
- package/lib/staging/codeartifact.js +281 -0
- package/lib/staging/codeartifact.ts +387 -0
- package/lib/staging/maven.d.ts +5 -0
- package/lib/staging/maven.js +91 -0
- package/lib/staging/maven.ts +95 -0
- package/lib/staging/npm.d.ts +4 -0
- package/lib/staging/npm.js +55 -0
- package/lib/staging/npm.ts +62 -0
- package/lib/staging/nuget.d.ts +4 -0
- package/lib/staging/nuget.js +69 -0
- package/lib/staging/nuget.ts +75 -0
- package/lib/staging/parallel-shell.d.ts +5 -0
- package/lib/staging/parallel-shell.js +45 -0
- package/lib/staging/parallel-shell.ts +51 -0
- package/lib/staging/pypi.d.ts +4 -0
- package/lib/staging/pypi.js +48 -0
- package/lib/staging/pypi.ts +50 -0
- package/lib/staging/usage-dir.d.ts +31 -0
- package/lib/staging/usage-dir.js +87 -0
- package/lib/staging/usage-dir.ts +99 -0
- package/lib/with-aws.d.ts +14 -0
- package/lib/with-aws.js +60 -0
- package/lib/with-aws.ts +67 -0
- package/lib/with-cdk-app.d.ts +210 -0
- package/lib/with-cdk-app.js +539 -0
- package/lib/with-cdk-app.ts +742 -0
- package/lib/with-cli-lib.d.ts +17 -0
- package/lib/with-cli-lib.js +123 -0
- package/lib/with-cli-lib.ts +134 -0
- package/lib/with-packages.d.ts +5 -0
- package/lib/with-packages.js +13 -0
- package/lib/with-packages.ts +15 -0
- package/lib/with-sam.d.ts +33 -0
- package/lib/with-sam.js +258 -0
- package/lib/with-sam.ts +288 -0
- package/lib/with-temporary-directory.d.ts +5 -0
- package/lib/with-temporary-directory.js +31 -0
- package/lib/with-temporary-directory.ts +35 -0
- package/lib/with-timeout.d.ts +19 -0
- package/lib/with-timeout.js +34 -0
- package/lib/with-timeout.ts +33 -0
- package/lib/xpmutex.d.ts +43 -0
- package/lib/xpmutex.js +207 -0
- package/lib/xpmutex.ts +218 -0
- package/package.json +111 -0
- package/resources/bootstrap-templates/session-tags.all-roles-deny-all.yaml +703 -0
- package/resources/bootstrap-templates/session-tags.deploy-role-deny-sqs.yaml +700 -0
- package/resources/cdk-apps/app/app.js +926 -0
- package/resources/cdk-apps/app/appsync.hotswap.graphql +3 -0
- package/resources/cdk-apps/app/cdk.json +7 -0
- package/resources/cdk-apps/app/docker/Dockerfile +2 -0
- package/resources/cdk-apps/app/docker/Dockerfile.Custom +2 -0
- package/resources/cdk-apps/app/lambda/index.js +4 -0
- package/resources/cdk-apps/app/lambda/response.json +3 -0
- package/resources/cdk-apps/app/nested-stack.js +65 -0
- package/resources/cdk-apps/cfn-include-app/cdk.json +4 -0
- package/resources/cdk-apps/cfn-include-app/cfn-include-app.js +21 -0
- package/resources/cdk-apps/cfn-include-app/example-template.json +13 -0
- package/resources/cdk-apps/rollback-test-app/app.js +110 -0
- package/resources/cdk-apps/rollback-test-app/cdk.json +7 -0
- package/resources/cdk-apps/sam_cdk_integ_app/bin/test-app.js +11 -0
- package/resources/cdk-apps/sam_cdk_integ_app/cdk.json +6 -0
- package/resources/cdk-apps/sam_cdk_integ_app/lib/nested-stack.js +19 -0
- package/resources/cdk-apps/sam_cdk_integ_app/lib/test-stack.js +134 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/docker/DockerImageFunctionConstruct/.no-packagejson-validator +0 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/docker/DockerImageFunctionConstruct/Dockerfile +9 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/docker/DockerImageFunctionConstruct/app.js +22 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/docker/DockerImageFunctionConstruct/package.json +18 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/go/GoFunctionConstruct/go.mod +5 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/go/GoFunctionConstruct/go.sum +17 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/go/GoFunctionConstruct/main.go +17 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/nodejs/NodeJsFunctionConstruct/.no-packagejson-validator +0 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/nodejs/NodeJsFunctionConstruct/app.ts +16 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/nodejs/NodeJsFunctionConstruct/package-lock.json +12 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/nodejs/NodeJsFunctionConstruct/package.json +5 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/python/Function/app.py +15 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/python/Function/requirements.txt +1 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/python/Layer/layer_version_dependency.py +5 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/python/Layer/requirements.txt +1 -0
- package/resources/cdk-apps/sam_cdk_integ_app/src/rest-api-definition.yaml +12 -0
- package/resources/cdk-apps/simple-app/app.js +26 -0
- package/resources/cdk-apps/simple-app/cdk.json +7 -0
- package/resources/cli-regression-patches/v1.119.0/NOTES.md +5 -0
- package/resources/cli-regression-patches/v1.119.0/cli.integtest.js +659 -0
- package/resources/cli-regression-patches/v1.130.0/NOTES.md +12 -0
- package/resources/cli-regression-patches/v1.130.0/app/app.js +378 -0
- package/resources/cli-regression-patches/v1.130.0/bootstrapping.integtest.js +220 -0
- package/resources/cli-regression-patches/v1.44.0/NOTES.md +18 -0
- package/resources/cli-regression-patches/v1.44.0/bootstrapping.integtest.js +126 -0
- package/resources/cli-regression-patches/v1.44.0/test.sh +26 -0
- package/resources/cli-regression-patches/v1.61.1/NOTES.md +2 -0
- package/resources/cli-regression-patches/v1.61.1/skip-tests.txt +16 -0
- package/resources/cli-regression-patches/v1.62.0/NOTES.md +2 -0
- package/resources/cli-regression-patches/v1.62.0/aws-helpers.js +245 -0
- package/resources/cli-regression-patches/v1.63.0/NOTES.md +1 -0
- package/resources/cli-regression-patches/v1.63.0/skip-tests.txt +7 -0
- package/resources/cli-regression-patches/v1.64.0/NOTES.md +3 -0
- package/resources/cli-regression-patches/v1.64.0/cdk-helpers.js +325 -0
- package/resources/cli-regression-patches/v1.64.0/cli.integtest.js +599 -0
- package/resources/cli-regression-patches/v1.64.1/NOTES.md +3 -0
- package/resources/cli-regression-patches/v1.64.1/cdk-helpers.js +324 -0
- package/resources/cli-regression-patches/v1.64.1/cli.integtest.js +599 -0
- package/resources/cli-regression-patches/v1.67.0/NOTES.md +2 -0
- package/resources/cli-regression-patches/v1.67.0/cdk-helpers.js +331 -0
- package/resources/cli-regression-patches/v2.130.0/NOTES.md +1 -0
- package/resources/cli-regression-patches/v2.130.0/node_modules/@aws-cdk-testing/cli-integ/resources/cdk-apps/sam_cdk_integ_app/lib/nested-stack.js +19 -0
- package/resources/cli-regression-patches/v2.130.0/node_modules/@aws-cdk-testing/cli-integ/resources/cdk-apps/sam_cdk_integ_app/lib/test-stack.js +134 -0
- package/resources/cli-regression-patches/v2.130.0/skip-tests.txt +5 -0
- package/resources/cli-regression-patches/v2.132.0/NOTES.md +1 -0
- package/resources/cli-regression-patches/v2.132.0/skip-tests.txt +4 -0
- package/resources/cli-regression-patches/v2.142.0/NOTES.md +1 -0
- package/resources/cli-regression-patches/v2.142.0/skip-tests.txt +4 -0
- package/resources/cli-regression-patches/v2.160.0/skip-tests.txt +2 -0
- package/resources/cli-regression-patches/v2.161.0/NOTES.md +1 -0
- package/resources/cli-regression-patches/v2.161.0/skip-tests.txt +5 -0
- package/resources/cli-regression-patches/v2.166.0/NOTES.md +1 -0
- package/resources/cli-regression-patches/v2.166.0/skip-tests.txt +2 -0
- package/resources/cloud-assemblies/0.36.0/InitStack.template.json +1 -0
- package/resources/cloud-assemblies/0.36.0/cdk.out +1 -0
- package/resources/cloud-assemblies/0.36.0/manifest.json +19 -0
- package/resources/cloud-assemblies/1.10.0-lookup-default-vpc/InitStack.template.json +2 -0
- package/resources/cloud-assemblies/1.10.0-lookup-default-vpc/cdk.out +1 -0
- package/resources/cloud-assemblies/1.10.0-lookup-default-vpc/manifest.json.js +37 -0
- package/resources/cloud-assemblies/1.10.0-request-azs/InitStack.template.json +2 -0
- package/resources/cloud-assemblies/1.10.0-request-azs/cdk.out +1 -0
- package/resources/cloud-assemblies/1.10.0-request-azs/manifest.json.js +34 -0
- package/resources/integ.jest.config.js +25 -0
- package/resources/templates/sqs-template.json +36 -0
- package/skip-tests.txt +8 -0
- package/tests/cli-integ-tests/README.md +47 -0
- package/tests/cli-integ-tests/bootstrapping.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/bootstrapping.integtest.js +412 -0
- package/tests/cli-integ-tests/bootstrapping.integtest.ts +493 -0
- package/tests/cli-integ-tests/cli-lib.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cli-lib.integtest.js +62 -0
- package/tests/cli-integ-tests/cli-lib.integtest.ts +90 -0
- package/tests/cli-integ-tests/cli.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cli.integtest.js +2104 -0
- package/tests/cli-integ-tests/cli.integtest.ts +2874 -0
- package/tests/cli-integ-tests/garbage-collection.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/garbage-collection.integtest.js +314 -0
- package/tests/cli-integ-tests/garbage-collection.integtest.ts +392 -0
- package/tests/init-csharp/init-csharp.integtest.d.ts +1 -0
- package/tests/init-csharp/init-csharp.integtest.js +14 -0
- package/tests/init-csharp/init-csharp.integtest.ts +15 -0
- package/tests/init-fsharp/init-fsharp.integtest.d.ts +1 -0
- package/tests/init-fsharp/init-fsharp.integtest.js +14 -0
- package/tests/init-fsharp/init-fsharp.integtest.ts +15 -0
- package/tests/init-go/init-go.integtest.d.ts +1 -0
- package/tests/init-go/init-go.integtest.js +21 -0
- package/tests/init-go/init-go.integtest.ts +23 -0
- package/tests/init-java/init-java.integtest.d.ts +1 -0
- package/tests/init-java/init-java.integtest.js +14 -0
- package/tests/init-java/init-java.integtest.ts +14 -0
- package/tests/init-javascript/init-javascript.integtest.d.ts +1 -0
- package/tests/init-javascript/init-javascript.integtest.js +53 -0
- package/tests/init-javascript/init-javascript.integtest.ts +59 -0
- package/tests/init-python/init-python.integtest.d.ts +1 -0
- package/tests/init-python/init-python.integtest.js +19 -0
- package/tests/init-python/init-python.integtest.ts +20 -0
- package/tests/init-typescript-app/init-typescript-app.integtest.d.ts +1 -0
- package/tests/init-typescript-app/init-typescript-app.integtest.js +54 -0
- package/tests/init-typescript-app/init-typescript-app.integtest.ts +66 -0
- package/tests/init-typescript-lib/init-typescript-lib.integtest.d.ts +1 -0
- package/tests/init-typescript-lib/init-typescript-lib.integtest.js +13 -0
- package/tests/init-typescript-lib/init-typescript-lib.integtest.ts +13 -0
- package/tests/tool-integrations/amplify.integtest.d.ts +1 -0
- package/tests/tool-integrations/amplify.integtest.js +39 -0
- package/tests/tool-integrations/amplify.integtest.ts +43 -0
- package/tests/tool-integrations/with-tool-context.d.ts +9 -0
- package/tests/tool-integrations/with-tool-context.js +13 -0
- package/tests/tool-integrations/with-tool-context.ts +14 -0
- package/tests/uberpackage/uberpackage.integtest.d.ts +1 -0
- package/tests/uberpackage/uberpackage.integtest.js +11 -0
- package/tests/uberpackage/uberpackage.integtest.ts +11 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import * as fs from 'fs-extra';
|
|
3
|
+
import { integTest, withTemporaryDirectory, ShellHelper, withPackages } from '../../lib';
|
|
4
|
+
|
|
5
|
+
['app', 'sample-app'].forEach(template => {
|
|
6
|
+
integTest(`init javascript ${template}`, withTemporaryDirectory(withPackages(async (context) => {
|
|
7
|
+
const shell = ShellHelper.fromContext(context);
|
|
8
|
+
await context.packages.makeCliAvailable();
|
|
9
|
+
|
|
10
|
+
await shell.shell(['cdk', 'init', '-l', 'javascript', template]);
|
|
11
|
+
await shell.shell(['npm', 'prune']);
|
|
12
|
+
await shell.shell(['npm', 'ls']); // this will fail if we have unmet peer dependencies
|
|
13
|
+
await shell.shell(['npm', 'run', 'test']);
|
|
14
|
+
|
|
15
|
+
await shell.shell(['cdk', 'synth']);
|
|
16
|
+
})));
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
integTest('Test importing CDK from ESM', withTemporaryDirectory(withPackages(async (context) => {
|
|
20
|
+
// Use 'cdk init -l=javascript' to get set up, but use a different file
|
|
21
|
+
const shell = ShellHelper.fromContext(context);
|
|
22
|
+
await context.packages.makeCliAvailable();
|
|
23
|
+
|
|
24
|
+
await shell.shell(['cdk', 'init', '-l', 'javascript', 'app']);
|
|
25
|
+
|
|
26
|
+
// Rewrite some files
|
|
27
|
+
await fs.writeFile(path.join(context.integTestDir, 'new-entrypoint.mjs'), `
|
|
28
|
+
// Test multiple styles of imports
|
|
29
|
+
import { Stack, aws_sns as sns } from 'aws-cdk-lib';
|
|
30
|
+
import { SqsSubscription } from 'aws-cdk-lib/aws-sns-subscriptions';
|
|
31
|
+
import * as sqs from 'aws-cdk-lib/aws-sqs';
|
|
32
|
+
import * as cdk from 'aws-cdk-lib';
|
|
33
|
+
|
|
34
|
+
class TestjsStack extends Stack {
|
|
35
|
+
constructor(scope, id, props) {
|
|
36
|
+
super(scope, id, props);
|
|
37
|
+
|
|
38
|
+
const queue = new sqs.Queue(this, 'TestjsQueue', {
|
|
39
|
+
visibilityTimeout: cdk.Duration.seconds(300)
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const topic = new sns.Topic(this, 'TestjsTopic');
|
|
43
|
+
|
|
44
|
+
topic.addSubscription(new SqsSubscription(queue));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const app = new cdk.App();
|
|
49
|
+
new TestjsStack(app, 'TestjsStack');
|
|
50
|
+
`, { encoding: 'utf-8' });
|
|
51
|
+
|
|
52
|
+
// Rewrite 'cdk.json' to use new entrypoint
|
|
53
|
+
const cdkJson = await fs.readJson(path.join(context.integTestDir, 'cdk.json'));
|
|
54
|
+
cdkJson.app = 'node new-entrypoint.mjs';
|
|
55
|
+
await fs.writeJson(path.join(context.integTestDir, 'cdk.json'), cdkJson);
|
|
56
|
+
|
|
57
|
+
await shell.shell(['cdk', 'synth']);
|
|
58
|
+
|
|
59
|
+
})));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const path = require("path");
|
|
4
|
+
const lib_1 = require("../../lib");
|
|
5
|
+
['app', 'sample-app'].forEach(template => {
|
|
6
|
+
(0, lib_1.integTest)(`init python ${template}`, (0, lib_1.withTemporaryDirectory)((0, lib_1.withPackages)(async (context) => {
|
|
7
|
+
context.packages.assertJsiiPackagesAvailable();
|
|
8
|
+
const shell = lib_1.ShellHelper.fromContext(context);
|
|
9
|
+
await context.packages.makeCliAvailable();
|
|
10
|
+
await shell.shell(['cdk', 'init', '-l', 'python', template]);
|
|
11
|
+
const venvPath = path.resolve(context.integTestDir, '.venv');
|
|
12
|
+
const venv = { PATH: `${venvPath}/bin:${process.env.PATH}`, VIRTUAL_ENV: venvPath };
|
|
13
|
+
await shell.shell([`${venvPath}/bin/pip`, 'install', '-r', 'requirements.txt'], { modEnv: venv });
|
|
14
|
+
await shell.shell([`${venvPath}/bin/pip`, 'install', '-r', 'requirements-dev.txt'], { modEnv: venv });
|
|
15
|
+
await shell.shell([`${venvPath}/bin/pytest`], { modEnv: venv });
|
|
16
|
+
await shell.shell(['cdk', 'synth'], { modEnv: venv });
|
|
17
|
+
})));
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC1weXRob24uaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW5pdC1weXRob24uaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkJBQTZCO0FBQzdCLG1DQUF5RjtBQUV6RixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDdkMsSUFBQSxlQUFTLEVBQUMsZUFBZSxRQUFRLEVBQUUsRUFBRSxJQUFBLDRCQUFzQixFQUFDLElBQUEsa0JBQVksRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDekYsT0FBTyxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBRS9DLE1BQU0sS0FBSyxHQUFHLGlCQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLE1BQU0sT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRTFDLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzdELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3RCxNQUFNLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsUUFBUSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUVwRixNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFFBQVEsVUFBVSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2xHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxVQUFVLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxRQUFRLGFBQWEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEUsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoVGVtcG9yYXJ5RGlyZWN0b3J5LCBTaGVsbEhlbHBlciwgd2l0aFBhY2thZ2VzIH0gZnJvbSAnLi4vLi4vbGliJztcblxuWydhcHAnLCAnc2FtcGxlLWFwcCddLmZvckVhY2godGVtcGxhdGUgPT4ge1xuICBpbnRlZ1Rlc3QoYGluaXQgcHl0aG9uICR7dGVtcGxhdGV9YCwgd2l0aFRlbXBvcmFyeURpcmVjdG9yeSh3aXRoUGFja2FnZXMoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICBjb250ZXh0LnBhY2thZ2VzLmFzc2VydEpzaWlQYWNrYWdlc0F2YWlsYWJsZSgpO1xuXG4gICAgY29uc3Qgc2hlbGwgPSBTaGVsbEhlbHBlci5mcm9tQ29udGV4dChjb250ZXh0KTtcbiAgICBhd2FpdCBjb250ZXh0LnBhY2thZ2VzLm1ha2VDbGlBdmFpbGFibGUoKTtcblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnY2RrJywgJ2luaXQnLCAnLWwnLCAncHl0aG9uJywgdGVtcGxhdGVdKTtcbiAgICBjb25zdCB2ZW52UGF0aCA9IHBhdGgucmVzb2x2ZShjb250ZXh0LmludGVnVGVzdERpciwgJy52ZW52Jyk7XG4gICAgY29uc3QgdmVudiA9IHsgUEFUSDogYCR7dmVudlBhdGh9L2Jpbjoke3Byb2Nlc3MuZW52LlBBVEh9YCwgVklSVFVBTF9FTlY6IHZlbnZQYXRoIH07XG5cbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbYCR7dmVudlBhdGh9L2Jpbi9waXBgLCAnaW5zdGFsbCcsICctcicsICdyZXF1aXJlbWVudHMudHh0J10sIHsgbW9kRW52OiB2ZW52IH0pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFtgJHt2ZW52UGF0aH0vYmluL3BpcGAsICdpbnN0YWxsJywgJy1yJywgJ3JlcXVpcmVtZW50cy1kZXYudHh0J10sIHsgbW9kRW52OiB2ZW52IH0pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFtgJHt2ZW52UGF0aH0vYmluL3B5dGVzdGBdLCB7IG1vZEVudjogdmVudiB9KTtcbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ2NkaycsICdzeW50aCddLCB7IG1vZEVudjogdmVudiB9KTtcbiAgfSkpKTtcbn0pO1xuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import { integTest, withTemporaryDirectory, ShellHelper, withPackages } from '../../lib';
|
|
3
|
+
|
|
4
|
+
['app', 'sample-app'].forEach(template => {
|
|
5
|
+
integTest(`init python ${template}`, withTemporaryDirectory(withPackages(async (context) => {
|
|
6
|
+
context.packages.assertJsiiPackagesAvailable();
|
|
7
|
+
|
|
8
|
+
const shell = ShellHelper.fromContext(context);
|
|
9
|
+
await context.packages.makeCliAvailable();
|
|
10
|
+
|
|
11
|
+
await shell.shell(['cdk', 'init', '-l', 'python', template]);
|
|
12
|
+
const venvPath = path.resolve(context.integTestDir, '.venv');
|
|
13
|
+
const venv = { PATH: `${venvPath}/bin:${process.env.PATH}`, VIRTUAL_ENV: venvPath };
|
|
14
|
+
|
|
15
|
+
await shell.shell([`${venvPath}/bin/pip`, 'install', '-r', 'requirements.txt'], { modEnv: venv });
|
|
16
|
+
await shell.shell([`${venvPath}/bin/pip`, 'install', '-r', 'requirements-dev.txt'], { modEnv: venv });
|
|
17
|
+
await shell.shell([`${venvPath}/bin/pytest`], { modEnv: venv });
|
|
18
|
+
await shell.shell(['cdk', 'synth'], { modEnv: venv });
|
|
19
|
+
})));
|
|
20
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fs_1 = require("fs");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const lib_1 = require("../../lib");
|
|
6
|
+
const npm_1 = require("../../lib/npm");
|
|
7
|
+
['app', 'sample-app'].forEach(template => {
|
|
8
|
+
(0, lib_1.integTest)(`typescript init ${template}`, (0, lib_1.withTemporaryDirectory)((0, lib_1.withPackages)(async (context) => {
|
|
9
|
+
const shell = lib_1.ShellHelper.fromContext(context);
|
|
10
|
+
await context.packages.makeCliAvailable();
|
|
11
|
+
await shell.shell(['cdk', 'init', '-l', 'typescript', template]);
|
|
12
|
+
await shell.shell(['npm', 'prune']);
|
|
13
|
+
await shell.shell(['npm', 'ls']); // this will fail if we have unmet peer dependencies
|
|
14
|
+
await shell.shell(['npm', 'run', 'build']);
|
|
15
|
+
await shell.shell(['npm', 'run', 'test']);
|
|
16
|
+
await shell.shell(['cdk', 'synth']);
|
|
17
|
+
})));
|
|
18
|
+
});
|
|
19
|
+
// Same as https://github.com/DefinitelyTyped/DefinitelyTyped?tab=readme-ov-file#support-window
|
|
20
|
+
const TYPESCRIPT_VERSION_AGE_DAYS = 2 * 365;
|
|
21
|
+
const TYPESCRIPT_VERSIONS = (0, npm_1.typescriptVersionsYoungerThanDaysSync)(TYPESCRIPT_VERSION_AGE_DAYS, (0, npm_1.typescriptVersionsSync)());
|
|
22
|
+
// eslint-disable-next-line no-console
|
|
23
|
+
console.log(TYPESCRIPT_VERSIONS);
|
|
24
|
+
/**
|
|
25
|
+
* Test our generated code with various versions of TypeScript
|
|
26
|
+
*/
|
|
27
|
+
TYPESCRIPT_VERSIONS.forEach(tsVersion => {
|
|
28
|
+
(0, lib_1.integTest)(`typescript ${tsVersion} init app`, (0, lib_1.withTemporaryDirectory)((0, lib_1.withPackages)(async (context) => {
|
|
29
|
+
const shell = lib_1.ShellHelper.fromContext(context);
|
|
30
|
+
await context.packages.makeCliAvailable();
|
|
31
|
+
await shell.shell(['node', '--version']);
|
|
32
|
+
await shell.shell(['npm', '--version']);
|
|
33
|
+
await shell.shell(['cdk', 'init', '-l', 'typescript', 'app', '--generate-only']);
|
|
34
|
+
// Necessary because recent versions of ts-jest require TypeScript>=4.3 but we
|
|
35
|
+
// still want to test with older versions as well.
|
|
36
|
+
await removeDevDependencies(context);
|
|
37
|
+
await shell.shell(['npm', 'install', '--save-dev', `typescript@${tsVersion}`]);
|
|
38
|
+
await shell.shell(['npm', 'install']); // Older versions of npm require this to be a separate step from the one above
|
|
39
|
+
await shell.shell(['npx', 'tsc', '--version']);
|
|
40
|
+
await shell.shell(['npm', 'prune']);
|
|
41
|
+
await shell.shell(['npm', 'ls']); // this will fail if we have unmet peer dependencies
|
|
42
|
+
// We just removed the 'jest' dependency so remove the tests as well because they won't compile
|
|
43
|
+
await shell.shell(['rm', '-rf', 'test/']);
|
|
44
|
+
await shell.shell(['npm', 'run', 'build']);
|
|
45
|
+
await shell.shell(['cdk', 'synth']);
|
|
46
|
+
})));
|
|
47
|
+
});
|
|
48
|
+
async function removeDevDependencies(context) {
|
|
49
|
+
const filename = path.join(context.integTestDir, 'package.json');
|
|
50
|
+
const pj = JSON.parse(await fs_1.promises.readFile(filename, { encoding: 'utf-8' }));
|
|
51
|
+
delete pj.devDependencies;
|
|
52
|
+
await fs_1.promises.writeFile(filename, JSON.stringify(pj, undefined, 2), { encoding: 'utf-8' });
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC10eXBlc2NyaXB0LWFwcC5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbml0LXR5cGVzY3JpcHQtYXBwLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJCQUFvQztBQUNwQyw2QkFBNkI7QUFDN0IsbUNBQW9IO0FBQ3BILHVDQUE4RjtBQUU5RixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDdkMsSUFBQSxlQUFTLEVBQUMsbUJBQW1CLFFBQVEsRUFBRSxFQUFFLElBQUEsNEJBQXNCLEVBQUMsSUFBQSxrQkFBWSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUM3RixNQUFNLEtBQUssR0FBRyxpQkFBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxNQUFNLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUUxQyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUVqRSxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNwQyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9EQUFvRDtRQUN0RixNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxP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Q0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQ3hGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhUZW1wb3JhcnlEaXJlY3RvcnksIFNoZWxsSGVscGVyLCB3aXRoUGFja2FnZXMsIFRlbXBvcmFyeURpcmVjdG9yeUNvbnRleHQgfSBmcm9tICcuLi8uLi9saWInO1xuaW1wb3J0IHsgdHlwZXNjcmlwdFZlcnNpb25zU3luYywgdHlwZXNjcmlwdFZlcnNpb25zWW91bmdlclRoYW5EYXlzU3luYyB9IGZyb20gJy4uLy4uL2xpYi9ucG0nO1xuXG5bJ2FwcCcsICdzYW1wbGUtYXBwJ10uZm9yRWFjaCh0ZW1wbGF0ZSA9PiB7XG4gIGludGVnVGVzdChgdHlwZXNjcmlwdCBpbml0ICR7dGVtcGxhdGV9YCwgd2l0aFRlbXBvcmFyeURpcmVjdG9yeSh3aXRoUGFja2FnZXMoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICBjb25zdCBzaGVsbCA9IFNoZWxsSGVscGVyLmZyb21Db250ZXh0KGNvbnRleHQpO1xuICAgIGF3YWl0IGNvbnRleHQucGFja2FnZXMubWFrZUNsaUF2YWlsYWJsZSgpO1xuXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydjZGsnLCAnaW5pdCcsICctbCcsICd0eXBlc2NyaXB0JywgdGVtcGxhdGVdKTtcblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ3BydW5lJ10pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ2xzJ10pOyAvLyB0aGlzIHdpbGwgZmFpbCBpZiB3ZSBoYXZlIHVubWV0IHBlZXIgZGVwZW5kZW5jaWVzXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAncnVuJywgJ2J1aWxkJ10pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ3J1bicsICd0ZXN0J10pO1xuXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydjZGsnLCAnc3ludGgnXSk7XG4gIH0pKSk7XG59KTtcblxuLy8gU2FtZSBhcyBodHRwczovL2dpdGh1Yi5jb20vRGVmaW5pdGVseVR5cGVkL0RlZmluaXRlbHlUeXBlZD90YWI9cmVhZG1lLW92LWZpbGUjc3VwcG9ydC13aW5kb3dcbmNvbnN0IFRZUEVTQ1JJUFRfVkVSU0lPTl9BR0VfREFZUyA9IDIgKiAzNjU7XG5cbmNvbnN0IFRZUEVTQ1JJUFRfVkVSU0lPTlMgPSB0eXBlc2NyaXB0VmVyc2lvbnNZb3VuZ2VyVGhhbkRheXNTeW5jKFRZUEVTQ1JJUFRfVkVSU0lPTl9BR0VfREFZUywgdHlwZXNjcmlwdFZlcnNpb25zU3luYygpKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbmNvbnNvbGUubG9nKFRZUEVTQ1JJUFRfVkVSU0lPTlMpO1xuXG4vKipcbiAqIFRlc3Qgb3VyIGdlbmVyYXRlZCBjb2RlIHdpdGggdmFyaW91cyB2ZXJzaW9ucyBvZiBUeXBlU2NyaXB0XG4gKi9cblRZUEVTQ1JJUFRfVkVSU0lPTlMuZm9yRWFjaCh0c1ZlcnNpb24gPT4ge1xuICBpbnRlZ1Rlc3QoYHR5cGVzY3JpcHQgJHt0c1ZlcnNpb259IGluaXQgYXBwYCwgd2l0aFRlbXBvcmFyeURpcmVjdG9yeSh3aXRoUGFja2FnZXMoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICBjb25zdCBzaGVsbCA9IFNoZWxsSGVscGVyLmZyb21Db250ZXh0KGNvbnRleHQpO1xuICAgIGF3YWl0IGNvbnRleHQucGFja2FnZXMubWFrZUNsaUF2YWlsYWJsZSgpO1xuXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydub2RlJywgJy0tdmVyc2lvbiddKTtcbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICctLXZlcnNpb24nXSk7XG5cbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ2NkaycsICdpbml0JywgJy1sJywgJ3R5cGVzY3JpcHQnLCAnYXBwJywgJy0tZ2VuZXJhdGUtb25seSddKTtcblxuICAgIC8vIE5lY2Vzc2FyeSBiZWNhdXNlIHJlY2VudCB2ZXJzaW9ucyBvZiB0cy1qZXN0IHJlcXVpcmUgVHlwZVNjcmlwdD49NC4zIGJ1dCB3ZVxuICAgIC8vIHN0aWxsIHdhbnQgdG8gdGVzdCB3aXRoIG9sZGVyIHZlcnNpb25zIGFzIHdlbGwuXG4gICAgYXdhaXQgcmVtb3ZlRGV2RGVwZW5kZW5jaWVzKGNvbnRleHQpO1xuXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAnaW5zdGFsbCcsICctLXNhdmUtZGV2JywgYHR5cGVzY3JpcHRAJHt0c1ZlcnNpb259YF0pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ2luc3RhbGwnXSk7IC8vIE9sZGVyIHZlcnNpb25zIG9mIG5wbSByZXF1aXJlIHRoaXMgdG8gYmUgYSBzZXBhcmF0ZSBzdGVwIGZyb20gdGhlIG9uZSBhYm92ZVxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnB4JywgJ3RzYycsICctLXZlcnNpb24nXSk7XG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAncHJ1bmUnXSk7XG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAnbHMnXSk7IC8vIHRoaXMgd2lsbCBmYWlsIGlmIHdlIGhhdmUgdW5tZXQgcGVlciBkZXBlbmRlbmNpZXNcblxuICAgIC8vIFdlIGp1c3QgcmVtb3ZlZCB0aGUgJ2plc3QnIGRlcGVuZGVuY3kgc28gcmVtb3ZlIHRoZSB0ZXN0cyBhcyB3ZWxsIGJlY2F1c2UgdGhleSB3b24ndCBjb21waWxlXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydybScsICctcmYnLCAndGVzdC8nXSk7XG5cbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdydW4nLCAnYnVpbGQnXSk7XG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydjZGsnLCAnc3ludGgnXSk7XG4gIH0pKSk7XG59KTtcblxuYXN5bmMgZnVuY3Rpb24gcmVtb3ZlRGV2RGVwZW5kZW5jaWVzKGNvbnRleHQ6IFRlbXBvcmFyeURpcmVjdG9yeUNvbnRleHQpIHtcbiAgY29uc3QgZmlsZW5hbWUgPSBwYXRoLmpvaW4oY29udGV4dC5pbnRlZ1Rlc3REaXIsICdwYWNrYWdlLmpzb24nKTtcbiAgY29uc3QgcGogPSBKU09OLnBhcnNlKGF3YWl0IGZzLnJlYWRGaWxlKGZpbGVuYW1lLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pKTtcbiAgZGVsZXRlIHBqLmRldkRlcGVuZGVuY2llcztcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGZpbGVuYW1lLCBKU09OLnN0cmluZ2lmeShwaiwgdW5kZWZpbmVkLCAyKSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { integTest, withTemporaryDirectory, ShellHelper, withPackages, TemporaryDirectoryContext } from '../../lib';
|
|
4
|
+
import { typescriptVersionsSync, typescriptVersionsYoungerThanDaysSync } from '../../lib/npm';
|
|
5
|
+
|
|
6
|
+
['app', 'sample-app'].forEach(template => {
|
|
7
|
+
integTest(`typescript init ${template}`, withTemporaryDirectory(withPackages(async (context) => {
|
|
8
|
+
const shell = ShellHelper.fromContext(context);
|
|
9
|
+
await context.packages.makeCliAvailable();
|
|
10
|
+
|
|
11
|
+
await shell.shell(['cdk', 'init', '-l', 'typescript', template]);
|
|
12
|
+
|
|
13
|
+
await shell.shell(['npm', 'prune']);
|
|
14
|
+
await shell.shell(['npm', 'ls']); // this will fail if we have unmet peer dependencies
|
|
15
|
+
await shell.shell(['npm', 'run', 'build']);
|
|
16
|
+
await shell.shell(['npm', 'run', 'test']);
|
|
17
|
+
|
|
18
|
+
await shell.shell(['cdk', 'synth']);
|
|
19
|
+
})));
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// Same as https://github.com/DefinitelyTyped/DefinitelyTyped?tab=readme-ov-file#support-window
|
|
23
|
+
const TYPESCRIPT_VERSION_AGE_DAYS = 2 * 365;
|
|
24
|
+
|
|
25
|
+
const TYPESCRIPT_VERSIONS = typescriptVersionsYoungerThanDaysSync(TYPESCRIPT_VERSION_AGE_DAYS, typescriptVersionsSync());
|
|
26
|
+
|
|
27
|
+
// eslint-disable-next-line no-console
|
|
28
|
+
console.log(TYPESCRIPT_VERSIONS);
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Test our generated code with various versions of TypeScript
|
|
32
|
+
*/
|
|
33
|
+
TYPESCRIPT_VERSIONS.forEach(tsVersion => {
|
|
34
|
+
integTest(`typescript ${tsVersion} init app`, withTemporaryDirectory(withPackages(async (context) => {
|
|
35
|
+
const shell = ShellHelper.fromContext(context);
|
|
36
|
+
await context.packages.makeCliAvailable();
|
|
37
|
+
|
|
38
|
+
await shell.shell(['node', '--version']);
|
|
39
|
+
await shell.shell(['npm', '--version']);
|
|
40
|
+
|
|
41
|
+
await shell.shell(['cdk', 'init', '-l', 'typescript', 'app', '--generate-only']);
|
|
42
|
+
|
|
43
|
+
// Necessary because recent versions of ts-jest require TypeScript>=4.3 but we
|
|
44
|
+
// still want to test with older versions as well.
|
|
45
|
+
await removeDevDependencies(context);
|
|
46
|
+
|
|
47
|
+
await shell.shell(['npm', 'install', '--save-dev', `typescript@${tsVersion}`]);
|
|
48
|
+
await shell.shell(['npm', 'install']); // Older versions of npm require this to be a separate step from the one above
|
|
49
|
+
await shell.shell(['npx', 'tsc', '--version']);
|
|
50
|
+
await shell.shell(['npm', 'prune']);
|
|
51
|
+
await shell.shell(['npm', 'ls']); // this will fail if we have unmet peer dependencies
|
|
52
|
+
|
|
53
|
+
// We just removed the 'jest' dependency so remove the tests as well because they won't compile
|
|
54
|
+
await shell.shell(['rm', '-rf', 'test/']);
|
|
55
|
+
|
|
56
|
+
await shell.shell(['npm', 'run', 'build']);
|
|
57
|
+
await shell.shell(['cdk', 'synth']);
|
|
58
|
+
})));
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
async function removeDevDependencies(context: TemporaryDirectoryContext) {
|
|
62
|
+
const filename = path.join(context.integTestDir, 'package.json');
|
|
63
|
+
const pj = JSON.parse(await fs.readFile(filename, { encoding: 'utf-8' }));
|
|
64
|
+
delete pj.devDependencies;
|
|
65
|
+
await fs.writeFile(filename, JSON.stringify(pj, undefined, 2), { encoding: 'utf-8' });
|
|
66
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const lib_1 = require("../../lib");
|
|
4
|
+
(0, lib_1.integTest)('typescript init lib', (0, lib_1.withTemporaryDirectory)((0, lib_1.withPackages)(async (context) => {
|
|
5
|
+
const shell = lib_1.ShellHelper.fromContext(context);
|
|
6
|
+
await context.packages.makeCliAvailable();
|
|
7
|
+
await shell.shell(['cdk', 'init', '-l', 'typescript', 'lib']);
|
|
8
|
+
await shell.shell(['npm', 'prune']);
|
|
9
|
+
await shell.shell(['npm', 'ls']); // this will fail if we have unmet peer dependencies
|
|
10
|
+
await shell.shell(['npm', 'run', 'build']);
|
|
11
|
+
await shell.shell(['npm', 'run', 'test']);
|
|
12
|
+
})));
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC10eXBlc2NyaXB0LWxpYi5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbml0LXR5cGVzY3JpcHQtbGliLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUF5RjtBQUV6RixJQUFBLGVBQVMsRUFBQyxxQkFBcUIsRUFBRSxJQUFBLDRCQUFzQixFQUFDLElBQUEsa0JBQVksRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDckYsTUFBTSxLQUFLLEdBQUcsaUJBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFFMUMsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFOUQsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDcEMsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvREFBb0Q7SUFDdEYsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUM1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhUZW1wb3JhcnlEaXJlY3RvcnksIFNoZWxsSGVscGVyLCB3aXRoUGFja2FnZXMgfSBmcm9tICcuLi8uLi9saWInO1xuXG5pbnRlZ1Rlc3QoJ3R5cGVzY3JpcHQgaW5pdCBsaWInLCB3aXRoVGVtcG9yYXJ5RGlyZWN0b3J5KHdpdGhQYWNrYWdlcyhhc3luYyAoY29udGV4dCkgPT4ge1xuICBjb25zdCBzaGVsbCA9IFNoZWxsSGVscGVyLmZyb21Db250ZXh0KGNvbnRleHQpO1xuICBhd2FpdCBjb250ZXh0LnBhY2thZ2VzLm1ha2VDbGlBdmFpbGFibGUoKTtcblxuICBhd2FpdCBzaGVsbC5zaGVsbChbJ2NkaycsICdpbml0JywgJy1sJywgJ3R5cGVzY3JpcHQnLCAnbGliJ10pO1xuXG4gIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ3BydW5lJ10pO1xuICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdscyddKTsgLy8gdGhpcyB3aWxsIGZhaWwgaWYgd2UgaGF2ZSB1bm1ldCBwZWVyIGRlcGVuZGVuY2llc1xuICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdydW4nLCAnYnVpbGQnXSk7XG4gIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ3J1bicsICd0ZXN0J10pO1xufSkpKTtcbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { integTest, withTemporaryDirectory, ShellHelper, withPackages } from '../../lib';
|
|
2
|
+
|
|
3
|
+
integTest('typescript init lib', withTemporaryDirectory(withPackages(async (context) => {
|
|
4
|
+
const shell = ShellHelper.fromContext(context);
|
|
5
|
+
await context.packages.makeCliAvailable();
|
|
6
|
+
|
|
7
|
+
await shell.shell(['cdk', 'init', '-l', 'typescript', 'lib']);
|
|
8
|
+
|
|
9
|
+
await shell.shell(['npm', 'prune']);
|
|
10
|
+
await shell.shell(['npm', 'ls']); // this will fail if we have unmet peer dependencies
|
|
11
|
+
await shell.shell(['npm', 'run', 'build']);
|
|
12
|
+
await shell.shell(['npm', 'run', 'test']);
|
|
13
|
+
})));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fs_1 = require("fs");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const with_tool_context_1 = require("./with-tool-context");
|
|
6
|
+
const lib_1 = require("../../lib");
|
|
7
|
+
const TIMEOUT = 1800000;
|
|
8
|
+
(0, lib_1.integTest)('amplify integration', (0, with_tool_context_1.withToolContext)(async (context) => {
|
|
9
|
+
const shell = lib_1.ShellHelper.fromContext(context);
|
|
10
|
+
await shell.shell(['npm', 'create', '-y', 'amplify@latest']);
|
|
11
|
+
await shell.shell(['npx', 'ampx', 'configure', 'telemetry', 'disable']);
|
|
12
|
+
// This will create 'package.json' implicating a certain version of the CDK
|
|
13
|
+
await updateCdkDependency(context, context.packages.requestedCliVersion(), context.packages.requestedFrameworkVersion());
|
|
14
|
+
await shell.shell(['npm', 'install']);
|
|
15
|
+
await shell.shell(['npx', 'ampx', 'sandbox', '--once'], {
|
|
16
|
+
modEnv: {
|
|
17
|
+
AWS_REGION: context.aws.region,
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
try {
|
|
21
|
+
// Future code goes here, putting the try/finally here already so it doesn't
|
|
22
|
+
// get forgotten.
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
await shell.shell(['npx', 'ampx', 'sandbox', 'delete', '--yes'], {
|
|
26
|
+
modEnv: {
|
|
27
|
+
AWS_REGION: context.aws.region,
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}), TIMEOUT);
|
|
32
|
+
async function updateCdkDependency(context, cliVersion, libVersion) {
|
|
33
|
+
const filename = path.join(context.integTestDir, 'package.json');
|
|
34
|
+
const pj = JSON.parse(await fs_1.promises.readFile(filename, { encoding: 'utf-8' }));
|
|
35
|
+
pj.devDependencies['aws-cdk'] = cliVersion;
|
|
36
|
+
pj.devDependencies['aws-cdk-lib'] = libVersion;
|
|
37
|
+
await fs_1.promises.writeFile(filename, JSON.stringify(pj, undefined, 2), { encoding: 'utf-8' });
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbXBsaWZ5LmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJCQUFvQztBQUNwQyw2QkFBNkI7QUFDN0IsMkRBQXNEO0FBQ3RELG1DQUE4RTtBQUU5RSxNQUFNLE9BQU8sR0FBRyxPQUFRLENBQUM7QUFFekIsSUFBQSxlQUFTLEVBQUMscUJBQXFCLEVBQUUsSUFBQSxtQ0FBZSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNqRSxNQUFNLEtBQUssR0FBRyxpQkFBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUvQyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDN0QsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFFeEUsMkVBQTJFO0lBQzNFLE1BQU0sbUJBQW1CLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQztJQUN6SCxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUV0QyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRTtRQUN0RCxNQUFNLEVBQUU7WUFDTixVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNO1NBQy9CO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDO1FBRUgsNEVBQTRFO1FBQzVFLGlCQUFpQjtJQUVuQixDQUFDO1lBQVMsQ0FBQztRQUNULE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUMvRCxNQUFNLEVBQUU7Z0JBQ04sVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTTthQUMvQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUViLEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxPQUFrQyxFQUFFLFVBQWtCLEVBQUUsVUFBa0I7SUFDM0csTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxhQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDM0MsRUFBRSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDL0MsTUFBTSxhQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUN4RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgd2l0aFRvb2xDb250ZXh0IH0gZnJvbSAnLi93aXRoLXRvb2wtY29udGV4dCc7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIFNoZWxsSGVscGVyLCBUZW1wb3JhcnlEaXJlY3RvcnlDb250ZXh0IH0gZnJvbSAnLi4vLi4vbGliJztcblxuY29uc3QgVElNRU9VVCA9IDE4MDBfMDAwO1xuXG5pbnRlZ1Rlc3QoJ2FtcGxpZnkgaW50ZWdyYXRpb24nLCB3aXRoVG9vbENvbnRleHQoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgY29uc3Qgc2hlbGwgPSBTaGVsbEhlbHBlci5mcm9tQ29udGV4dChjb250ZXh0KTtcblxuICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdjcmVhdGUnLCAnLXknLCAnYW1wbGlmeUBsYXRlc3QnXSk7XG4gIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnB4JywgJ2FtcHgnLCAnY29uZmlndXJlJywgJ3RlbGVtZXRyeScsICdkaXNhYmxlJ10pO1xuXG4gIC8vIFRoaXMgd2lsbCBjcmVhdGUgJ3BhY2thZ2UuanNvbicgaW1wbGljYXRpbmcgYSBjZXJ0YWluIHZlcnNpb24gb2YgdGhlIENES1xuICBhd2FpdCB1cGRhdGVDZGtEZXBlbmRlbmN5KGNvbnRleHQsIGNvbnRleHQucGFja2FnZXMucmVxdWVzdGVkQ2xpVmVyc2lvbigpLCBjb250ZXh0LnBhY2thZ2VzLnJlcXVlc3RlZEZyYW1ld29ya1ZlcnNpb24oKSk7XG4gIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ2luc3RhbGwnXSk7XG5cbiAgYXdhaXQgc2hlbGwuc2hlbGwoWyducHgnLCAnYW1weCcsICdzYW5kYm94JywgJy0tb25jZSddLCB7XG4gICAgbW9kRW52OiB7XG4gICAgICBBV1NfUkVHSU9OOiBjb250ZXh0LmF3cy5yZWdpb24sXG4gICAgfSxcbiAgfSk7XG4gIHRyeSB7XG5cbiAgICAvLyBGdXR1cmUgY29kZSBnb2VzIGhlcmUsIHB1dHRpbmcgdGhlIHRyeS9maW5hbGx5IGhlcmUgYWxyZWFkeSBzbyBpdCBkb2Vzbid0XG4gICAgLy8gZ2V0IGZvcmdvdHRlbi5cblxuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnB4JywgJ2FtcHgnLCAnc2FuZGJveCcsICdkZWxldGUnLCAnLS15ZXMnXSwge1xuICAgICAgbW9kRW52OiB7XG4gICAgICAgIEFXU19SRUdJT046IGNvbnRleHQuYXdzLnJlZ2lvbixcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn0pLCBUSU1FT1VUKTtcblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ2RrRGVwZW5kZW5jeShjb250ZXh0OiBUZW1wb3JhcnlEaXJlY3RvcnlDb250ZXh0LCBjbGlWZXJzaW9uOiBzdHJpbmcsIGxpYlZlcnNpb246IHN0cmluZykge1xuICBjb25zdCBmaWxlbmFtZSA9IHBhdGguam9pbihjb250ZXh0LmludGVnVGVzdERpciwgJ3BhY2thZ2UuanNvbicpO1xuICBjb25zdCBwaiA9IEpTT04ucGFyc2UoYXdhaXQgZnMucmVhZEZpbGUoZmlsZW5hbWUsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSkpO1xuICBwai5kZXZEZXBlbmRlbmNpZXNbJ2F3cy1jZGsnXSA9IGNsaVZlcnNpb247XG4gIHBqLmRldkRlcGVuZGVuY2llc1snYXdzLWNkay1saWInXSA9IGxpYlZlcnNpb247XG4gIGF3YWl0IGZzLndyaXRlRmlsZShmaWxlbmFtZSwgSlNPTi5zdHJpbmdpZnkocGosIHVuZGVmaW5lZCwgMiksIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { withToolContext } from './with-tool-context';
|
|
4
|
+
import { integTest, ShellHelper, TemporaryDirectoryContext } from '../../lib';
|
|
5
|
+
|
|
6
|
+
const TIMEOUT = 1800_000;
|
|
7
|
+
|
|
8
|
+
integTest('amplify integration', withToolContext(async (context) => {
|
|
9
|
+
const shell = ShellHelper.fromContext(context);
|
|
10
|
+
|
|
11
|
+
await shell.shell(['npm', 'create', '-y', 'amplify@latest']);
|
|
12
|
+
await shell.shell(['npx', 'ampx', 'configure', 'telemetry', 'disable']);
|
|
13
|
+
|
|
14
|
+
// This will create 'package.json' implicating a certain version of the CDK
|
|
15
|
+
await updateCdkDependency(context, context.packages.requestedCliVersion(), context.packages.requestedFrameworkVersion());
|
|
16
|
+
await shell.shell(['npm', 'install']);
|
|
17
|
+
|
|
18
|
+
await shell.shell(['npx', 'ampx', 'sandbox', '--once'], {
|
|
19
|
+
modEnv: {
|
|
20
|
+
AWS_REGION: context.aws.region,
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
try {
|
|
24
|
+
|
|
25
|
+
// Future code goes here, putting the try/finally here already so it doesn't
|
|
26
|
+
// get forgotten.
|
|
27
|
+
|
|
28
|
+
} finally {
|
|
29
|
+
await shell.shell(['npx', 'ampx', 'sandbox', 'delete', '--yes'], {
|
|
30
|
+
modEnv: {
|
|
31
|
+
AWS_REGION: context.aws.region,
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}), TIMEOUT);
|
|
36
|
+
|
|
37
|
+
async function updateCdkDependency(context: TemporaryDirectoryContext, cliVersion: string, libVersion: string) {
|
|
38
|
+
const filename = path.join(context.integTestDir, 'package.json');
|
|
39
|
+
const pj = JSON.parse(await fs.readFile(filename, { encoding: 'utf-8' }));
|
|
40
|
+
pj.devDependencies['aws-cdk'] = cliVersion;
|
|
41
|
+
pj.devDependencies['aws-cdk-lib'] = libVersion;
|
|
42
|
+
await fs.writeFile(filename, JSON.stringify(pj, undefined, 2), { encoding: 'utf-8' });
|
|
43
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TestContext } from '../../lib/integ-test';
|
|
2
|
+
import { AwsContext } from '../../lib/with-aws';
|
|
3
|
+
import { DisableBootstrapContext } from '../../lib/with-cdk-app';
|
|
4
|
+
import { PackageContext } from '../../lib/with-packages';
|
|
5
|
+
import { TemporaryDirectoryContext } from '../../lib/with-temporary-directory';
|
|
6
|
+
/**
|
|
7
|
+
* The default prerequisites for tests running tool integrations
|
|
8
|
+
*/
|
|
9
|
+
export declare function withToolContext<A extends TestContext>(block: (context: A & TemporaryDirectoryContext & PackageContext & AwsContext & DisableBootstrapContext) => Promise<void>): (context: A) => Promise<void>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withToolContext = withToolContext;
|
|
4
|
+
const with_aws_1 = require("../../lib/with-aws");
|
|
5
|
+
const with_packages_1 = require("../../lib/with-packages");
|
|
6
|
+
const with_temporary_directory_1 = require("../../lib/with-temporary-directory");
|
|
7
|
+
/**
|
|
8
|
+
* The default prerequisites for tests running tool integrations
|
|
9
|
+
*/
|
|
10
|
+
function withToolContext(block) {
|
|
11
|
+
return (0, with_aws_1.withAws)((0, with_temporary_directory_1.withTemporaryDirectory)((0, with_packages_1.withPackages)(block)));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC10b29sLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3aXRoLXRvb2wtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVNBLDBDQUlDO0FBWkQsaURBQXlEO0FBRXpELDJEQUF1RTtBQUN2RSxpRkFBdUc7QUFFdkc7O0dBRUc7QUFDSCxTQUFnQixlQUFlLENBQzdCLEtBQ2tCO0lBQ2xCLE9BQU8sSUFBQSxrQkFBTyxFQUFDLElBQUEsaURBQXNCLEVBQUMsSUFBQSw0QkFBWSxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVzdENvbnRleHQgfSBmcm9tICcuLi8uLi9saWIvaW50ZWctdGVzdCc7XG5pbXBvcnQgeyBBd3NDb250ZXh0LCB3aXRoQXdzIH0gZnJvbSAnLi4vLi4vbGliL3dpdGgtYXdzJztcbmltcG9ydCB7IERpc2FibGVCb290c3RyYXBDb250ZXh0IH0gZnJvbSAnLi4vLi4vbGliL3dpdGgtY2RrLWFwcCc7XG5pbXBvcnQgeyBQYWNrYWdlQ29udGV4dCwgd2l0aFBhY2thZ2VzIH0gZnJvbSAnLi4vLi4vbGliL3dpdGgtcGFja2FnZXMnO1xuaW1wb3J0IHsgVGVtcG9yYXJ5RGlyZWN0b3J5Q29udGV4dCwgd2l0aFRlbXBvcmFyeURpcmVjdG9yeSB9IGZyb20gJy4uLy4uL2xpYi93aXRoLXRlbXBvcmFyeS1kaXJlY3RvcnknO1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IHByZXJlcXVpc2l0ZXMgZm9yIHRlc3RzIHJ1bm5pbmcgdG9vbCBpbnRlZ3JhdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhUb29sQ29udGV4dDxBIGV4dGVuZHMgVGVzdENvbnRleHQ+KFxuICBibG9jazogKGNvbnRleHQ6IEEgJiBUZW1wb3JhcnlEaXJlY3RvcnlDb250ZXh0ICYgUGFja2FnZUNvbnRleHQgJiBBd3NDb250ZXh0ICYgRGlzYWJsZUJvb3RzdHJhcENvbnRleHRcbiAgKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gIHJldHVybiB3aXRoQXdzKHdpdGhUZW1wb3JhcnlEaXJlY3Rvcnkod2l0aFBhY2thZ2VzKGJsb2NrKSkpO1xufVxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TestContext } from '../../lib/integ-test';
|
|
2
|
+
import { AwsContext, withAws } from '../../lib/with-aws';
|
|
3
|
+
import { DisableBootstrapContext } from '../../lib/with-cdk-app';
|
|
4
|
+
import { PackageContext, withPackages } from '../../lib/with-packages';
|
|
5
|
+
import { TemporaryDirectoryContext, withTemporaryDirectory } from '../../lib/with-temporary-directory';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The default prerequisites for tests running tool integrations
|
|
9
|
+
*/
|
|
10
|
+
export function withToolContext<A extends TestContext>(
|
|
11
|
+
block: (context: A & TemporaryDirectoryContext & PackageContext & AwsContext & DisableBootstrapContext
|
|
12
|
+
) => Promise<void>) {
|
|
13
|
+
return withAws(withTemporaryDirectory(withPackages(block)));
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const lib_1 = require("../../lib");
|
|
4
|
+
jest.setTimeout(600000);
|
|
5
|
+
describe('uberpackage', () => {
|
|
6
|
+
(0, lib_1.integTest)('works with cloudformation-include', (0, lib_1.withMonolithicCfnIncludeCdkApp)(async (fixture) => {
|
|
7
|
+
fixture.log('Starting test of cfn-include with monolithic CDK');
|
|
8
|
+
await fixture.cdkSynth();
|
|
9
|
+
}));
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWJlcnBhY2thZ2UuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidWJlcnBhY2thZ2UuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBQXNFO0FBRXRFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTyxDQUFDLENBQUM7QUFFekIsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7SUFDM0IsSUFBQSxlQUFTLEVBQUMsbUNBQW1DLEVBQUUsSUFBQSxvQ0FBOEIsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBRWhFLE1BQU0sT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGludGVnVGVzdCwgd2l0aE1vbm9saXRoaWNDZm5JbmNsdWRlQ2RrQXBwIH0gZnJvbSAnLi4vLi4vbGliJztcblxuamVzdC5zZXRUaW1lb3V0KDYwMF8wMDApO1xuXG5kZXNjcmliZSgndWJlcnBhY2thZ2UnLCAoKSA9PiB7XG4gIGludGVnVGVzdCgnd29ya3Mgd2l0aCBjbG91ZGZvcm1hdGlvbi1pbmNsdWRlJywgd2l0aE1vbm9saXRoaWNDZm5JbmNsdWRlQ2RrQXBwKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgZml4dHVyZS5sb2coJ1N0YXJ0aW5nIHRlc3Qgb2YgY2ZuLWluY2x1ZGUgd2l0aCBtb25vbGl0aGljIENESycpO1xuXG4gICAgYXdhaXQgZml4dHVyZS5jZGtTeW50aCgpO1xuICB9KSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { integTest, withMonolithicCfnIncludeCdkApp } from '../../lib';
|
|
2
|
+
|
|
3
|
+
jest.setTimeout(600_000);
|
|
4
|
+
|
|
5
|
+
describe('uberpackage', () => {
|
|
6
|
+
integTest('works with cloudformation-include', withMonolithicCfnIncludeCdkApp(async (fixture) => {
|
|
7
|
+
fixture.log('Starting test of cfn-include with monolithic CDK');
|
|
8
|
+
|
|
9
|
+
await fixture.cdkSynth();
|
|
10
|
+
}));
|
|
11
|
+
});
|