aws-delivlib 13.4.4 → 13.4.8

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.
Files changed (72) hide show
  1. package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/create-release.js +0 -0
  2. package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/package-lock.json +100 -95
  3. package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/package.json +0 -0
  4. package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/publish.sh +0 -0
  5. package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/sign-files.sh +0 -0
  6. package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/with-signing-key.sh +0 -0
  7. package/cdk.out/{asset.dc2e98009b027861f34e56eebb81faa5a3951ed9da80ce4a903a45de04268238 → asset.3044256b9586ecb8a7709713aaca30ceb34f699e3f93c8858f633aaf2f0c7140}/index.js +17 -11
  8. package/cdk.out/delivlib-test.assets.json +8 -8
  9. package/cdk.out/delivlib-test.template.json +2 -2
  10. package/cdk.out/manifest.json +154 -154
  11. package/cdk.out/tree.json +412 -412
  12. package/lib/custom-resource-handlers/src/certificate-signing-request.tsbuildinfo +1 -1
  13. package/lib/custom-resource-handlers/src/pgp-secret.tsbuildinfo +1 -1
  14. package/lib/custom-resource-handlers/src/private-key.tsbuildinfo +1 -1
  15. package/lib/publishing/github/package-lock.json +100 -95
  16. package/package.json +17 -18
  17. package/lib/__tests__/auto-build.test.d.ts +0 -1
  18. package/lib/__tests__/auto-build.test.js +0 -119
  19. package/lib/__tests__/build-spec.test.d.ts +0 -1
  20. package/lib/__tests__/build-spec.test.js +0 -82
  21. package/lib/__tests__/bump.test.d.ts +0 -1
  22. package/lib/__tests__/bump.test.js +0 -284
  23. package/lib/__tests__/canary.test.d.ts +0 -1
  24. package/lib/__tests__/canary.test.js +0 -144
  25. package/lib/__tests__/change-control-lambda/disable-transition.test.d.ts +0 -1
  26. package/lib/__tests__/change-control-lambda/disable-transition.test.js +0 -64
  27. package/lib/__tests__/change-control-lambda/handler.test.d.ts +0 -1
  28. package/lib/__tests__/change-control-lambda/handler.test.js +0 -143
  29. package/lib/__tests__/change-control-lambda/time-window.test.d.ts +0 -1
  30. package/lib/__tests__/change-control-lambda/time-window.test.js +0 -131
  31. package/lib/__tests__/chime-notifier.test.d.ts +0 -6
  32. package/lib/__tests__/chime-notifier.test.js +0 -138
  33. package/lib/__tests__/code-signing-cert.test.d.ts +0 -1
  34. package/lib/__tests__/code-signing-cert.test.js +0 -72
  35. package/lib/__tests__/custom-resource-handlers/_cloud-formation.test.d.ts +0 -1
  36. package/lib/__tests__/custom-resource-handlers/_cloud-formation.test.js +0 -100
  37. package/lib/__tests__/custom-resource-handlers/_exec.test.d.ts +0 -1
  38. package/lib/__tests__/custom-resource-handlers/_exec.test.js +0 -9
  39. package/lib/__tests__/custom-resource-handlers/_rmrf.test.d.ts +0 -1
  40. package/lib/__tests__/custom-resource-handlers/_rmrf.test.js +0 -13
  41. package/lib/__tests__/custom-resource-handlers/certificate-signing-request.test.d.ts +0 -1
  42. package/lib/__tests__/custom-resource-handlers/certificate-signing-request.test.js +0 -171
  43. package/lib/__tests__/custom-resource-handlers/pgp-secret.test.d.ts +0 -1
  44. package/lib/__tests__/custom-resource-handlers/pgp-secret.test.js +0 -169
  45. package/lib/__tests__/custom-resource-handlers/private-key.test.d.ts +0 -1
  46. package/lib/__tests__/custom-resource-handlers/private-key.test.js +0 -164
  47. package/lib/__tests__/integ.delivlib.d.ts +0 -1
  48. package/lib/__tests__/integ.delivlib.js +0 -33
  49. package/lib/__tests__/open-pgp-key-pair.test.d.ts +0 -1
  50. package/lib/__tests__/open-pgp-key-pair.test.js +0 -130
  51. package/lib/__tests__/pipeline-notifications/chime.test.d.ts +0 -1
  52. package/lib/__tests__/pipeline-notifications/chime.test.js +0 -69
  53. package/lib/__tests__/pipeline-notifications/slack.test.d.ts +0 -1
  54. package/lib/__tests__/pipeline-notifications/slack.test.js +0 -82
  55. package/lib/__tests__/pipeline.test.d.ts +0 -1
  56. package/lib/__tests__/pipeline.test.js +0 -362
  57. package/lib/__tests__/pr.test.d.ts +0 -3
  58. package/lib/__tests__/pr.test.js +0 -88
  59. package/lib/__tests__/publishing.test.d.ts +0 -1
  60. package/lib/__tests__/publishing.test.js +0 -89
  61. package/lib/__tests__/registry-sync/ecr-mirror.test.d.ts +0 -1
  62. package/lib/__tests__/registry-sync/ecr-mirror.test.js +0 -313
  63. package/lib/__tests__/registry-sync/mirror-source.test.d.ts +0 -1
  64. package/lib/__tests__/registry-sync/mirror-source.test.js +0 -225
  65. package/lib/__tests__/shellable.test.d.ts +0 -1
  66. package/lib/__tests__/shellable.test.js +0 -479
  67. package/lib/__tests__/test-stack.d.ts +0 -4
  68. package/lib/__tests__/test-stack.js +0 -185
  69. package/lib/__tests__/watcher-handler.test.d.ts +0 -1
  70. package/lib/__tests__/watcher-handler.test.js +0 -190
  71. package/lib/__tests__/watcher.test.d.ts +0 -1
  72. package/lib/__tests__/watcher.test.js +0 -78
@@ -1,69 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const assert_1 = require("@monocdk-experiment/assert");
4
- require("@monocdk-experiment/assert/jest");
5
- const monocdk_1 = require("monocdk");
6
- const lib_1 = require("../../../lib");
7
- describe('chime notifications', () => {
8
- test('failure notification via chime', () => {
9
- // GIVEN
10
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
11
- const pipe = new lib_1.Pipeline(stack, 'Pipeline', {
12
- repo: new lib_1.CodeCommitRepo(new monocdk_1.aws_codecommit.Repository(stack, 'Repo1', { repositoryName: 'test' })),
13
- });
14
- // WHEN
15
- pipe.notifyOnFailure(new lib_1.ChimeNotification({
16
- webhookUrls: ['url-1'],
17
- }));
18
- // THEN
19
- expect(stack).toHaveResourceLike('AWS::Events::Rule', {
20
- EventPattern: {
21
- source: ['aws.codepipeline'],
22
- resources: [
23
- stack.resolve(pipe.pipeline.pipelineArn),
24
- ],
25
- },
26
- Targets: [
27
- {
28
- InputTransformer: {
29
- InputTemplate: (0, assert_1.stringLike)('*url-1*'),
30
- },
31
- },
32
- ],
33
- });
34
- });
35
- test('multiple chime notifications', () => {
36
- // GIVEN
37
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
38
- const pipe = new lib_1.Pipeline(stack, 'Pipeline', {
39
- repo: new lib_1.CodeCommitRepo(new monocdk_1.aws_codecommit.Repository(stack, 'Repo1', { repositoryName: 'test' })),
40
- });
41
- // WHEN
42
- pipe.notifyOnFailure(new lib_1.ChimeNotification({
43
- webhookUrls: ['url-1'],
44
- }));
45
- pipe.notifyOnFailure(new lib_1.ChimeNotification({
46
- webhookUrls: ['url-2'],
47
- }));
48
- // THEN
49
- expect(stack).toHaveResourceLike('AWS::Events::Rule', {
50
- Targets: [
51
- {
52
- InputTransformer: {
53
- InputTemplate: (0, assert_1.stringLike)('*url-1*'),
54
- },
55
- },
56
- ],
57
- });
58
- expect(stack).toHaveResourceLike('AWS::Events::Rule', {
59
- Targets: [
60
- {
61
- InputTransformer: {
62
- InputTemplate: (0, assert_1.stringLike)('*url-2*'),
63
- },
64
- },
65
- ],
66
- });
67
- });
68
- });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbWUudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNoaW1lLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1REFBd0Q7QUFDeEQsMkNBQXlDO0FBQ3pDLHFDQUdpQjtBQUNqQixzQ0FBMkU7QUFFM0UsUUFBUSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRTtJQUNuQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFO1FBQzFDLFFBQVE7UUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLGVBQUssQ0FBQyxJQUFJLGFBQUcsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sSUFBSSxHQUFHLElBQUksY0FBUSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDM0MsSUFBSSxFQUFFLElBQUksb0JBQWMsQ0FBQyxJQUFJLHdCQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNoRyxDQUFDLENBQUM7UUFFSCxPQUFPO1FBQ1AsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLHVCQUFpQixDQUFDO1lBQ3pDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQztTQUN2QixDQUFDLENBQUMsQ0FBQztRQUVKLE9BQU87UUFDUCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLEVBQUU7WUFDcEQsWUFBWSxFQUFFO2dCQUNaLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2dCQUM1QixTQUFTLEVBQUU7b0JBQ1QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztpQkFDekM7YUFDRjtZQUNELE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxnQkFBZ0IsRUFBRTt3QkFDaEIsYUFBYSxFQUFFLElBQUEsbUJBQVUsRUFBQyxTQUFTLENBQUM7cUJBQ3JDO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLEVBQUU7UUFDeEMsUUFBUTtRQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksYUFBRyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDaEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxjQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtZQUMzQyxJQUFJLEVBQUUsSUFBSSxvQkFBYyxDQUFDLElBQUksd0JBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ2hHLENBQUMsQ0FBQztRQUVILE9BQU87UUFDUCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksdUJBQWlCLENBQUM7WUFDekMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDO1NBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBRUosSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLHVCQUFpQixDQUFDO1lBQ3pDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQztTQUN2QixDQUFDLENBQUMsQ0FBQztRQUVKLE9BQU87UUFDUCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLEVBQUU7WUFDcEQsT0FBTyxFQUFFO2dCQUNQO29CQUNFLGdCQUFnQixFQUFFO3dCQUNoQixhQUFhLEVBQUUsSUFBQSxtQkFBVSxFQUFDLFNBQVMsQ0FBQztxQkFDckM7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRTtZQUNwRCxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsZ0JBQWdCLEVBQUU7d0JBQ2hCLGFBQWEsRUFBRSxJQUFBLG1CQUFVLEVBQUMsU0FBUyxDQUFDO3FCQUNyQztpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0cmluZ0xpa2UgfSBmcm9tICdAbW9ub2Nkay1leHBlcmltZW50L2Fzc2VydCc7XG5pbXBvcnQgJ0Btb25vY2RrLWV4cGVyaW1lbnQvYXNzZXJ0L2plc3QnO1xuaW1wb3J0IHtcbiAgQXBwLCBTdGFjayxcbiAgYXdzX2NvZGVjb21taXQgYXMgY29kZWNvbW1pdCxcbn0gZnJvbSAnbW9ub2Nkayc7XG5pbXBvcnQgeyBQaXBlbGluZSwgQ29kZUNvbW1pdFJlcG8sIENoaW1lTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcblxuZGVzY3JpYmUoJ2NoaW1lIG5vdGlmaWNhdGlvbnMnLCAoKSA9PiB7XG4gIHRlc3QoJ2ZhaWx1cmUgbm90aWZpY2F0aW9uIHZpYSBjaGltZScsICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKG5ldyBBcHAoKSwgJ1Rlc3RTdGFjaycpO1xuICAgIGNvbnN0IHBpcGUgPSBuZXcgUGlwZWxpbmUoc3RhY2ssICdQaXBlbGluZScsIHtcbiAgICAgIHJlcG86IG5ldyBDb2RlQ29tbWl0UmVwbyhuZXcgY29kZWNvbW1pdC5SZXBvc2l0b3J5KHN0YWNrLCAnUmVwbzEnLCB7IHJlcG9zaXRvcnlOYW1lOiAndGVzdCcgfSkpLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIHBpcGUubm90aWZ5T25GYWlsdXJlKG5ldyBDaGltZU5vdGlmaWNhdGlvbih7XG4gICAgICB3ZWJob29rVXJsczogWyd1cmwtMSddLFxuICAgIH0pKTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlTGlrZSgnQVdTOjpFdmVudHM6OlJ1bGUnLCB7XG4gICAgICBFdmVudFBhdHRlcm46IHtcbiAgICAgICAgc291cmNlOiBbJ2F3cy5jb2RlcGlwZWxpbmUnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgc3RhY2sucmVzb2x2ZShwaXBlLnBpcGVsaW5lLnBpcGVsaW5lQXJuKSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBUYXJnZXRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBJbnB1dFRyYW5zZm9ybWVyOiB7XG4gICAgICAgICAgICBJbnB1dFRlbXBsYXRlOiBzdHJpbmdMaWtlKCcqdXJsLTEqJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ211bHRpcGxlIGNoaW1lIG5vdGlmaWNhdGlvbnMnLCAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayhuZXcgQXBwKCksICdUZXN0U3RhY2snKTtcbiAgICBjb25zdCBwaXBlID0gbmV3IFBpcGVsaW5lKHN0YWNrLCAnUGlwZWxpbmUnLCB7XG4gICAgICByZXBvOiBuZXcgQ29kZUNvbW1pdFJlcG8obmV3IGNvZGVjb21taXQuUmVwb3NpdG9yeShzdGFjaywgJ1JlcG8xJywgeyByZXBvc2l0b3J5TmFtZTogJ3Rlc3QnIH0pKSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBwaXBlLm5vdGlmeU9uRmFpbHVyZShuZXcgQ2hpbWVOb3RpZmljYXRpb24oe1xuICAgICAgd2ViaG9va1VybHM6IFsndXJsLTEnXSxcbiAgICB9KSk7XG5cbiAgICBwaXBlLm5vdGlmeU9uRmFpbHVyZShuZXcgQ2hpbWVOb3RpZmljYXRpb24oe1xuICAgICAgd2ViaG9va1VybHM6IFsndXJsLTInXSxcbiAgICB9KSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KHN0YWNrKS50b0hhdmVSZXNvdXJjZUxpa2UoJ0FXUzo6RXZlbnRzOjpSdWxlJywge1xuICAgICAgVGFyZ2V0czogW1xuICAgICAgICB7XG4gICAgICAgICAgSW5wdXRUcmFuc2Zvcm1lcjoge1xuICAgICAgICAgICAgSW5wdXRUZW1wbGF0ZTogc3RyaW5nTGlrZSgnKnVybC0xKicpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2VMaWtlKCdBV1M6OkV2ZW50czo6UnVsZScsIHtcbiAgICAgIFRhcmdldHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElucHV0VHJhbnNmb3JtZXI6IHtcbiAgICAgICAgICAgIElucHV0VGVtcGxhdGU6IHN0cmluZ0xpa2UoJyp1cmwtMionKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfSk7XG59KTsiXX0=
@@ -1 +0,0 @@
1
- import '@monocdk-experiment/assert/jest';
@@ -1,82 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- require("@monocdk-experiment/assert/jest");
4
- const monocdk_1 = require("monocdk");
5
- const lib_1 = require("../../../lib");
6
- describe('slack notifications', () => {
7
- test('failure notification via slack', () => {
8
- // GIVEN
9
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
10
- const slackChannel = new monocdk_1.aws_chatbot.SlackChannelConfiguration(stack, 'notify', {
11
- slackChannelConfigurationName: 'test-slack-config',
12
- slackChannelId: 'test-channel-id',
13
- slackWorkspaceId: 'test-workspace-id',
14
- });
15
- const pipe = new lib_1.Pipeline(stack, 'Pipeline', {
16
- repo: new lib_1.CodeCommitRepo(new monocdk_1.aws_codecommit.Repository(stack, 'Repo1', { repositoryName: 'test' })),
17
- });
18
- // WHEN
19
- pipe.notifyOnFailure(new lib_1.SlackNotification({ channels: [slackChannel] }));
20
- // THEN
21
- expect(stack).toHaveResource('AWS::CodeStarNotifications::NotificationRule', {
22
- DetailType: 'BASIC',
23
- EventTypeIds: ['codepipeline-pipeline-action-execution-failed'],
24
- Name: {
25
- 'Fn::Join': [
26
- '',
27
- [
28
- {
29
- Ref: 'PipelineBuildPipeline04C6628A',
30
- },
31
- '-06cc6a8b3242c01f0cffbd9626c6a84d',
32
- ],
33
- ],
34
- },
35
- Resource: stack.resolve(pipe.pipeline.pipelineArn),
36
- Targets: [
37
- {
38
- TargetAddress: stack.resolve(slackChannel.slackChannelConfigurationArn),
39
- TargetType: 'AWSChatbotSlack',
40
- },
41
- ],
42
- });
43
- });
44
- test('multiple notifications', () => {
45
- // GIVEN
46
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
47
- const slackChannel1 = new monocdk_1.aws_chatbot.SlackChannelConfiguration(stack, 'slack1', {
48
- slackChannelConfigurationName: 'test-slack-config-1',
49
- slackChannelId: 'test-channel-id-1',
50
- slackWorkspaceId: 'test-workspace-id-1',
51
- });
52
- const slackChannel2 = new monocdk_1.aws_chatbot.SlackChannelConfiguration(stack, 'slack2', {
53
- slackChannelConfigurationName: 'test-slack-config-2',
54
- slackChannelId: 'test-channel-id-2',
55
- slackWorkspaceId: 'test-workspace-id-2',
56
- });
57
- const pipe = new lib_1.Pipeline(stack, 'Pipeline', {
58
- repo: new lib_1.CodeCommitRepo(new monocdk_1.aws_codecommit.Repository(stack, 'Repo1', { repositoryName: 'test' })),
59
- });
60
- // WHEN
61
- pipe.notifyOnFailure(new lib_1.SlackNotification({ channels: [slackChannel1] }));
62
- pipe.notifyOnFailure(new lib_1.SlackNotification({ channels: [slackChannel2] }));
63
- // THEN
64
- expect(stack).toHaveResource('AWS::CodeStarNotifications::NotificationRule', {
65
- Targets: [
66
- {
67
- TargetAddress: stack.resolve(slackChannel1.slackChannelConfigurationArn),
68
- TargetType: 'AWSChatbotSlack',
69
- },
70
- ],
71
- });
72
- expect(stack).toHaveResource('AWS::CodeStarNotifications::NotificationRule', {
73
- Targets: [
74
- {
75
- TargetAddress: stack.resolve(slackChannel2.slackChannelConfigurationArn),
76
- TargetType: 'AWSChatbotSlack',
77
- },
78
- ],
79
- });
80
- });
81
- });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xhY2sudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNsYWNrLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyQ0FBeUM7QUFDekMscUNBSWlCO0FBQ2pCLHNDQUEyRTtBQUUzRSxRQUFRLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO0lBQ25DLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxHQUFHLEVBQUU7UUFDMUMsUUFBUTtRQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksYUFBRyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDaEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxxQkFBTyxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDMUUsNkJBQTZCLEVBQUUsbUJBQW1CO1lBQ2xELGNBQWMsRUFBRSxpQkFBaUI7WUFDakMsZ0JBQWdCLEVBQUUsbUJBQW1CO1NBQ3RDLENBQUMsQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLElBQUksY0FBUSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDM0MsSUFBSSxFQUFFLElBQUksb0JBQWMsQ0FBQyxJQUFJLHdCQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNoRyxDQUFDLENBQUM7UUFFSCxPQUFPO1FBQ1AsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLHVCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFMUUsT0FBTztRQUNQLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsOENBQThDLEVBQUU7WUFDM0UsVUFBVSxFQUFFLE9BQU87WUFDbkIsWUFBWSxFQUFFLENBQUMsK0NBQStDLENBQUM7WUFDL0QsSUFBSSxFQUFFO2dCQUNKLFVBQVUsRUFBRTtvQkFDVixFQUFFO29CQUNGO3dCQUNFOzRCQUNFLEdBQUcsRUFBRSwrQkFBK0I7eUJBQ3JDO3dCQUNELG1DQUFtQztxQkFDcEM7aUJBQ0Y7YUFDRjtZQUNELFFBQVEsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1lBQ2xELE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxhQUFhLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsNEJBQTRCLENBQUM7b0JBQ3ZFLFVBQVUsRUFBRSxpQkFBaUI7aUJBQzlCO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUU7UUFDbEMsUUFBUTtRQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksYUFBRyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDaEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxxQkFBTyxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDM0UsNkJBQTZCLEVBQUUscUJBQXFCO1lBQ3BELGNBQWMsRUFBRSxtQkFBbUI7WUFDbkMsZ0JBQWdCLEVBQUUscUJBQXFCO1NBQ3hDLENBQUMsQ0FBQztRQUNILE1BQU0sYUFBYSxHQUFHLElBQUkscUJBQU8sQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFO1lBQzNFLDZCQUE2QixFQUFFLHFCQUFxQjtZQUNwRCxjQUFjLEVBQUUsbUJBQW1CO1lBQ25DLGdCQUFnQixFQUFFLHFCQUFxQjtTQUN4QyxDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksR0FBRyxJQUFJLGNBQVEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO1lBQzNDLElBQUksRUFBRSxJQUFJLG9CQUFjLENBQUMsSUFBSSx3QkFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDaEcsQ0FBQyxDQUFDO1FBRUgsT0FBTztRQUNQLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSx1QkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSx1QkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTNFLE9BQU87UUFDUCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLDhDQUE4QyxFQUFFO1lBQzNFLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxhQUFhLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsNEJBQTRCLENBQUM7b0JBQ3hFLFVBQVUsRUFBRSxpQkFBaUI7aUJBQzlCO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLDhDQUE4QyxFQUFFO1lBQzNFLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxhQUFhLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsNEJBQTRCLENBQUM7b0JBQ3hFLFVBQVUsRUFBRSxpQkFBaUI7aUJBQzlCO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdAbW9ub2Nkay1leHBlcmltZW50L2Fzc2VydC9qZXN0JztcbmltcG9ydCB7XG4gIEFwcCwgU3RhY2ssXG4gIGF3c19jb2RlY29tbWl0IGFzIGNvZGVjb21taXQsXG4gIGF3c19jaGF0Ym90IGFzIGNoYXRib3QsXG59IGZyb20gJ21vbm9jZGsnO1xuaW1wb3J0IHsgUGlwZWxpbmUsIENvZGVDb21taXRSZXBvLCBTbGFja05vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5cbmRlc2NyaWJlKCdzbGFjayBub3RpZmljYXRpb25zJywgKCkgPT4ge1xuICB0ZXN0KCdmYWlsdXJlIG5vdGlmaWNhdGlvbiB2aWEgc2xhY2snLCAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayhuZXcgQXBwKCksICdUZXN0U3RhY2snKTtcbiAgICBjb25zdCBzbGFja0NoYW5uZWwgPSBuZXcgY2hhdGJvdC5TbGFja0NoYW5uZWxDb25maWd1cmF0aW9uKHN0YWNrLCAnbm90aWZ5Jywge1xuICAgICAgc2xhY2tDaGFubmVsQ29uZmlndXJhdGlvbk5hbWU6ICd0ZXN0LXNsYWNrLWNvbmZpZycsXG4gICAgICBzbGFja0NoYW5uZWxJZDogJ3Rlc3QtY2hhbm5lbC1pZCcsXG4gICAgICBzbGFja1dvcmtzcGFjZUlkOiAndGVzdC13b3Jrc3BhY2UtaWQnLFxuICAgIH0pO1xuICAgIGNvbnN0IHBpcGUgPSBuZXcgUGlwZWxpbmUoc3RhY2ssICdQaXBlbGluZScsIHtcbiAgICAgIHJlcG86IG5ldyBDb2RlQ29tbWl0UmVwbyhuZXcgY29kZWNvbW1pdC5SZXBvc2l0b3J5KHN0YWNrLCAnUmVwbzEnLCB7IHJlcG9zaXRvcnlOYW1lOiAndGVzdCcgfSkpLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIHBpcGUubm90aWZ5T25GYWlsdXJlKG5ldyBTbGFja05vdGlmaWNhdGlvbih7IGNoYW5uZWxzOiBbc2xhY2tDaGFubmVsXSB9KSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KHN0YWNrKS50b0hhdmVSZXNvdXJjZSgnQVdTOjpDb2RlU3Rhck5vdGlmaWNhdGlvbnM6Ok5vdGlmaWNhdGlvblJ1bGUnLCB7XG4gICAgICBEZXRhaWxUeXBlOiAnQkFTSUMnLFxuICAgICAgRXZlbnRUeXBlSWRzOiBbJ2NvZGVwaXBlbGluZS1waXBlbGluZS1hY3Rpb24tZXhlY3V0aW9uLWZhaWxlZCddLFxuICAgICAgTmFtZToge1xuICAgICAgICAnRm46OkpvaW4nOiBbXG4gICAgICAgICAgJycsXG4gICAgICAgICAgW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBSZWY6ICdQaXBlbGluZUJ1aWxkUGlwZWxpbmUwNEM2NjI4QScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJy0wNmNjNmE4YjMyNDJjMDFmMGNmZmJkOTYyNmM2YTg0ZCcsXG4gICAgICAgICAgXSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBSZXNvdXJjZTogc3RhY2sucmVzb2x2ZShwaXBlLnBpcGVsaW5lLnBpcGVsaW5lQXJuKSxcbiAgICAgIFRhcmdldHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFRhcmdldEFkZHJlc3M6IHN0YWNrLnJlc29sdmUoc2xhY2tDaGFubmVsLnNsYWNrQ2hhbm5lbENvbmZpZ3VyYXRpb25Bcm4pLFxuICAgICAgICAgIFRhcmdldFR5cGU6ICdBV1NDaGF0Ym90U2xhY2snLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgdGVzdCgnbXVsdGlwbGUgbm90aWZpY2F0aW9ucycsICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKG5ldyBBcHAoKSwgJ1Rlc3RTdGFjaycpO1xuICAgIGNvbnN0IHNsYWNrQ2hhbm5lbDEgPSBuZXcgY2hhdGJvdC5TbGFja0NoYW5uZWxDb25maWd1cmF0aW9uKHN0YWNrLCAnc2xhY2sxJywge1xuICAgICAgc2xhY2tDaGFubmVsQ29uZmlndXJhdGlvbk5hbWU6ICd0ZXN0LXNsYWNrLWNvbmZpZy0xJyxcbiAgICAgIHNsYWNrQ2hhbm5lbElkOiAndGVzdC1jaGFubmVsLWlkLTEnLFxuICAgICAgc2xhY2tXb3Jrc3BhY2VJZDogJ3Rlc3Qtd29ya3NwYWNlLWlkLTEnLFxuICAgIH0pO1xuICAgIGNvbnN0IHNsYWNrQ2hhbm5lbDIgPSBuZXcgY2hhdGJvdC5TbGFja0NoYW5uZWxDb25maWd1cmF0aW9uKHN0YWNrLCAnc2xhY2syJywge1xuICAgICAgc2xhY2tDaGFubmVsQ29uZmlndXJhdGlvbk5hbWU6ICd0ZXN0LXNsYWNrLWNvbmZpZy0yJyxcbiAgICAgIHNsYWNrQ2hhbm5lbElkOiAndGVzdC1jaGFubmVsLWlkLTInLFxuICAgICAgc2xhY2tXb3Jrc3BhY2VJZDogJ3Rlc3Qtd29ya3NwYWNlLWlkLTInLFxuICAgIH0pO1xuICAgIGNvbnN0IHBpcGUgPSBuZXcgUGlwZWxpbmUoc3RhY2ssICdQaXBlbGluZScsIHtcbiAgICAgIHJlcG86IG5ldyBDb2RlQ29tbWl0UmVwbyhuZXcgY29kZWNvbW1pdC5SZXBvc2l0b3J5KHN0YWNrLCAnUmVwbzEnLCB7IHJlcG9zaXRvcnlOYW1lOiAndGVzdCcgfSkpLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIHBpcGUubm90aWZ5T25GYWlsdXJlKG5ldyBTbGFja05vdGlmaWNhdGlvbih7IGNoYW5uZWxzOiBbc2xhY2tDaGFubmVsMV0gfSkpO1xuICAgIHBpcGUubm90aWZ5T25GYWlsdXJlKG5ldyBTbGFja05vdGlmaWNhdGlvbih7IGNoYW5uZWxzOiBbc2xhY2tDaGFubmVsMl0gfSkpO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2UoJ0FXUzo6Q29kZVN0YXJOb3RpZmljYXRpb25zOjpOb3RpZmljYXRpb25SdWxlJywge1xuICAgICAgVGFyZ2V0czogW1xuICAgICAgICB7XG4gICAgICAgICAgVGFyZ2V0QWRkcmVzczogc3RhY2sucmVzb2x2ZShzbGFja0NoYW5uZWwxLnNsYWNrQ2hhbm5lbENvbmZpZ3VyYXRpb25Bcm4pLFxuICAgICAgICAgIFRhcmdldFR5cGU6ICdBV1NDaGF0Ym90U2xhY2snLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlKCdBV1M6OkNvZGVTdGFyTm90aWZpY2F0aW9uczo6Tm90aWZpY2F0aW9uUnVsZScsIHtcbiAgICAgIFRhcmdldHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFRhcmdldEFkZHJlc3M6IHN0YWNrLnJlc29sdmUoc2xhY2tDaGFubmVsMi5zbGFja0NoYW5uZWxDb25maWd1cmF0aW9uQXJuKSxcbiAgICAgICAgICBUYXJnZXRUeXBlOiAnQVdTQ2hhdGJvdFNsYWNrJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1 +0,0 @@
1
- export {};
@@ -1,362 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- const path = __importStar(require("path"));
23
- const assert_1 = require("@monocdk-experiment/assert");
24
- const monocdk_1 = require("monocdk");
25
- const delivlib = __importStar(require("../../lib"));
26
- const util_1 = require("../../lib/util");
27
- test('pipelineName can be used to set a physical name for the pipeline', async () => {
28
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
29
- new delivlib.Pipeline(stack, 'Pipeline', {
30
- repo: createTestRepo(stack),
31
- pipelineName: 'HelloPipeline',
32
- });
33
- (0, assert_1.expect)(stack).to((0, assert_1.haveResource)('AWS::CodePipeline::Pipeline', {
34
- Name: 'HelloPipeline',
35
- }));
36
- });
37
- test('concurrency: unlimited by default', async () => {
38
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
39
- const stages = createTestPipelineForConcurrencyTests(stack);
40
- // default is RunOrder = 1 for all actions which means they all run in parallel
41
- for (const stage of stages) {
42
- const actions = stage.Actions;
43
- for (const action of actions) {
44
- expect(action.RunOrder).toBe(1);
45
- }
46
- }
47
- });
48
- test('concurrency = 1: means that actions will run sequentially', async () => {
49
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
50
- const stages = createTestPipelineForConcurrencyTests(stack, { concurrency: 1 });
51
- for (const stage of stages) {
52
- const actions = stage.Actions;
53
- let expected = 1;
54
- for (const action of actions) {
55
- expect(action.RunOrder).toBe(expected);
56
- expected++;
57
- }
58
- }
59
- });
60
- test('determineRunOrder: creates groups of up to "concurrency" actions', async () => {
61
- testCase({ actionCount: 1, concurrency: 1 });
62
- testCase({ actionCount: 10, concurrency: 1 });
63
- testCase({ actionCount: 56, concurrency: 4 });
64
- testCase({ actionCount: 3, concurrency: 2 });
65
- function testCase({ actionCount, concurrency }) {
66
- const actionsPerRunOrder = {};
67
- for (let i = 0; i < actionCount; ++i) {
68
- const runOrder = (0, util_1.determineRunOrder)(i, concurrency);
69
- if (!actionsPerRunOrder[runOrder]) {
70
- actionsPerRunOrder[runOrder] = 0;
71
- }
72
- actionsPerRunOrder[runOrder]++;
73
- }
74
- // assert that there are no more than *concurrency* actions in each runOrder
75
- let total = 0;
76
- for (const [, count] of Object.entries(actionsPerRunOrder)) {
77
- expect(count).toBeLessThanOrEqual(concurrency);
78
- total += count;
79
- }
80
- expect(total).toBe(actionCount); // sanity
81
- }
82
- });
83
- test('can add arbitrary shellables with different artifacts', () => {
84
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
85
- const pipeline = new delivlib.Pipeline(stack, 'Pipeline', {
86
- repo: createTestRepo(stack),
87
- pipelineName: 'HelloPipeline',
88
- });
89
- const action = pipeline.addShellable('Test', 'SecondStep', {
90
- scriptDirectory: __dirname,
91
- entrypoint: 'run-test.sh',
92
- }).action;
93
- pipeline.addPublish(new Pub(stack, 'Pub'), { inputArtifact: action.actionProperties.outputs[0] });
94
- (0, assert_1.expect)(stack).to((0, assert_1.haveResourceLike)('AWS::CodePipeline::Pipeline', {
95
- Stages: [
96
- {
97
- Name: 'Source',
98
- Actions: [
99
- {
100
- ActionTypeId: { Category: 'Source', Owner: 'AWS', Provider: 'CodeCommit' },
101
- Name: 'Pull',
102
- OutputArtifacts: [
103
- {
104
- Name: 'Source',
105
- },
106
- ],
107
- },
108
- ],
109
- },
110
- {
111
- Name: 'Build',
112
- Actions: [
113
- {
114
- Name: 'Build',
115
- ActionTypeId: { Category: 'Build', Owner: 'AWS', Provider: 'CodeBuild' },
116
- InputArtifacts: [{ Name: 'Source' }],
117
- OutputArtifacts: [{ Name: 'Artifact_Build_Build' }],
118
- RunOrder: 1,
119
- },
120
- ],
121
- },
122
- {
123
- Name: 'Test',
124
- Actions: [
125
- {
126
- ActionTypeId: { Category: 'Build', Owner: 'AWS', Provider: 'CodeBuild' },
127
- InputArtifacts: [{ Name: 'Artifact_Build_Build' }],
128
- Name: 'ActionSecondStep',
129
- OutputArtifacts: [{ Name: 'Artifact_TestStackPipelineSecondStep91726C11' }],
130
- RunOrder: 1,
131
- },
132
- ],
133
- },
134
- {
135
- Name: 'Publish',
136
- Actions: [
137
- {
138
- ActionTypeId: { Category: 'Build', Owner: 'AWS', Provider: 'CodeBuild' },
139
- InputArtifacts: [{ Name: 'Artifact_TestStackPipelineSecondStep91726C11' }],
140
- Name: 'PubPublish',
141
- RunOrder: 1,
142
- },
143
- ],
144
- },
145
- ],
146
- }));
147
- });
148
- test('autoBuild() can be used to add automatic builds to the pipeline', () => {
149
- // GIVEN
150
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
151
- // WHEN
152
- new delivlib.Pipeline(stack, 'Pipeline', {
153
- repo: createTestRepo(stack),
154
- pipelineName: 'HelloPipeline',
155
- autoBuild: true,
156
- });
157
- (0, assert_1.expect)(stack).notTo((0, assert_1.haveResource)('AWS::Serverless::Application', {
158
- Location: {
159
- ApplicationId: 'arn:aws:serverlessrepo:us-east-1:277187709615:applications/github-codebuild-logs',
160
- SemanticVersion: '1.4.0',
161
- },
162
- }));
163
- });
164
- test('autoBuild() can be configured to publish logs publically', () => {
165
- // GIVEN
166
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
167
- // WHEN
168
- new delivlib.Pipeline(stack, 'Pipeline', {
169
- repo: createTestRepo(stack),
170
- pipelineName: 'HelloPipeline',
171
- autoBuild: true,
172
- autoBuildOptions: {
173
- publicLogs: true,
174
- },
175
- });
176
- (0, assert_1.expect)(stack).to((0, assert_1.haveResource)('AWS::Serverless::Application', {
177
- Location: {
178
- ApplicationId: 'arn:aws:serverlessrepo:us-east-1:277187709615:applications/github-codebuild-logs',
179
- SemanticVersion: '1.4.0',
180
- },
181
- Parameters: {
182
- CodeBuildProjectName: {
183
- Ref: 'PipelineAutoBuildProjectB97B4446',
184
- },
185
- DeletePreviousComments: 'true',
186
- CommentOnSuccess: 'true',
187
- },
188
- }));
189
- });
190
- test('autoBuild() can be configured with a different buildspec', () => {
191
- // GIVEN
192
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
193
- // WHEN
194
- new delivlib.Pipeline(stack, 'Pipeline', {
195
- repo: createTestRepo(stack),
196
- pipelineName: 'HelloPipeline',
197
- autoBuild: true,
198
- autoBuildOptions: {
199
- buildSpec: monocdk_1.aws_codebuild.BuildSpec.fromSourceFilename('different-buildspec.yaml'),
200
- },
201
- });
202
- // THEN
203
- (0, assert_1.expect)(stack).to((0, assert_1.haveResource)('AWS::CodeBuild::Project', {
204
- Source: {
205
- BuildSpec: 'different-buildspec.yaml',
206
- Location: {
207
- 'Fn::GetAtt': [
208
- 'Repo02AC86CF',
209
- 'CloneUrlHttp',
210
- ],
211
- },
212
- Type: 'CODECOMMIT',
213
- },
214
- }));
215
- });
216
- test('CodeBuild Project name matches buildProjectName property', () => {
217
- // GIVEN
218
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
219
- // WHEN
220
- new delivlib.Pipeline(stack, 'Pipeline', {
221
- repo: createTestRepo(stack),
222
- pipelineName: 'HelloPipeline',
223
- buildProjectName: 'HelloBuild',
224
- });
225
- // THEN
226
- (0, assert_1.expect)(stack).to((0, assert_1.haveResourceLike)('AWS::CodeBuild::Project', {
227
- Name: 'HelloBuild',
228
- }));
229
- });
230
- test('CodeBuild Project name is extended from pipelineName property', () => {
231
- // GIVEN
232
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
233
- // WHEN
234
- new delivlib.Pipeline(stack, 'Pipeline', {
235
- repo: createTestRepo(stack),
236
- pipelineName: 'HelloPipeline',
237
- });
238
- // THEN
239
- (0, assert_1.expect)(stack).to((0, assert_1.haveResourceLike)('AWS::CodeBuild::Project', {
240
- Name: 'HelloPipeline-Build',
241
- }));
242
- });
243
- test('CodeBuild Project name is left undefined when neither buildProjectName nor pipelineName are specified', () => {
244
- // GIVEN
245
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
246
- // WHEN
247
- new delivlib.Pipeline(stack, 'Pipeline', {
248
- repo: createTestRepo(stack),
249
- });
250
- // THEN
251
- (0, assert_1.expect)(stack).to((0, assert_1.haveResourceLike)('AWS::CodeBuild::Project', {
252
- Name: assert_1.ABSENT,
253
- }));
254
- });
255
- test('metricFailures', () => {
256
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
257
- const pipeline = new delivlib.Pipeline(stack, 'Pipeline', {
258
- repo: createTestRepo(stack),
259
- pipelineName: 'HelloPipeline',
260
- });
261
- expect(stack.resolve(pipeline.metricFailures({}))).toEqual({
262
- dimensions: { Pipeline: { Ref: 'PipelineBuildPipeline04C6628A' } },
263
- namespace: 'CDK/Delivlib',
264
- metricName: 'Failures',
265
- period: monocdk_1.Duration.minutes(5),
266
- statistic: 'Sum',
267
- });
268
- });
269
- test('metricActionFailures', () => {
270
- const stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
271
- const pipeline = new delivlib.Pipeline(stack, 'Pipeline', {
272
- repo: createTestRepo(stack),
273
- pipelineName: 'HelloPipeline',
274
- });
275
- const project = new monocdk_1.aws_codebuild.Project(stack, 'publish', {
276
- buildSpec: monocdk_1.aws_codebuild.BuildSpec.fromObject({ version: '0.2' }),
277
- });
278
- const scriptDirectory = __dirname;
279
- const entrypoint = 'run-test.sh';
280
- pipeline.addShellable('PreBuild', 'FirstStep', { scriptDirectory, entrypoint });
281
- pipeline.addShellable('PreBuild', 'SecondStep', { scriptDirectory, entrypoint });
282
- pipeline.addPublish(new TestPublishable(stack, 'Publish1', { project }));
283
- pipeline.addPublish(new TestPublishable(stack, 'Publish2', { project }));
284
- pipeline.addTest('Test1', { scriptDirectory, entrypoint, platform: delivlib.ShellPlatform.LinuxUbuntu });
285
- pipeline.addTest('Test2', { scriptDirectory, entrypoint, platform: delivlib.ShellPlatform.LinuxUbuntu });
286
- const expectedMetricNames = [
287
- 'Pull',
288
- 'Build',
289
- 'ActionFirstStep',
290
- 'ActionSecondStep',
291
- 'Publish1Publish',
292
- 'Publish2Publish',
293
- 'TestTest1',
294
- 'TestTest2',
295
- ];
296
- const expectedMetrics = expectedMetricNames.map(name => {
297
- return {
298
- dimensions: { Pipeline: { Ref: 'PipelineBuildPipeline04C6628A' }, Action: name },
299
- namespace: 'CDK/Delivlib',
300
- metricName: 'Failures',
301
- period: monocdk_1.Duration.minutes(5),
302
- statistic: 'Sum',
303
- };
304
- });
305
- expect(stack.resolve(pipeline.metricActionFailures({}))).toEqual(expectedMetrics);
306
- });
307
- function createTestPipelineForConcurrencyTests(stack, props) {
308
- const pipeline = new delivlib.Pipeline(stack, 'Pipeline', {
309
- repo: createTestRepo(stack),
310
- ...props,
311
- });
312
- const project = new monocdk_1.aws_codebuild.Project(stack, 'publish', {
313
- buildSpec: monocdk_1.aws_codebuild.BuildSpec.fromObject({ version: '0.2' }),
314
- });
315
- const scriptDirectory = path.join(__dirname, 'delivlib-tests', 'linux');
316
- const entrypoint = 'test.sh';
317
- pipeline.addTest('test1', { scriptDirectory, entrypoint, platform: delivlib.ShellPlatform.LinuxUbuntu });
318
- pipeline.addTest('test2', { scriptDirectory, entrypoint, platform: delivlib.ShellPlatform.LinuxUbuntu });
319
- pipeline.addTest('test3', { scriptDirectory, entrypoint, platform: delivlib.ShellPlatform.LinuxUbuntu });
320
- pipeline.addTest('test4', { scriptDirectory, entrypoint, platform: delivlib.ShellPlatform.LinuxUbuntu });
321
- pipeline.addTest('test5', { scriptDirectory, entrypoint, platform: delivlib.ShellPlatform.LinuxUbuntu });
322
- pipeline.addPublish(new TestPublishable(stack, 'pub1', { project }));
323
- pipeline.addPublish(new TestPublishable(stack, 'pub2', { project }));
324
- pipeline.addPublish(new TestPublishable(stack, 'pub3', { project }));
325
- pipeline.addPublish(new TestPublishable(stack, 'pub4', { project }));
326
- pipeline.addPublish(new TestPublishable(stack, 'pub5', { project }));
327
- pipeline.addPublish(new TestPublishable(stack, 'pub6', { project }));
328
- const template = assert_1.SynthUtils.synthesize(stack).template;
329
- return template.Resources.PipelineBuildPipeline04C6628A.Properties.Stages;
330
- }
331
- function createTestRepo(stack) {
332
- return new delivlib.CodeCommitRepo(new monocdk_1.aws_codecommit.Repository(stack, 'Repo', { repositoryName: 'test' }));
333
- }
334
- class TestPublishable extends monocdk_1.Construct {
335
- constructor(scope, id, props) {
336
- super(scope, id);
337
- this.project = props.project;
338
- }
339
- addToPipeline(stage, id, options) {
340
- stage.addAction(new monocdk_1.aws_codepipeline_actions.CodeBuildAction({
341
- actionName: id,
342
- input: options.inputArtifact || new monocdk_1.aws_codepipeline.Artifact(),
343
- project: this.project,
344
- runOrder: options.runOrder,
345
- }));
346
- }
347
- }
348
- class Pub extends monocdk_1.Construct {
349
- constructor(scope, id) {
350
- super(scope, id);
351
- this.project = new monocdk_1.aws_codebuild.PipelineProject(this, 'Project');
352
- }
353
- addToPipeline(stage, id, options) {
354
- stage.addAction(new monocdk_1.aws_codepipeline_actions.CodeBuildAction({
355
- actionName: id,
356
- input: options.inputArtifact || new monocdk_1.aws_codepipeline.Artifact(),
357
- project: this.project,
358
- runOrder: options.runOrder,
359
- }));
360
- }
361
- }
362
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBpcGVsaW5lLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBQzdCLHVEQUFzSDtBQUN0SCxxQ0FNaUI7QUFDakIsb0RBQXNDO0FBQ3RDLHlDQUFtRDtBQUVuRCxJQUFJLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDbEYsTUFBTSxLQUFLLEdBQUcsSUFBSSxlQUFLLENBQUMsSUFBSSxhQUFHLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUVoRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtRQUN2QyxJQUFJLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQztRQUMzQixZQUFZLEVBQUUsZUFBZTtLQUM5QixDQUFDLENBQUM7SUFFSCxJQUFBLGVBQVUsRUFBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBQSxxQkFBWSxFQUFDLDZCQUE2QixFQUFFO1FBQy9ELElBQUksRUFBRSxlQUFlO0tBQ3RCLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxlQUFLLENBQUMsSUFBSSxhQUFHLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUVoRCxNQUFNLE1BQU0sR0FBRyxxQ0FBcUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU1RCwrRUFBK0U7SUFDL0UsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7UUFDMUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM5QixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtZQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUks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QVMsQ0FBQyxRQUFRLEVBQUU7WUFDeEQsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtTQUMzQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBleHBlY3QgYXMgY2RrX2V4cGVjdCwgaGF2ZVJlc291cmNlLCBoYXZlUmVzb3VyY2VMaWtlLCBTeW50aFV0aWxzLCBBQlNFTlQgfSBmcm9tICdAbW9ub2Nkay1leHBlcmltZW50L2Fzc2VydCc7XG5pbXBvcnQge1xuICBBcHAsIENvbnN0cnVjdCwgRHVyYXRpb24sIFN0YWNrLFxuICBhd3NfY29kZWJ1aWxkIGFzIGNvZGVidWlsZCxcbiAgYXdzX2NvZGVjb21taXQgYXMgY29kZWNvbW1pdCxcbiAgYXdzX2NvZGVwaXBlbGluZSBhcyBjcGlwZWxpbmUsXG4gIGF3c19jb2RlcGlwZWxpbmVfYWN0aW9ucyBhcyBjcGlwZWxpbmVfYWN0aW9ucyxcbn0gZnJvbSAnbW9ub2Nkayc7XG5pbXBvcnQgKiBhcyBkZWxpdmxpYiBmcm9tICcuLi8uLi9saWInO1xuaW1wb3J0IHsgZGV0ZXJtaW5lUnVuT3JkZXIgfSBmcm9tICcuLi8uLi9saWIvdXRpbCc7XG5cbnRlc3QoJ3BpcGVsaW5lTmFtZSBjYW4gYmUgdXNlZCB0byBzZXQgYSBwaHlzaWNhbCBuYW1lIGZvciB0aGUgcGlwZWxpbmUnLCBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKG5ldyBBcHAoKSwgJ1Rlc3RTdGFjaycpO1xuXG4gIG5ldyBkZWxpdmxpYi5QaXBlbGluZShzdGFjaywgJ1BpcGVsaW5lJywge1xuICAgIHJlcG86IGNyZWF0ZVRlc3RSZXBvKHN0YWNrKSxcbiAgICBwaXBlbGluZU5hbWU6ICdIZWxsb1BpcGVsaW5lJyxcbiAgfSk7XG5cbiAgY2RrX2V4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKCdBV1M6OkNvZGVQaXBlbGluZTo6UGlwZWxpbmUnLCB7XG4gICAgTmFtZTogJ0hlbGxvUGlwZWxpbmUnLFxuICB9KSk7XG59KTtcblxudGVzdCgnY29uY3VycmVuY3k6IHVubGltaXRlZCBieSBkZWZhdWx0JywgYXN5bmMgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayhuZXcgQXBwKCksICdUZXN0U3RhY2snKTtcblxuICBjb25zdCBzdGFnZXMgPSBjcmVhdGVUZXN0UGlwZWxpbmVGb3JDb25jdXJyZW5jeVRlc3RzKHN0YWNrKTtcblxuICAvLyBkZWZhdWx0IGlzIFJ1bk9yZGVyID0gMSBmb3IgYWxsIGFjdGlvbnMgd2hpY2ggbWVhbnMgdGhleSBhbGwgcnVuIGluIHBhcmFsbGVsXG4gIGZvciAoY29uc3Qgc3RhZ2Ugb2Ygc3RhZ2VzKSB7XG4gICAgY29uc3QgYWN0aW9ucyA9IHN0YWdlLkFjdGlvbnM7XG4gICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgZXhwZWN0KGFjdGlvbi5SdW5PcmRlcikudG9CZSgxKTtcbiAgICB9XG4gIH1cbn0pO1xuXG50ZXN0KCdjb25jdXJyZW5jeSA9IDE6IG1lYW5zIHRoYXQgYWN0aW9ucyB3aWxsIHJ1biBzZXF1ZW50aWFsbHknLCBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKG5ldyBBcHAoKSwgJ1Rlc3RTdGFjaycpO1xuICBjb25zdCBzdGFnZXMgPSBjcmVhdGVUZXN0UGlwZWxpbmVGb3JDb25jdXJyZW5jeVRlc3RzKHN0YWNrLCB7IGNvbmN1cnJlbmN5OiAxIH0gYXMgYW55KTtcblxuICBmb3IgKGNvbnN0IHN0YWdlIG9mIHN0YWdlcykge1xuICAgIGNvbnN0IGFjdGlvbnMgPSBzdGFnZS5BY3Rpb25zO1xuICAgIGxldCBleHBlY3RlZCA9IDE7XG4gICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgZXhwZWN0KGFjdGlvbi5SdW5PcmRlcikudG9CZShleHBlY3RlZCk7XG4gICAgICBleHBlY3RlZCsrO1xuICAgIH1cbiAgfVxufSk7XG5cbnRlc3QoJ2RldGVybWluZVJ1bk9yZGVyOiBjcmVhdGVzIGdyb3VwcyBvZiB1cCB0byBcImNvbmN1cnJlbmN5XCIgYWN0aW9ucycsIGFzeW5jICgpID0+IHtcbiAgdGVzdENhc2UoeyBhY3Rpb25Db3VudDogMSwgY29uY3VycmVuY3k6IDEgfSk7XG4gIHRlc3RDYXNlKHsgYWN0aW9uQ291bnQ6IDEwLCBjb25jdXJyZW5jeTogMSB9KTtcbiAgdGVzdENhc2UoeyBhY3Rpb25Db3VudDogNTYsIGNvbmN1cnJlbmN5OiA0IH0pO1xuICB0ZXN0Q2FzZSh7IGFjdGlvbkNvdW50OiAzLCBjb25jdXJyZW5jeTogMiB9KTtcblxuICBmdW5jdGlvbiB0ZXN0Q2FzZSh7IGFjdGlvbkNvdW50LCBjb25jdXJyZW5jeSB9OiB7IGFjdGlvbkNvdW50OiBudW1iZXI7IGNvbmN1cnJlbmN5OiBudW1iZXIgfSkge1xuICAgIGNvbnN0IGFjdGlvbnNQZXJSdW5PcmRlcjogeyBbcnVuT3JkZXI6IG51bWJlcl06IG51bWJlciB9ID0geyB9O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0aW9uQ291bnQ7ICsraSkge1xuICAgICAgY29uc3QgcnVuT3JkZXIgPSBkZXRlcm1pbmVSdW5PcmRlcihpLCBjb25jdXJyZW5jeSkhO1xuICAgICAgaWYgKCFhY3Rpb25zUGVyUnVuT3JkZXJbcnVuT3JkZXJdKSB7XG4gICAgICAgIGFjdGlvbnNQZXJSdW5PcmRlcltydW5PcmRlcl0gPSAwO1xuICAgICAgfVxuICAgICAgYWN0aW9uc1BlclJ1bk9yZGVyW3J1bk9yZGVyXSsrO1xuICAgIH1cblxuICAgIC8vIGFzc2VydCB0aGF0IHRoZXJlIGFyZSBubyBtb3JlIHRoYW4gKmNvbmN1cnJlbmN5KiBhY3Rpb25zIGluIGVhY2ggcnVuT3JkZXJcbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGZvciAoY29uc3QgWywgY291bnRdIG9mIE9iamVjdC5lbnRyaWVzKGFjdGlvbnNQZXJSdW5PcmRlcikpIHtcbiAgICAgIGV4cGVjdChjb3VudCkudG9CZUxlc3NUaGFuT3JFcXVhbChjb25jdXJyZW5jeSk7XG4gICAgICB0b3RhbCArPSBjb3VudDtcbiAgICB9XG5cbiAgICBleHBlY3QodG90YWwpLnRvQmUoYWN0aW9uQ291bnQpOyAvLyBzYW5pdHlcbiAgfVxufSk7XG5cbnRlc3QoJ2NhbiBhZGQgYXJiaXRyYXJ5IHNoZWxsYWJsZXMgd2l0aCBkaWZmZXJlbnQgYXJ0aWZhY3RzJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayhuZXcgQXBwKCksICdUZXN0U3RhY2snKTtcblxuICBjb25zdCBwaXBlbGluZSA9IG5ldyBkZWxpdmxpYi5QaXBlbGluZShzdGFjaywgJ1BpcGVsaW5lJywge1xuICAgIHJlcG86IGNyZWF0ZVRlc3RSZXBvKHN0YWNrKSxcbiAgICBwaXBlbGluZU5hbWU6ICdIZWxsb1BpcGVsaW5lJyxcbiAgfSk7XG5cbiAgY29uc3QgYWN0aW9uID0gcGlwZWxpbmUuYWRkU2hlbGxhYmxlKCdUZXN0JywgJ1NlY29uZFN0ZXAnLCB7XG4gICAgc2NyaXB0RGlyZWN0b3J5OiBfX2Rpcm5hbWUsXG4gICAgZW50cnlwb2ludDogJ3J1bi10ZXN0LnNoJyxcbiAgfSkuYWN0aW9uO1xuXG4gIHBpcGVsaW5lLmFkZFB1Ymxpc2gobmV3IFB1YihzdGFjaywgJ1B1YicpLCB7IGlucHV0QXJ0aWZhY3Q6IGFjdGlvbi5hY3Rpb25Qcm9wZXJ0aWVzLm91dHB1dHMhWzBdIH0pO1xuXG4gIGNka19leHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZUxpa2UoJ0FXUzo6Q29kZVBpcGVsaW5lOjpQaXBlbGluZScsIHtcbiAgICBTdGFnZXM6IFtcbiAgICAgIHtcbiAgICAgICAgTmFtZTogJ1NvdXJjZScsXG4gICAgICAgIEFjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBBY3Rpb25UeXBlSWQ6IHsgQ2F0ZWdvcnk6ICdTb3VyY2UnLCBPd25lcjogJ0FXUycsIFByb3ZpZGVyOiAnQ29kZUNvbW1pdCcgfSxcbiAgICAgICAgICAgIE5hbWU6ICdQdWxsJyxcbiAgICAgICAgICAgIE91dHB1dEFydGlmYWN0czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgTmFtZTogJ1NvdXJjZScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBOYW1lOiAnQnVpbGQnLFxuICAgICAgICBBY3Rpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgTmFtZTogJ0J1aWxkJyxcbiAgICAgICAgICAgIEFjdGlvblR5cGVJZDogeyBDYXRlZ29yeTogJ0J1aWxkJywgT3duZXI6ICdBV1MnLCBQcm92aWRlcjogJ0NvZGVCdWlsZCcgfSxcbiAgICAgICAgICAgIElucHV0QXJ0aWZhY3RzOiBbeyBOYW1lOiAnU291cmNlJyB9XSxcbiAgICAgICAgICAgIE91dHB1dEFydGlmYWN0czogW3sgTmFtZTogJ0FydGlmYWN0X0J1aWxkX0J1aWxkJyB9XSxcbiAgICAgICAgICAgIFJ1bk9yZGVyOiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBOYW1lOiAnVGVzdCcsXG4gICAgICAgIEFjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBBY3Rpb25UeXBlSWQ6IHsgQ2F0ZWdvcnk6ICdCdWlsZCcsIE93bmVyOiAnQVdTJywgUHJvdmlkZXI6ICdDb2RlQnVpbGQnIH0sXG4gICAgICAgICAgICBJbnB1dEFydGlmYWN0czogW3sgTmFtZTogJ0FydGlmYWN0X0J1aWxkX0J1aWxkJyB9XSxcbiAgICAgICAgICAgIE5hbWU6ICdBY3Rpb25TZWNvbmRTdGVwJyxcbiAgICAgICAgICAgIE91dHB1dEFydGlmYWN0czogW3sgTmFtZTogJ0FydGlmYWN0X1Rlc3RTdGFja1BpcGVsaW5lU2Vjb25kU3RlcDkxNzI2QzExJyB9XSxcbiAgICAgICAgICAgIFJ1bk9yZGVyOiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBOYW1lOiAnUHVibGlzaCcsXG4gICAgICAgIEFjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBBY3Rpb25UeXBlSWQ6IHsgQ2F0ZWdvcnk6ICdCdWlsZCcsIE93bmVyOiAnQVdTJywgUHJvdmlkZXI6ICdDb2RlQnVpbGQnIH0sXG4gICAgICAgICAgICBJbnB1dEFydGlmYWN0czogW3sgTmFtZTogJ0FydGlmYWN0X1Rlc3RTdGFja1BpcGVsaW5lU2Vjb25kU3RlcDkxNzI2QzExJyB9XSxcbiAgICAgICAgICAgIE5hbWU6ICdQdWJQdWJsaXNoJyxcbiAgICAgICAgICAgIFJ1bk9yZGVyOiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gIH0pKTtcbn0pO1xuXG50ZXN0KCdhdXRvQnVpbGQoKSBjYW4gYmUgdXNlZCB0byBhZGQgYXV0b21hdGljIGJ1aWxkcyB0byB0aGUgcGlwZWxpbmUnLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKG5ldyBBcHAoKSwgJ1Rlc3RTdGFjaycpO1xuXG4gIC8vIFdIRU5cbiAgbmV3IGRlbGl2bGliLlBpcGVsaW5lKHN0YWNrLCAnUGlwZWxpbmUnLCB7XG4gICAgcmVwbzogY3JlYXRlVGVzdFJlcG8oc3RhY2spLFxuICAgIHBpcGVsaW5lTmFtZTogJ0hlbGxvUGlwZWxpbmUnLFxuICAgIGF1dG9CdWlsZDogdHJ1ZSxcbiAgfSk7XG5cbiAgY2RrX2V4cGVjdChzdGFjaykubm90VG8oaGF2ZVJlc291cmNlKCdBV1M6OlNlcnZlcmxlc3M6OkFwcGxpY2F0aW9uJywge1xuICAgIExvY2F0aW9uOiB7XG4gICAgICBBcHBsaWNhdGlvbklkOiAnYXJuOmF3czpzZXJ2ZXJsZXNzcmVwbzp1cy1lYXN0LTE6Mjc3MTg3NzA5NjE1OmFwcGxpY2F0aW9ucy9naXRodWItY29kZWJ1aWxkLWxvZ3MnLFxuICAgICAgU2VtYW50aWNWZXJzaW9uOiAnMS40LjAnLFxuICAgIH0sXG4gIH0pKTtcbn0pO1xuXG50ZXN0KCdhdXRvQnVpbGQoKSBjYW4gYmUgY29uZmlndXJlZCB0byBwdWJsaXNoIGxvZ3MgcHVibGljYWxseScsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sobmV3IEFwcCgpLCAnVGVzdFN0YWNrJyk7XG5cbiAgLy8gV0hFTlxuICBuZXcgZGVsaXZsaWIuUGlwZWxpbmUoc3RhY2ssICdQaXBlbGluZScsIHtcbiAgICByZXBvOiBjcmVhdGVUZXN0UmVwbyhzdGFjayksXG4gICAgcGlwZWxpbmVOYW1lOiAnSGVsbG9QaXBlbGluZScsXG4gICAgYXV0b0J1aWxkOiB0cnVlLFxuICAgIGF1dG9CdWlsZE9wdGlvbnM6IHtcbiAgICAgIHB1YmxpY0xvZ3M6IHRydWUsXG4gICAgfSxcbiAgfSk7XG5cbiAgY2RrX2V4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKCdBV1M6OlNlcnZlcmxlc3M6OkFwcGxpY2F0aW9uJywge1xuICAgIExvY2F0aW9uOiB7XG4gICAgICBBcHBsaWNhdGlvbklkOiAnYXJuOmF3czpzZXJ2ZXJsZXNzcmVwbzp1cy1lYXN0LTE6Mjc3MTg3NzA5NjE1OmFwcGxpY2F0aW9ucy9naXRodWItY29kZWJ1aWxkLWxvZ3MnLFxuICAgICAgU2VtYW50aWNWZXJzaW9uOiAnMS40LjAnLFxuICAgIH0sXG4gICAgUGFyYW1ldGVyczoge1xuICAgICAgQ29kZUJ1aWxkUHJvamVjdE5hbWU6IHtcbiAgICAgICAgUmVmOiAnUGlwZWxpbmVBdXRvQnVpbGRQcm9qZWN0Qjk3QjQ0NDYnLFxuICAgICAgfSxcbiAgICAgIERlbGV0ZVByZXZpb3VzQ29tbWVudHM6ICd0cnVlJyxcbiAgICAgIENvbW1lbnRPblN1Y2Nlc3M6ICd0cnVlJyxcbiAgICB9LFxuICB9KSk7XG59KTtcblxudGVzdCgnYXV0b0J1aWxkKCkgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCBhIGRpZmZlcmVudCBidWlsZHNwZWMnLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKG5ldyBBcHAoKSwgJ1Rlc3RTdGFjaycpO1xuXG4gIC8vIFdIRU5cbiAgbmV3IGRlbGl2bGliLlBpcGVsaW5lKHN0YWNrLCAnUGlwZWxpbmUnLCB7XG4gICAgcmVwbzogY3JlYXRlVGVzdFJlcG8oc3RhY2spLFxuICAgIHBpcGVsaW5lTmFtZTogJ0hlbGxvUGlwZWxpbmUnLFxuICAgIGF1dG9CdWlsZDogdHJ1ZSxcbiAgICBhdXRvQnVpbGRPcHRpb25zOiB7XG4gICAgICBidWlsZFNwZWM6IGNvZGVidWlsZC5CdWlsZFNwZWMuZnJvbVNvdXJjZUZpbGVuYW1lKCdkaWZmZXJlbnQtYnVpbGRzcGVjLnlhbWwnKSxcbiAgICB9LFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGNka19leHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpDb2RlQnVpbGQ6OlByb2plY3QnLCB7XG4gICAgU291cmNlOiB7XG4gICAgICBCdWlsZFNwZWM6ICdkaWZmZXJlbnQtYnVpbGRzcGVjLnlhbWwnLFxuICAgICAgTG9jYXRpb246IHtcbiAgICAgICAgJ0ZuOjpHZXRBdHQnOiBbXG4gICAgICAgICAgJ1JlcG8wMkFDODZDRicsXG4gICAgICAgICAgJ0Nsb25lVXJsSHR0cCcsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgVHlwZTogJ0NPREVDT01NSVQnLFxuICAgIH0sXG4gIH0pKTtcbn0pO1xuXG50ZXN0KCdDb2RlQnVpbGQgUHJvamVjdCBuYW1lIG1hdGNoZXMgYnVpbGRQcm9qZWN0TmFtZSBwcm9wZXJ0eScsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sobmV3IEFwcCgpLCAnVGVzdFN0YWNrJyk7XG5cbiAgLy8gV0hFTlxuICBuZXcgZGVsaXZsaWIuUGlwZWxpbmUoc3RhY2ssICdQaXBlbGluZScsIHtcbiAgICByZXBvOiBjcmVhdGVUZXN0UmVwbyhzdGFjayksXG4gICAgcGlwZWxpbmVOYW1lOiAnSGVsbG9QaXBlbGluZScsXG4gICAgYnVpbGRQcm9qZWN0TmFtZTogJ0hlbGxvQnVpbGQnLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGNka19leHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZUxpa2UoJ0FXUzo6Q29kZUJ1aWxkOjpQcm9qZWN0Jywge1xuICAgIE5hbWU6ICdIZWxsb0J1aWxkJyxcbiAgfSkpO1xufSk7XG5cbnRlc3QoJ0NvZGVCdWlsZCBQcm9qZWN0IG5hbWUgaXMgZXh0ZW5kZWQgZnJvbSBwaXBlbGluZU5hbWUgcHJvcGVydHknLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKG5ldyBBcHAoKSwgJ1Rlc3RTdGFjaycpO1xuXG4gIC8vIFdIRU5cbiAgbmV3IGRlbGl2bGliLlBpcGVsaW5lKHN0YWNrLCAnUGlwZWxpbmUnLCB7XG4gICAgcmVwbzogY3JlYXRlVGVzdFJlcG8oc3RhY2spLFxuICAgIHBpcGVsaW5lTmFtZTogJ0hlbGxvUGlwZWxpbmUnLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGNka19leHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZUxpa2UoJ0FXUzo6Q29kZUJ1aWxkOjpQcm9qZWN0Jywge1xuICAgIE5hbWU6ICdIZWxsb1BpcGVsaW5lLUJ1aWxkJyxcbiAgfSkpO1xufSk7XG5cbnRlc3QoJ0NvZGVCdWlsZCBQcm9qZWN0IG5hbWUgaXMgbGVmdCB1bmRlZmluZWQgd2hlbiBuZWl0aGVyIGJ1aWxkUHJvamVjdE5hbWUgbm9yIHBpcGVsaW5lTmFtZSBhcmUgc3BlY2lmaWVkJywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayhuZXcgQXBwKCksICdUZXN0U3RhY2snKTtcblxuICAvLyBXSEVOXG4gIG5ldyBkZWxpdmxpYi5QaXBlbGluZShzdGFjaywgJ1BpcGVsaW5lJywge1xuICAgIHJlcG86IGNyZWF0ZVRlc3RSZXBvKHN0YWNrKSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBjZGtfZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2VMaWtlKCdBV1M6OkNvZGVCdWlsZDo6UHJvamVjdCcsIHtcbiAgICBOYW1lOiBBQlNFTlQsXG4gIH0pKTtcbn0pO1xuXG50ZXN0KCdtZXRyaWNGYWlsdXJlcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sobmV3IEFwcCgpLCAnVGVzdFN0YWNrJyk7XG4gIGNvbnN0IHBpcGVsaW5lID0gbmV3IGRlbGl2bGliLlBpcGVsaW5lKHN0YWNrLCAnUGlwZWxpbmUnLCB7XG4gICAgcmVwbzogY3JlYXRlVGVzdFJlcG8oc3RhY2spLFxuICAgIHBpcGVsaW5lTmFtZTogJ0hlbGxvUGlwZWxpbmUnLFxuICB9KTtcblxuICBleHBlY3Qoc3RhY2sucmVzb2x2ZShwaXBlbGluZS5tZXRyaWNGYWlsdXJlcyh7fSkpKS50b0VxdWFsKHtcbiAgICBkaW1lbnNpb25zOiB7IFBpcGVsaW5lOiB7IFJlZjogJ1BpcGVsaW5lQnVpbGRQaXBlbGluZTA0QzY2MjhBJyB9IH0sXG4gICAgbmFtZXNwYWNlOiAnQ0RLL0RlbGl2bGliJyxcbiAgICBtZXRyaWNOYW1lOiAnRmFpbHVyZXMnLFxuICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICB9KTtcbn0pO1xuXG50ZXN0KCdtZXRyaWNBY3Rpb25GYWlsdXJlcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sobmV3IEFwcCgpLCAnVGVzdFN0YWNrJyk7XG4gIGNvbnN0IHBpcGVsaW5lID0gbmV3IGRlbGl2bGliLlBpcGVsaW5lKHN0YWNrLCAnUGlwZWxpbmUnLCB7XG4gICAgcmVwbzogY3JlYXRlVGVzdFJlcG8oc3RhY2spLFxuICAgIHBpcGVsaW5lTmFtZTogJ0hlbGxvUGlwZWxpbmUnLFxuICB9KTtcbiAgY29uc3QgcHJvamVjdCA9IG5ldyBjb2RlYnVpbGQuUHJvamVjdChzdGFjaywgJ3B1Ymxpc2gnLCB7XG4gICAgYnVpbGRTcGVjOiBjb2RlYnVpbGQuQnVpbGRTcGVjLmZyb21PYmplY3QoeyB2ZXJzaW9uOiAnMC4yJyB9KSxcbiAgfSk7XG4gIGNvbnN0IHNjcmlwdERpcmVjdG9yeSA9IF9fZGlybmFtZTtcbiAgY29uc3QgZW50cnlwb2ludCA9ICdydW4tdGVzdC5zaCc7XG5cbiAgcGlwZWxpbmUuYWRkU2hlbGxhYmxlKCdQcmVCdWlsZCcsICdGaXJzdFN0ZXAnLCB7IHNjcmlwdERpcmVjdG9yeSwgZW50cnlwb2ludCB9KTtcbiAgcGlwZWxpbmUuYWRkU2hlbGxhYmxlKCdQcmVCdWlsZCcsICdTZWNvbmRTdGVwJywgeyBzY3JpcHREaXJlY3RvcnksIGVudHJ5cG9pbnQgfSk7XG4gIHBpcGVsaW5lLmFkZFB1Ymxpc2gobmV3IFRlc3RQdWJsaXNoYWJsZShzdGFjaywgJ1B1Ymxpc2gxJywgeyBwcm9qZWN0IH0pKTtcbiAgcGlwZWxpbmUuYWRkUHVibGlzaChuZXcgVGVzdFB1Ymxpc2hhYmxlKHN0YWNrLCAnUHVibGlzaDInLCB7IHByb2plY3QgfSkpO1xuICBwaXBlbGluZS5hZGRUZXN0KCdUZXN0MScsIHsgc2NyaXB0RGlyZWN0b3J5LCBlbnRyeXBvaW50LCBwbGF0Zm9ybTogZGVsaXZsaWIuU2hlbGxQbGF0Zm9ybS5MaW51eFVidW50dSB9KTtcbiAgcGlwZWxpbmUuYWRkVGVzdCgnVGVzdDInLCB7IHNjcmlwdERpcmVjdG9yeSwgZW50cnlwb2ludCwgcGxhdGZvcm06IGRlbGl2bGliLlNoZWxsUGxhdGZvcm0uTGludXhVYnVudHUgfSk7XG5cbiAgY29uc3QgZXhwZWN0ZWRNZXRyaWNOYW1lcyA9IFtcbiAgICAnUHVsbCcsXG4gICAgJ0J1aWxkJyxcbiAgICAnQWN0aW9uRmlyc3RTdGVwJyxcbiAgICAnQWN0aW9uU2Vjb25kU3RlcCcsXG4gICAgJ1B1Ymxpc2gxUHVibGlzaCcsXG4gICAgJ1B1Ymxpc2gyUHVibGlzaCcsXG4gICAgJ1Rlc3RUZXN0MScsXG4gICAgJ1Rlc3RUZXN0MicsXG4gIF07XG4gIGNvbnN0IGV4cGVjdGVkTWV0cmljcyA9IGV4cGVjdGVkTWV0cmljTmFtZXMubWFwKG5hbWUgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBkaW1lbnNpb25zOiB7IFBpcGVsaW5lOiB7IFJlZjogJ1BpcGVsaW5lQnVpbGRQaXBlbGluZTA0QzY2MjhBJyB9LCBBY3Rpb246IG5hbWUgfSxcbiAgICAgIG5hbWVzcGFjZTogJ0NESy9EZWxpdmxpYicsXG4gICAgICBtZXRyaWNOYW1lOiAnRmFpbHVyZXMnLFxuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICB9O1xuICB9KTtcblxuICBleHBlY3Qoc3RhY2sucmVzb2x2ZShwaXBlbGluZS5tZXRyaWNBY3Rpb25GYWlsdXJlcyh7fSkpKS50b0VxdWFsKGV4cGVjdGVkTWV0cmljcyk7XG59KTtcblxuZnVuY3Rpb24gY3JlYXRlVGVzdFBpcGVsaW5lRm9yQ29uY3VycmVuY3lUZXN0cyhzdGFjazogU3RhY2ssIHByb3BzPzogZGVsaXZsaWIuUGlwZWxpbmVQcm9wcykge1xuICBjb25zdCBwaXBlbGluZSA9IG5ldyBkZWxpdmxpYi5QaXBlbGluZShzdGFjaywgJ1BpcGVsaW5lJywge1xuICAgIHJlcG86IGNyZWF0ZVRlc3RSZXBvKHN0YWNrKSxcbiAgICAuLi5wcm9wcyxcbiAgfSk7XG5cbiAgY29uc3QgcHJvamVjdCA9IG5ldyBjb2RlYnVpbGQuUHJvamVjdChzdGFjaywgJ3B1Ymxpc2gnLCB7XG4gICAgYnVpbGRTcGVjOiBjb2RlYnVpbGQuQnVpbGRTcGVjLmZyb21PYmplY3QoeyB2ZXJzaW9uOiAnMC4yJyB9KSxcbiAgfSk7XG5cbiAgY29uc3Qgc2NyaXB0RGlyZWN0b3J5ID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJ2RlbGl2bGliLXRlc3RzJywgJ2xpbnV4Jyk7XG4gIGNvbnN0IGVudHJ5cG9pbnQgPSAndGVzdC5zaCc7XG4gIHBpcGVsaW5lLmFkZFRlc3QoJ3Rlc3QxJywgeyBzY3JpcHREaXJlY3RvcnksIGVudHJ5cG9pbnQsIHBsYXRmb3JtOiBkZWxpdmxpYi5TaGVsbFBsYXRmb3JtLkxpbnV4VWJ1bnR1IH0pO1xuICBwaXBlbGluZS5hZGRUZXN0KCd0ZXN0MicsIHsgc2NyaXB0RGlyZWN0b3J5LCBlbnRyeXBvaW50LCBwbGF0Zm9ybTogZGVsaXZsaWIuU2hlbGxQbGF0Zm9ybS5MaW51eFVidW50dSB9KTtcbiAgcGlwZWxpbmUuYWRkVGVzdCgndGVzdDMnLCB7IHNjcmlwdERpcmVjdG9yeSwgZW50cnlwb2ludCwgcGxhdGZvcm06IGRlbGl2bGliLlNoZWxsUGxhdGZvcm0uTGludXhVYnVudHUgfSk7XG4gIHBpcGVsaW5lLmFkZFRlc3QoJ3Rlc3Q0JywgeyBzY3JpcHREaXJlY3RvcnksIGVudHJ5cG9pbnQsIHBsYXRmb3JtOiBkZWxpdmxpYi5TaGVsbFBsYXRmb3JtLkxpbnV4VWJ1bnR1IH0pO1xuICBwaXBlbGluZS5hZGRUZXN0KCd0ZXN0NScsIHsgc2NyaXB0RGlyZWN0b3J5LCBlbnRyeXBvaW50LCBwbGF0Zm9ybTogZGVsaXZsaWIuU2hlbGxQbGF0Zm9ybS5MaW51eFVidW50dSB9KTtcbiAgcGlwZWxpbmUuYWRkUHVibGlzaChuZXcgVGVzdFB1Ymxpc2hhYmxlKHN0YWNrLCAncHViMScsIHsgcHJvamVjdCB9KSk7XG4gIHBpcGVsaW5lLmFkZFB1Ymxpc2gobmV3IFRlc3RQdWJsaXNoYWJsZShzdGFjaywgJ3B1YjInLCB7IHByb2plY3QgfSkpO1xuICBwaXBlbGluZS5hZGRQdWJsaXNoKG5ldyBUZXN0UHVibGlzaGFibGUoc3RhY2ssICdwdWIzJywgeyBwcm9qZWN0IH0pKTtcbiAgcGlwZWxpbmUuYWRkUHVibGlzaChuZXcgVGVzdFB1Ymxpc2hhYmxlKHN0YWNrLCAncHViNCcsIHsgcHJvamVjdCB9KSk7XG4gIHBpcGVsaW5lLmFkZFB1Ymxpc2gobmV3IFRlc3RQdWJsaXNoYWJsZShzdGFjaywgJ3B1YjUnLCB7IHByb2plY3QgfSkpO1xuICBwaXBlbGluZS5hZGRQdWJsaXNoKG5ldyBUZXN0UHVibGlzaGFibGUoc3RhY2ssICdwdWI2JywgeyBwcm9qZWN0IH0pKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFN5bnRoVXRpbHMuc3ludGhlc2l6ZShzdGFjaykudGVtcGxhdGU7XG4gIHJldHVybiB0ZW1wbGF0ZS5SZXNvdXJjZXMuUGlwZWxpbmVCdWlsZFBpcGVsaW5lMDRDNjYyOEEuUHJvcGVydGllcy5TdGFnZXM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVRlc3RSZXBvKHN0YWNrOiBTdGFjaykge1xuICByZXR1cm4gbmV3IGRlbGl2bGliLkNvZGVDb21taXRSZXBvKG5ldyBjb2RlY29tbWl0LlJlcG9zaXRvcnkoc3RhY2ssICdSZXBvJywgeyByZXBvc2l0b3J5TmFtZTogJ3Rlc3QnIH0pKTtcbn1cblxuY2xhc3MgVGVzdFB1Ymxpc2hhYmxlIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgZGVsaXZsaWIuSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjb2RlYnVpbGQuSVByb2plY3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IHsgcHJvamVjdDogY29kZWJ1aWxkLklQcm9qZWN0IH0pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5wcm9qZWN0ID0gcHJvcHMucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBkZWxpdmxpYi5BZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICB9KSk7XG4gIH1cbn1cblxuY2xhc3MgUHViIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgZGVsaXZsaWIuSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjb2RlYnVpbGQuSVByb2plY3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnByb2plY3QgPSBuZXcgY29kZWJ1aWxkLlBpcGVsaW5lUHJvamVjdCh0aGlzLCAnUHJvamVjdCcpO1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IGRlbGl2bGliLkFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgIH0pKTtcbiAgfVxufVxuXG4iXX0=
@@ -1,3 +0,0 @@
1
- import { PropertyMatcher } from '@monocdk-experiment/assert';
2
- import '@monocdk-experiment/assert/jest';
3
- export declare function containsSlice(elements: any[]): PropertyMatcher;