@aws-cdk-testing/cli-integ 3.0.1 → 3.1.1
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/NOTICE +1 -1
- package/lib/aws.js +2 -2
- package/lib/aws.ts +1 -1
- package/lib/integ-test.js +37 -6
- package/lib/integ-test.ts +42 -5
- package/lib/shell.d.ts +5 -2
- package/lib/shell.js +16 -8
- package/lib/shell.ts +16 -9
- package/lib/with-cdk-app.d.ts +10 -2
- package/lib/with-cdk-app.js +17 -41
- package/lib/with-cdk-app.ts +27 -51
- package/lib/with-cli-lib.d.ts +2 -2
- package/lib/with-cli-lib.js +7 -1
- package/lib/with-cli-lib.ts +11 -3
- package/lib/with-sam.js +26 -21
- package/lib/with-sam.ts +23 -21
- package/package.json +7 -7
- package/resources/cdk-apps/app/app.js +3 -3
- package/resources/cdk-apps/rollback-test-app/app.js +1 -1
- package/resources/cdk-apps/sam_cdk_integ_app/lib/test-stack.js +3 -1
- package/resources/cdk-apps/sam_cdk_integ_app/src/docker/DockerImageFunctionConstruct/Dockerfile +2 -0
- package/resources/cli-regression-patches/v1.130.0/bootstrapping.integtest.js +1 -1
- package/tests/cli-integ-tests/bootstrapping.integtest.js +20 -1
- package/tests/cli-integ-tests/bootstrapping.integtest.ts +25 -0
- package/tests/cli-integ-tests/cli.integtest.js +57 -2
- package/tests/cli-integ-tests/cli.integtest.ts +64 -2
- package/tests/init-go/init-go.integtest.js +7 -2
- package/tests/init-go/init-go.integtest.ts +6 -1
- package/tests/init-typescript-app/init-typescript-app.integtest.js +3 -3
- package/tests/init-typescript-app/init-typescript-app.integtest.ts +4 -3
- package/tests/uberpackage/uberpackage.integtest.js +2 -2
- package/tests/uberpackage/uberpackage.integtest.ts +2 -2
- package/bin/query-github.ts +0 -56
- package/bin/run-suite.ts +0 -140
- package/bin/stage-distribution.ts +0 -267
- package/bin/test-root.ts +0 -3
|
@@ -363,7 +363,8 @@ integTest('doubly nested stack',
|
|
|
363
363
|
await fixture.cdkDeploy('with-doubly-nested-stack', {
|
|
364
364
|
captureStderr: false,
|
|
365
365
|
});
|
|
366
|
-
})
|
|
366
|
+
}),
|
|
367
|
+
);
|
|
367
368
|
|
|
368
369
|
integTest(
|
|
369
370
|
'nested stack with parameters',
|
|
@@ -406,7 +407,7 @@ integTest(
|
|
|
406
407
|
);
|
|
407
408
|
expect(response.Stacks?.[0].StackStatus).toEqual('REVIEW_IN_PROGRESS');
|
|
408
409
|
|
|
409
|
-
//verify a change set was created with the provided name
|
|
410
|
+
// verify a change set was created with the provided name
|
|
410
411
|
const changeSetResponse = await fixture.aws.cloudFormation.send(
|
|
411
412
|
new ListChangeSetsCommand({
|
|
412
413
|
StackName: stackArn,
|
|
@@ -487,6 +488,65 @@ integTest(
|
|
|
487
488
|
}),
|
|
488
489
|
);
|
|
489
490
|
|
|
491
|
+
integTest('deploy with import-existing-resources true', withDefaultFixture(async (fixture) => {
|
|
492
|
+
const stackArn = await fixture.cdkDeploy('test-2', {
|
|
493
|
+
options: ['--no-execute', '--import-existing-resources'],
|
|
494
|
+
captureStderr: false,
|
|
495
|
+
});
|
|
496
|
+
// verify that we only deployed a single stack (there's a single ARN in the output)
|
|
497
|
+
expect(stackArn.split('\n').length).toEqual(1);
|
|
498
|
+
|
|
499
|
+
const response = await fixture.aws.cloudFormation.send(new DescribeStacksCommand({
|
|
500
|
+
StackName: stackArn,
|
|
501
|
+
}));
|
|
502
|
+
expect(response.Stacks?.[0].StackStatus).toEqual('REVIEW_IN_PROGRESS');
|
|
503
|
+
|
|
504
|
+
// verify a change set was successfully created
|
|
505
|
+
// Here, we do not test whether a resource is actually imported, because that is a CloudFormation feature, not a CDK feature.
|
|
506
|
+
const changeSetResponse = await fixture.aws.cloudFormation.send(new ListChangeSetsCommand({
|
|
507
|
+
StackName: stackArn,
|
|
508
|
+
}));
|
|
509
|
+
const changeSets = changeSetResponse.Summaries || [];
|
|
510
|
+
expect(changeSets.length).toEqual(1);
|
|
511
|
+
expect(changeSets[0].Status).toEqual('CREATE_COMPLETE');
|
|
512
|
+
expect(changeSets[0].ImportExistingResources).toEqual(true);
|
|
513
|
+
}));
|
|
514
|
+
|
|
515
|
+
integTest('deploy without import-existing-resources', withDefaultFixture(async (fixture) => {
|
|
516
|
+
const stackArn = await fixture.cdkDeploy('test-2', {
|
|
517
|
+
options: ['--no-execute'],
|
|
518
|
+
captureStderr: false,
|
|
519
|
+
});
|
|
520
|
+
// verify that we only deployed a single stack (there's a single ARN in the output)
|
|
521
|
+
expect(stackArn.split('\n').length).toEqual(1);
|
|
522
|
+
|
|
523
|
+
const response = await fixture.aws.cloudFormation.send(new DescribeStacksCommand({
|
|
524
|
+
StackName: stackArn,
|
|
525
|
+
}));
|
|
526
|
+
expect(response.Stacks?.[0].StackStatus).toEqual('REVIEW_IN_PROGRESS');
|
|
527
|
+
|
|
528
|
+
// verify a change set was successfully created and ImportExistingResources = false
|
|
529
|
+
const changeSetResponse = await fixture.aws.cloudFormation.send(new ListChangeSetsCommand({
|
|
530
|
+
StackName: stackArn,
|
|
531
|
+
}));
|
|
532
|
+
const changeSets = changeSetResponse.Summaries || [];
|
|
533
|
+
expect(changeSets.length).toEqual(1);
|
|
534
|
+
expect(changeSets[0].Status).toEqual('CREATE_COMPLETE');
|
|
535
|
+
expect(changeSets[0].ImportExistingResources).toEqual(false);
|
|
536
|
+
}));
|
|
537
|
+
|
|
538
|
+
integTest('deploy with method=direct and import-existing-resources fails', withDefaultFixture(async (fixture) => {
|
|
539
|
+
const stackName = 'iam-test';
|
|
540
|
+
await expect(fixture.cdkDeploy(stackName, {
|
|
541
|
+
options: ['--import-existing-resources', '--method=direct'],
|
|
542
|
+
})).rejects.toThrow('exited with error');
|
|
543
|
+
|
|
544
|
+
// Ensure stack was not deployed
|
|
545
|
+
await expect(fixture.aws.cloudFormation.send(new DescribeStacksCommand({
|
|
546
|
+
StackName: fixture.fullStackName(stackName),
|
|
547
|
+
}))).rejects.toThrow('does not exist');
|
|
548
|
+
}));
|
|
549
|
+
|
|
490
550
|
integTest(
|
|
491
551
|
'update to stack in ROLLBACK_COMPLETE state will delete stack and create a new one',
|
|
492
552
|
withDefaultFixture(async (fixture) => {
|
|
@@ -2488,6 +2548,8 @@ integTest(
|
|
|
2488
2548
|
// THEN
|
|
2489
2549
|
const expectedSubstring = 'Resource is not in the expected state due to waiter status: TIMEOUT';
|
|
2490
2550
|
expect(deployOutput).toContain(expectedSubstring);
|
|
2551
|
+
expect(deployOutput).toContain('Observed responses:');
|
|
2552
|
+
expect(deployOutput).toContain('200: OK');
|
|
2491
2553
|
expect(deployOutput).not.toContain('hotswapped!');
|
|
2492
2554
|
}),
|
|
2493
2555
|
);
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const lib_1 = require("../../lib");
|
|
4
4
|
['app', 'sample-app'].forEach(template => {
|
|
5
5
|
(0, lib_1.integTest)(`init go ${template}`, (0, lib_1.withTemporaryDirectory)((0, lib_1.withPackages)(async (context) => {
|
|
6
|
+
var _a;
|
|
6
7
|
const isCanary = !!process.env.IS_CANARY;
|
|
7
8
|
context.packages.assertJsiiPackagesAvailable();
|
|
8
9
|
const shell = lib_1.ShellHelper.fromContext(context);
|
|
@@ -11,11 +12,15 @@ const lib_1 = require("../../lib");
|
|
|
11
12
|
// Canaries will use the generated go.mod as is
|
|
12
13
|
// For pipeline tests we replace the source with the locally build one
|
|
13
14
|
if (!isCanary) {
|
|
14
|
-
|
|
15
|
+
const dir = (_a = process.env.CODEBUILD_SRC_DIR) !== null && _a !== void 0 ? _a : process.env.GITHUB_WORKSPACE;
|
|
16
|
+
if (!dir) {
|
|
17
|
+
throw new Error('Cannot figure out CI system root directory');
|
|
18
|
+
}
|
|
19
|
+
await shell.shell(['go', 'mod', 'edit', '-replace', `github.com/aws/aws-cdk-go/awscdk/v2=${dir}/go/awscdk`]);
|
|
15
20
|
}
|
|
16
21
|
await shell.shell(['go', 'mod', 'tidy']);
|
|
17
22
|
await shell.shell(['go', 'test']);
|
|
18
23
|
await shell.shell(['cdk', 'synth']);
|
|
19
24
|
})));
|
|
20
25
|
});
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC1nby5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbml0LWdvLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUF5RjtBQUV6RixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDdkMsSUFBQSxlQUFTLEVBQUMsV0FBVyxRQUFRLEVBQUUsRUFBRSxJQUFBLDRCQUFzQixFQUFDLElBQUEsa0JBQVksRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7O1FBQ3JGLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUN6QyxPQUFPLENBQUMsUUFBUSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFFL0MsTUFBTSxLQUFLLEdBQUcsaUJBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFMUMsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFekQsK0NBQStDO1FBQy9DLHNFQUFzRTtRQUN0RSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLEdBQUcsR0FBRyxNQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLG1DQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7WUFDMUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUNoRSxDQUFDO1lBRUQsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLHVDQUF1QyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDL0csQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNsQyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGludGVnVGVzdCwgd2l0aFRlbXBvcmFyeURpcmVjdG9yeSwgU2hlbGxIZWxwZXIsIHdpdGhQYWNrYWdlcyB9IGZyb20gJy4uLy4uL2xpYic7XG5cblsnYXBwJywgJ3NhbXBsZS1hcHAnXS5mb3JFYWNoKHRlbXBsYXRlID0+IHtcbiAgaW50ZWdUZXN0KGBpbml0IGdvICR7dGVtcGxhdGV9YCwgd2l0aFRlbXBvcmFyeURpcmVjdG9yeSh3aXRoUGFja2FnZXMoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICBjb25zdCBpc0NhbmFyeSA9ICEhcHJvY2Vzcy5lbnYuSVNfQ0FOQVJZO1xuICAgIGNvbnRleHQucGFja2FnZXMuYXNzZXJ0SnNpaVBhY2thZ2VzQXZhaWxhYmxlKCk7XG5cbiAgICBjb25zdCBzaGVsbCA9IFNoZWxsSGVscGVyLmZyb21Db250ZXh0KGNvbnRleHQpO1xuICAgIGF3YWl0IGNvbnRleHQucGFja2FnZXMubWFrZUNsaUF2YWlsYWJsZSgpO1xuXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydjZGsnLCAnaW5pdCcsICctbCcsICdnbycsIHRlbXBsYXRlXSk7XG5cbiAgICAvLyBDYW5hcmllcyB3aWxsIHVzZSB0aGUgZ2VuZXJhdGVkIGdvLm1vZCBhcyBpc1xuICAgIC8vIEZvciBwaXBlbGluZSB0ZXN0cyB3ZSByZXBsYWNlIHRoZSBzb3VyY2Ugd2l0aCB0aGUgbG9jYWxseSBidWlsZCBvbmVcbiAgICBpZiAoIWlzQ2FuYXJ5KSB7XG4gICAgICBjb25zdCBkaXIgPSBwcm9jZXNzLmVudi5DT0RFQlVJTERfU1JDX0RJUiA/PyBwcm9jZXNzLmVudi5HSVRIVUJfV09SS1NQQUNFO1xuICAgICAgaWYgKCFkaXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZmlndXJlIG91dCBDSSBzeXN0ZW0gcm9vdCBkaXJlY3RvcnknKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgc2hlbGwuc2hlbGwoWydnbycsICdtb2QnLCAnZWRpdCcsICctcmVwbGFjZScsIGBnaXRodWIuY29tL2F3cy9hd3MtY2RrLWdvL2F3c2Nkay92Mj0ke2Rpcn0vZ28vYXdzY2RrYF0pO1xuICAgIH1cblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnZ28nLCAnbW9kJywgJ3RpZHknXSk7XG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydnbycsICd0ZXN0J10pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnY2RrJywgJ3N5bnRoJ10pO1xuICB9KSkpO1xufSk7XG4iXX0=
|
|
@@ -13,7 +13,12 @@ import { integTest, withTemporaryDirectory, ShellHelper, withPackages } from '..
|
|
|
13
13
|
// Canaries will use the generated go.mod as is
|
|
14
14
|
// For pipeline tests we replace the source with the locally build one
|
|
15
15
|
if (!isCanary) {
|
|
16
|
-
|
|
16
|
+
const dir = process.env.CODEBUILD_SRC_DIR ?? process.env.GITHUB_WORKSPACE;
|
|
17
|
+
if (!dir) {
|
|
18
|
+
throw new Error('Cannot figure out CI system root directory');
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
await shell.shell(['go', 'mod', 'edit', '-replace', `github.com/aws/aws-cdk-go/awscdk/v2=${dir}/go/awscdk`]);
|
|
17
22
|
}
|
|
18
23
|
|
|
19
24
|
await shell.shell(['go', 'mod', 'tidy']);
|
|
@@ -19,8 +19,6 @@ const npm_1 = require("../../lib/npm");
|
|
|
19
19
|
// Same as https://github.com/DefinitelyTyped/DefinitelyTyped?tab=readme-ov-file#support-window
|
|
20
20
|
const TYPESCRIPT_VERSION_AGE_DAYS = 2 * 365;
|
|
21
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
22
|
/**
|
|
25
23
|
* Test our generated code with various versions of TypeScript
|
|
26
24
|
*/
|
|
@@ -35,6 +33,8 @@ TYPESCRIPT_VERSIONS.forEach(tsVersion => {
|
|
|
35
33
|
// still want to test with older versions as well.
|
|
36
34
|
await removeDevDependencies(context);
|
|
37
35
|
await shell.shell(['npm', 'install', '--save-dev', `typescript@${tsVersion}`]);
|
|
36
|
+
// After we've removed devDependencies we need to re-install ts-node because it's necessary for `cdk synth`
|
|
37
|
+
await shell.shell(['npm', 'install', '--save-dev', `ts-node@^10`]);
|
|
38
38
|
await shell.shell(['npm', 'install']); // Older versions of npm require this to be a separate step from the one above
|
|
39
39
|
await shell.shell(['npx', 'tsc', '--version']);
|
|
40
40
|
await shell.shell(['npm', 'prune']);
|
|
@@ -51,4 +51,4 @@ async function removeDevDependencies(context) {
|
|
|
51
51
|
delete pj.devDependencies;
|
|
52
52
|
await fs_1.promises.writeFile(filename, JSON.stringify(pj, undefined, 2), { encoding: 'utf-8' });
|
|
53
53
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC10eXBlc2NyaXB0LWFwcC5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbml0LXR5cGVzY3JpcHQtYXBwLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJCQUFvQztBQUNwQyw2QkFBNkI7QUFDN0IsbUNBQW9IO0FBQ3BILHVDQUE4RjtBQUU5RixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDdkMsSUFBQSxlQUFTLEVBQUMsbUJBQW1CLFFBQVEsRUFBRSxFQUFFLElBQUEsNEJBQXNCLEVBQUMsSUFBQSxrQkFBWSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUM3RixNQUFNLEtBQUssR0FBRyxpQkFBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxNQUFNLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUUxQyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUVqRSxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNwQyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9EQUFvRDtRQUN0RixNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxP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MUIsTUFBTSxhQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUN4RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoVGVtcG9yYXJ5RGlyZWN0b3J5LCBTaGVsbEhlbHBlciwgd2l0aFBhY2thZ2VzLCBUZW1wb3JhcnlEaXJlY3RvcnlDb250ZXh0IH0gZnJvbSAnLi4vLi4vbGliJztcbmltcG9ydCB7IHR5cGVzY3JpcHRWZXJzaW9uc1N5bmMsIHR5cGVzY3JpcHRWZXJzaW9uc1lvdW5nZXJUaGFuRGF5c1N5bmMgfSBmcm9tICcuLi8uLi9saWIvbnBtJztcblxuWydhcHAnLCAnc2FtcGxlLWFwcCddLmZvckVhY2godGVtcGxhdGUgPT4ge1xuICBpbnRlZ1Rlc3QoYHR5cGVzY3JpcHQgaW5pdCAke3RlbXBsYXRlfWAsIHdpdGhUZW1wb3JhcnlEaXJlY3Rvcnkod2l0aFBhY2thZ2VzKGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgY29uc3Qgc2hlbGwgPSBTaGVsbEhlbHBlci5mcm9tQ29udGV4dChjb250ZXh0KTtcbiAgICBhd2FpdCBjb250ZXh0LnBhY2thZ2VzLm1ha2VDbGlBdmFpbGFibGUoKTtcblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnY2RrJywgJ2luaXQnLCAnLWwnLCAndHlwZXNjcmlwdCcsIHRlbXBsYXRlXSk7XG5cbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdwcnVuZSddKTtcbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdscyddKTsgLy8gdGhpcyB3aWxsIGZhaWwgaWYgd2UgaGF2ZSB1bm1ldCBwZWVyIGRlcGVuZGVuY2llc1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ3J1bicsICdidWlsZCddKTtcbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdydW4nLCAndGVzdCddKTtcblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnY2RrJywgJ3N5bnRoJ10pO1xuICB9KSkpO1xufSk7XG5cbi8vIFNhbWUgYXMgaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQ/dGFiPXJlYWRtZS1vdi1maWxlI3N1cHBvcnQtd2luZG93XG5jb25zdCBUWVBFU0NSSVBUX1ZFUlNJT05fQUdFX0RBWVMgPSAyICogMzY1O1xuXG5jb25zdCBUWVBFU0NSSVBUX1ZFUlNJT05TID0gdHlwZXNjcmlwdFZlcnNpb25zWW91bmdlclRoYW5EYXlzU3luYyhUWVBFU0NSSVBUX1ZFUlNJT05fQUdFX0RBWVMsIHR5cGVzY3JpcHRWZXJzaW9uc1N5bmMoKSk7XG5cbi8qKlxuICogVGVzdCBvdXIgZ2VuZXJhdGVkIGNvZGUgd2l0aCB2YXJpb3VzIHZlcnNpb25zIG9mIFR5cGVTY3JpcHRcbiAqL1xuVFlQRVNDUklQVF9WRVJTSU9OUy5mb3JFYWNoKHRzVmVyc2lvbiA9PiB7XG4gIGludGVnVGVzdChgdHlwZXNjcmlwdCAke3RzVmVyc2lvbn0gaW5pdCBhcHBgLCB3aXRoVGVtcG9yYXJ5RGlyZWN0b3J5KHdpdGhQYWNrYWdlcyhhc3luYyAoY29udGV4dCkgPT4ge1xuICAgIGNvbnN0IHNoZWxsID0gU2hlbGxIZWxwZXIuZnJvbUNvbnRleHQoY29udGV4dCk7XG4gICAgYXdhaXQgY29udGV4dC5wYWNrYWdlcy5tYWtlQ2xpQXZhaWxhYmxlKCk7XG5cbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25vZGUnLCAnLS12ZXJzaW9uJ10pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJy0tdmVyc2lvbiddKTtcblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnY2RrJywgJ2luaXQnLCAnLWwnLCAndHlwZXNjcmlwdCcsICdhcHAnLCAnLS1nZW5lcmF0ZS1vbmx5J10pO1xuXG4gICAgLy8gTmVjZXNzYXJ5IGJlY2F1c2UgcmVjZW50IHZlcnNpb25zIG9mIHRzLWplc3QgcmVxdWlyZSBUeXBlU2NyaXB0Pj00LjMgYnV0IHdlXG4gICAgLy8gc3RpbGwgd2FudCB0byB0ZXN0IHdpdGggb2xkZXIgdmVyc2lvbnMgYXMgd2VsbC5cbiAgICBhd2FpdCByZW1vdmVEZXZEZXBlbmRlbmNpZXMoY29udGV4dCk7XG5cbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdpbnN0YWxsJywgJy0tc2F2ZS1kZXYnLCBgdHlwZXNjcmlwdEAke3RzVmVyc2lvbn1gXSk7XG5cbiAgICAvLyBBZnRlciB3ZSd2ZSByZW1vdmVkIGRldkRlcGVuZGVuY2llcyB3ZSBuZWVkIHRvIHJlLWluc3RhbGwgdHMtbm9kZSBiZWNhdXNlIGl0J3MgbmVjZXNzYXJ5IGZvciBgY2RrIHN5bnRoYFxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ2luc3RhbGwnLCAnLS1zYXZlLWRldicsIGB0cy1ub2RlQF4xMGBdKTtcblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ2luc3RhbGwnXSk7IC8vIE9sZGVyIHZlcnNpb25zIG9mIG5wbSByZXF1aXJlIHRoaXMgdG8gYmUgYSBzZXBhcmF0ZSBzdGVwIGZyb20gdGhlIG9uZSBhYm92ZVxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnB4JywgJ3RzYycsICctLXZlcnNpb24nXSk7XG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAncHJ1bmUnXSk7XG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAnbHMnXSk7IC8vIHRoaXMgd2lsbCBmYWlsIGlmIHdlIGhhdmUgdW5tZXQgcGVlciBkZXBlbmRlbmNpZXNcblxuICAgIC8vIFdlIGp1c3QgcmVtb3ZlZCB0aGUgJ2plc3QnIGRlcGVuZGVuY3kgc28gcmVtb3ZlIHRoZSB0ZXN0cyBhcyB3ZWxsIGJlY2F1c2UgdGhleSB3b24ndCBjb21waWxlXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydybScsICctcmYnLCAndGVzdC8nXSk7XG5cbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdydW4nLCAnYnVpbGQnXSk7XG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydjZGsnLCAnc3ludGgnXSk7XG4gIH0pKSk7XG59KTtcblxuYXN5bmMgZnVuY3Rpb24gcmVtb3ZlRGV2RGVwZW5kZW5jaWVzKGNvbnRleHQ6IFRlbXBvcmFyeURpcmVjdG9yeUNvbnRleHQpIHtcbiAgY29uc3QgZmlsZW5hbWUgPSBwYXRoLmpvaW4oY29udGV4dC5pbnRlZ1Rlc3REaXIsICdwYWNrYWdlLmpzb24nKTtcbiAgY29uc3QgcGogPSBKU09OLnBhcnNlKGF3YWl0IGZzLnJlYWRGaWxlKGZpbGVuYW1lLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pKTtcbiAgZGVsZXRlIHBqLmRldkRlcGVuZGVuY2llcztcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGZpbGVuYW1lLCBKU09OLnN0cmluZ2lmeShwaiwgdW5kZWZpbmVkLCAyKSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbn1cbiJdfQ==
|
|
@@ -24,9 +24,6 @@ const TYPESCRIPT_VERSION_AGE_DAYS = 2 * 365;
|
|
|
24
24
|
|
|
25
25
|
const TYPESCRIPT_VERSIONS = typescriptVersionsYoungerThanDaysSync(TYPESCRIPT_VERSION_AGE_DAYS, typescriptVersionsSync());
|
|
26
26
|
|
|
27
|
-
// eslint-disable-next-line no-console
|
|
28
|
-
console.log(TYPESCRIPT_VERSIONS);
|
|
29
|
-
|
|
30
27
|
/**
|
|
31
28
|
* Test our generated code with various versions of TypeScript
|
|
32
29
|
*/
|
|
@@ -45,6 +42,10 @@ TYPESCRIPT_VERSIONS.forEach(tsVersion => {
|
|
|
45
42
|
await removeDevDependencies(context);
|
|
46
43
|
|
|
47
44
|
await shell.shell(['npm', 'install', '--save-dev', `typescript@${tsVersion}`]);
|
|
45
|
+
|
|
46
|
+
// After we've removed devDependencies we need to re-install ts-node because it's necessary for `cdk synth`
|
|
47
|
+
await shell.shell(['npm', 'install', '--save-dev', `ts-node@^10`]);
|
|
48
|
+
|
|
48
49
|
await shell.shell(['npm', 'install']); // Older versions of npm require this to be a separate step from the one above
|
|
49
50
|
await shell.shell(['npx', 'tsc', '--version']);
|
|
50
51
|
await shell.shell(['npm', 'prune']);
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const lib_1 = require("../../lib");
|
|
4
4
|
jest.setTimeout(600000);
|
|
5
5
|
describe('uberpackage', () => {
|
|
6
|
-
(0, lib_1.integTest)('works with cloudformation-include', (0, lib_1.
|
|
6
|
+
(0, lib_1.integTest)('works with cloudformation-include', (0, lib_1.withSpecificFixture)('cfn-include-app', async (fixture) => {
|
|
7
7
|
fixture.log('Starting test of cfn-include with monolithic CDK');
|
|
8
8
|
await fixture.cdkSynth();
|
|
9
9
|
}));
|
|
10
10
|
});
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWJlcnBhY2thZ2UuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidWJlcnBhY2thZ2UuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBQTJEO0FBRTNELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTyxDQUFDLENBQUM7QUFFekIsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7SUFDM0IsSUFBQSxlQUFTLEVBQUMsbUNBQW1DLEVBQUUsSUFBQSx5QkFBbUIsRUFBQyxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDdEcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBRWhFLE1BQU0sT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGludGVnVGVzdCwgd2l0aFNwZWNpZmljRml4dHVyZSB9IGZyb20gJy4uLy4uL2xpYic7XG5cbmplc3Quc2V0VGltZW91dCg2MDBfMDAwKTtcblxuZGVzY3JpYmUoJ3ViZXJwYWNrYWdlJywgKCkgPT4ge1xuICBpbnRlZ1Rlc3QoJ3dvcmtzIHdpdGggY2xvdWRmb3JtYXRpb24taW5jbHVkZScsIHdpdGhTcGVjaWZpY0ZpeHR1cmUoJ2Nmbi1pbmNsdWRlLWFwcCcsIGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgZml4dHVyZS5sb2coJ1N0YXJ0aW5nIHRlc3Qgb2YgY2ZuLWluY2x1ZGUgd2l0aCBtb25vbGl0aGljIENESycpO1xuXG4gICAgYXdhaXQgZml4dHVyZS5jZGtTeW50aCgpO1xuICB9KSk7XG59KTtcbiJdfQ==
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { integTest,
|
|
1
|
+
import { integTest, withSpecificFixture } from '../../lib';
|
|
2
2
|
|
|
3
3
|
jest.setTimeout(600_000);
|
|
4
4
|
|
|
5
5
|
describe('uberpackage', () => {
|
|
6
|
-
integTest('works with cloudformation-include',
|
|
6
|
+
integTest('works with cloudformation-include', withSpecificFixture('cfn-include-app', async (fixture) => {
|
|
7
7
|
fixture.log('Starting test of cfn-include with monolithic CDK');
|
|
8
8
|
|
|
9
9
|
await fixture.cdkSynth();
|
package/bin/query-github.ts
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import * as yargs from 'yargs';
|
|
2
|
-
import { fetchPreviousVersion } from '../lib/github';
|
|
3
|
-
|
|
4
|
-
async function main() {
|
|
5
|
-
const args = await yargs
|
|
6
|
-
.option('token', {
|
|
7
|
-
descripton: 'GitHub token (default: from environment GITHUB_TOKEN)',
|
|
8
|
-
alias: 't',
|
|
9
|
-
type: 'string',
|
|
10
|
-
requiresArg: true,
|
|
11
|
-
})
|
|
12
|
-
.command('last-release', 'Query the last release', cmd => cmd
|
|
13
|
-
.option('prior-to', {
|
|
14
|
-
description: 'Return the most recent release before the given version',
|
|
15
|
-
alias: 'p',
|
|
16
|
-
type: 'string',
|
|
17
|
-
requiresArg: true,
|
|
18
|
-
})
|
|
19
|
-
.option('major', {
|
|
20
|
-
description: 'Return the most recent release that matches',
|
|
21
|
-
alias: 'm',
|
|
22
|
-
type: 'string',
|
|
23
|
-
requiresArg: true,
|
|
24
|
-
}))
|
|
25
|
-
.demandCommand()
|
|
26
|
-
.help()
|
|
27
|
-
.showHelpOnFail(false)
|
|
28
|
-
.argv;
|
|
29
|
-
|
|
30
|
-
const command = args._[0];
|
|
31
|
-
|
|
32
|
-
const token = args.token ?? process.env.GITHUB_TOKEN;
|
|
33
|
-
if (!token) {
|
|
34
|
-
throw new Error('Either pass --token or set GITHUB_TOKEN.');
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
switch (command) {
|
|
38
|
-
case 'last-release':
|
|
39
|
-
if (args['prior-to'] && args.major) {
|
|
40
|
-
throw new Error('Cannot pass both `--prior-to and --major at the same time');
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// eslint-disable-next-line no-console
|
|
44
|
-
console.log(await fetchPreviousVersion(token, {
|
|
45
|
-
priorTo: args['prior-to'],
|
|
46
|
-
majorVersion: args.major,
|
|
47
|
-
}));
|
|
48
|
-
break;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
main().catch(e => {
|
|
53
|
-
// eslint-disable-next-line no-console
|
|
54
|
-
console.error(e);
|
|
55
|
-
process.exitCode = 1;
|
|
56
|
-
});
|
package/bin/run-suite.ts
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-console */
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import * as jest from 'jest';
|
|
4
|
-
import * as yargs from 'yargs';
|
|
5
|
-
import { ReleasePackageSourceSetup } from '../lib/package-sources/release-source';
|
|
6
|
-
import { RepoPackageSourceSetup, autoFindRoot } from '../lib/package-sources/repo-source';
|
|
7
|
-
import { IPackageSourceSetup } from '../lib/package-sources/source';
|
|
8
|
-
import { serializeForSubprocess } from '../lib/package-sources/subprocess';
|
|
9
|
-
|
|
10
|
-
async function main() {
|
|
11
|
-
const args = await yargs
|
|
12
|
-
.usage('$0 <SUITENAME>')
|
|
13
|
-
.positional('SUITENAME', {
|
|
14
|
-
descripton: 'Name of the test suite to run',
|
|
15
|
-
type: 'string',
|
|
16
|
-
demandOption: true,
|
|
17
|
-
})
|
|
18
|
-
.option('test', {
|
|
19
|
-
descripton: 'Test pattern to selectively run tests',
|
|
20
|
-
alias: 't',
|
|
21
|
-
type: 'string',
|
|
22
|
-
requiresArg: true,
|
|
23
|
-
})
|
|
24
|
-
.option('test-file', {
|
|
25
|
-
description: 'The specific test file to run',
|
|
26
|
-
type: 'string',
|
|
27
|
-
requiresArg: true,
|
|
28
|
-
})
|
|
29
|
-
.option('use-source', {
|
|
30
|
-
descripton: 'Use TypeScript packages from the given source repository (or "auto")',
|
|
31
|
-
alias: 's',
|
|
32
|
-
type: 'string',
|
|
33
|
-
requiresArg: true,
|
|
34
|
-
})
|
|
35
|
-
.option('use-cli-release', {
|
|
36
|
-
descripton: 'Run the current tests against the CLI at the given version',
|
|
37
|
-
alias: 'u',
|
|
38
|
-
type: 'string',
|
|
39
|
-
requiresArg: true,
|
|
40
|
-
})
|
|
41
|
-
.option('auto-source', {
|
|
42
|
-
alias: 'a',
|
|
43
|
-
description: 'Automatically find the source tree from the current working directory',
|
|
44
|
-
type: 'boolean',
|
|
45
|
-
requiresArg: false,
|
|
46
|
-
})
|
|
47
|
-
.option('runInBand', {
|
|
48
|
-
descripton: 'Run all tests in one Node process',
|
|
49
|
-
alias: 'i',
|
|
50
|
-
type: 'boolean',
|
|
51
|
-
})
|
|
52
|
-
.options('framework-version', {
|
|
53
|
-
description: 'Framework version to use, if different than the CLI version (not all suites respect this)',
|
|
54
|
-
alias: 'f',
|
|
55
|
-
type: 'string',
|
|
56
|
-
})
|
|
57
|
-
.options('verbose', {
|
|
58
|
-
alias: 'v',
|
|
59
|
-
description: 'Run in verbose mode',
|
|
60
|
-
type: 'boolean',
|
|
61
|
-
requiresArg: false,
|
|
62
|
-
})
|
|
63
|
-
.options('passWithNoTests', {
|
|
64
|
-
description: 'Allow passing if the test suite is not found (default true when IS_CANARY mode, false otherwise)',
|
|
65
|
-
type: 'boolean',
|
|
66
|
-
requiresArg: false,
|
|
67
|
-
})
|
|
68
|
-
.help()
|
|
69
|
-
.showHelpOnFail(false)
|
|
70
|
-
.argv;
|
|
71
|
-
|
|
72
|
-
const suiteName = args._[0] as string;
|
|
73
|
-
if (!suiteName) {
|
|
74
|
-
throw new Error('Usage: run-suite <SUITENAME>');
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
let packageSource: undefined | IPackageSourceSetup;
|
|
78
|
-
function usePackageSource(s: IPackageSourceSetup) {
|
|
79
|
-
if (packageSource) {
|
|
80
|
-
throw new Error('Cannot specify two package sources');
|
|
81
|
-
}
|
|
82
|
-
packageSource = s;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
if (args['use-source'] || args['auto-source']) {
|
|
86
|
-
if (args['framework-version']) {
|
|
87
|
-
throw new Error('Cannot use --framework-version with --use-source');
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const root = args['use-source'] && args['use-source'] !== 'auto'
|
|
91
|
-
? args['use-source']
|
|
92
|
-
: await autoFindRoot();
|
|
93
|
-
|
|
94
|
-
usePackageSource(new RepoPackageSourceSetup(root));
|
|
95
|
-
} else if (args['use-cli-release']) {
|
|
96
|
-
usePackageSource(new ReleasePackageSourceSetup(args['use-cli-release'], args['framework-version']));
|
|
97
|
-
}
|
|
98
|
-
if (!packageSource) {
|
|
99
|
-
throw new Error('Specify either --use-source or --use-cli-release');
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
console.log(`Package source: ${packageSource.description}`);
|
|
103
|
-
console.log(`Test suite: ${suiteName}`);
|
|
104
|
-
|
|
105
|
-
await packageSource.prepare();
|
|
106
|
-
serializeForSubprocess(packageSource);
|
|
107
|
-
|
|
108
|
-
if (args.verbose) {
|
|
109
|
-
process.env.VERBOSE = '1';
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// Motivation behind this behavior: when adding a new test suite to the pipeline, because of the way our
|
|
113
|
-
// Pipeline package works, the suite would be added to the pipeline AND as a canary immediately. The canary
|
|
114
|
-
// would fail until the package was actually released, so for canaries we make an exception so that the initial
|
|
115
|
-
// canary would succeed even if the suite wasn't yet available. The fact that the suite is not optional in
|
|
116
|
-
// the pipeline protects us from typos.
|
|
117
|
-
const passWithNoTests = args.passWithNoTests ?? !!process.env.IS_CANARY;
|
|
118
|
-
|
|
119
|
-
// Communicate with the config file (integ.jest.config.js)
|
|
120
|
-
process.env.TEST_SUITE_NAME = suiteName;
|
|
121
|
-
|
|
122
|
-
try {
|
|
123
|
-
await jest.run([
|
|
124
|
-
...args.runInBand ? ['-i'] : [],
|
|
125
|
-
...args.test ? ['-t', args.test] : [],
|
|
126
|
-
...args.verbose ? ['--verbose'] : [],
|
|
127
|
-
...passWithNoTests ? ['--passWithNoTests'] : [],
|
|
128
|
-
...args['test-file'] ? [args['test-file']] : [],
|
|
129
|
-
], path.resolve(__dirname, '..', 'resources', 'integ.jest.config.js'));
|
|
130
|
-
|
|
131
|
-
} finally {
|
|
132
|
-
await packageSource.cleanup();
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
main().catch(e => {
|
|
137
|
-
// eslint-disable-next-line no-console
|
|
138
|
-
console.error(e);
|
|
139
|
-
process.exitCode = 1;
|
|
140
|
-
});
|