@aws-cdk-testing/cli-integ 3.2.4 → 3.3.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/lib/cli/run-suite.js +6 -1
- package/lib/cli/run-suite.ts +6 -0
- package/lib/integ-test.js +3 -13
- package/lib/integ-test.ts +2 -13
- package/lib/process.d.ts +45 -0
- package/lib/process.js +97 -0
- package/lib/process.ts +154 -0
- package/lib/shell.d.ts +51 -0
- package/lib/shell.js +81 -20
- package/lib/shell.ts +144 -17
- package/lib/with-cdk-app.d.ts +4 -1
- package/lib/with-cdk-app.js +6 -4
- package/lib/with-cdk-app.ts +9 -2
- package/lib/with-cli-lib.js +2 -1
- package/lib/with-cli-lib.ts +1 -0
- package/package.json +5 -4
- package/resources/cdk-apps/app/app.js +36 -25
- package/resources/integ.jest.config.js +2 -3
- package/tests/cli-integ-tests/cdk---exclusively-selects-only-selected-stack.integtest.js +24 -0
- package/tests/cli-integ-tests/cdk---exclusively-selects-only-selected-stack.integtest.ts +29 -0
- package/tests/cli-integ-tests/cdk-assets/cdk-assets-uses-profile.integtest.js +80 -0
- package/tests/cli-integ-tests/cdk-assets/cdk-assets-uses-profile.integtest.ts +92 -0
- package/tests/cli-integ-tests/cdk-automatic-ordering-with-concurrency.integtest.js +11 -0
- package/tests/cli-integ-tests/cdk-automatic-ordering-with-concurrency.integtest.ts +15 -0
- package/tests/cli-integ-tests/cdk-automatic-ordering.integtest.js +11 -0
- package/tests/cli-integ-tests/cdk-automatic-ordering.integtest.ts +15 -0
- package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and---no-rollback-is-removed-from-flags.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and---no-rollback-is-removed-from-flags.integtest.js +35 -0
- package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and---no-rollback-is-removed-from-flags.integtest.ts +40 -0
- package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and-change-contains-a-replacement.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and-change-contains-a-replacement.integtest.js +35 -0
- package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and-change-contains-a-replacement.integtest.ts +40 -0
- package/tests/cli-integ-tests/cdk-automatic-rollback-if-replacement-and---no-rollback-is-removed-from-flags.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-automatic-rollback-if-replacement-and---no-rollback-is-removed-from-flags.integtest.js +26 -0
- package/tests/cli-integ-tests/cdk-automatic-rollback-if-replacement-and---no-rollback-is-removed-from-flags.integtest.ts +29 -0
- package/tests/cli-integ-tests/cdk-bootstrap-a-customized-template-vendor-will-not-overwrite-the-default-template.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-a-customized-template-vendor-will-not-overwrite-the-default-template.integtest.js +39 -0
- package/tests/cli-integ-tests/cdk-bootstrap-a-customized-template-vendor-will-not-overwrite-the-default-template.integtest.ts +42 -0
- package/tests/cli-integ-tests/cdk-bootstrap-add-tags.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-add-tags.integtest.js +25 -0
- package/tests/cli-integ-tests/cdk-bootstrap-add-tags.integtest.ts +26 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-add-tags-then-update-tags-during-re-bootstrap.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-add-tags-then-update-tags-during-re-bootstrap.integtest.js +27 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-add-tags-then-update-tags-during-re-bootstrap.integtest.ts +28 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-and-deploy-if-omitting-execution-policies.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-and-deploy-if-omitting-execution-policies.integtest.js +19 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-and-deploy-if-omitting-execution-policies.integtest.ts +21 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-bootstrap-without-execution.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-bootstrap-without-execution.integtest.js +18 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-bootstrap-without-execution.integtest.ts +22 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-create-a-legacy-bootstrap-stack-with---public-access-block-configuration-false.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-create-a-legacy-bootstrap-stack-with---public-access-block-configuration-false.integtest.js +20 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-create-a-legacy-bootstrap-stack-with---public-access-block-configuration-false.integtest.ts +21 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-create-multiple-legacy-bootstrap-stacks.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-create-multiple-legacy-bootstrap-stacks.integtest.js +26 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-create-multiple-legacy-bootstrap-stacks.integtest.ts +27 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-modern-synthesized-stack-even-if-bootstrap-stack-name-is-unknown.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-modern-synthesized-stack-even-if-bootstrap-stack-name-is-unknown.integtest.js +22 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-modern-synthesized-stack-even-if-bootstrap-stack-name-is-unknown.integtest.ts +24 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-with-session-tags-on-the-deploy.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-with-session-tags-on-the-deploy.integtest.js +23 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-with-session-tags-on-the-deploy.integtest.ts +25 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-without-execution-role-and-with-session-tags-on-deploy-role.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-without-execution-role-and-with-session-tags-on-deploy-role.integtest.js +20 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-without-execution-role-and-with-session-tags-on-deploy-role.integtest.ts +22 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-dump-the-template.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-dump-the-template.integtest.js +29 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-dump-the-template.integtest.ts +32 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-remove-custompermissionsboundary.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-remove-custompermissionsboundary.integtest.js +61 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-remove-custompermissionsboundary.integtest.ts +77 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-remove-trusted-account.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-remove-trusted-account.integtest.js +25 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-remove-trusted-account.integtest.ts +30 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-(with-slashes)-to-bootstrap.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-(with-slashes)-to-bootstrap.integtest.js +14 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-(with-slashes)-to-bootstrap.integtest.ts +15 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-to-bootstrap.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-to-bootstrap.integtest.js +14 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-to-bootstrap.integtest.ts +15 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-default-permissions-boundary-to-bootstrap.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-default-permissions-boundary-to-bootstrap.integtest.js +14 -0
- package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-default-permissions-boundary-to-bootstrap.integtest.ts +15 -0
- package/tests/cli-integ-tests/cdk-bootstrap-create-ecr-with-tag-immutability-to-set-on.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-create-ecr-with-tag-immutability-to-set-on.integtest.js +27 -0
- package/tests/cli-integ-tests/cdk-bootstrap-create-ecr-with-tag-immutability-to-set-on.integtest.ts +34 -0
- package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap-(with-docker-image).integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap-(with-docker-image).integtest.js +20 -0
- package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap-(with-docker-image).integtest.ts +22 -0
- package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap.integtest.js +20 -0
- package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap.integtest.ts +22 -0
- package/tests/cli-integ-tests/cdk-bootstrap-deploy-old-style-synthesis-to-new-style-bootstrap.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-deploy-old-style-synthesis-to-new-style-bootstrap.integtest.js +19 -0
- package/tests/cli-integ-tests/cdk-bootstrap-deploy-old-style-synthesis-to-new-style-bootstrap.integtest.ts +21 -0
- package/tests/cli-integ-tests/cdk-bootstrap-switch-on-termination-protection.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-switch-on-termination-protection.integtest.js +23 -0
- package/tests/cli-integ-tests/cdk-bootstrap-switch-on-termination-protection.integtest.ts +24 -0
- package/tests/cli-integ-tests/cdk-bootstrap-upgrade-legacy-bootstrap-stack-to-new-bootstrap-stack-while-in-use.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-bootstrap-upgrade-legacy-bootstrap-stack-to-new-bootstrap-stack-while-in-use.integtest.js +42 -0
- package/tests/cli-integ-tests/cdk-bootstrap-upgrade-legacy-bootstrap-stack-to-new-bootstrap-stack-while-in-use.integtest.ts +47 -0
- package/tests/cli-integ-tests/cdk-can-still-load-old-assemblies.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-can-still-load-old-assemblies.integtest.js +49 -0
- package/tests/cli-integ-tests/cdk-can-still-load-old-assemblies.integtest.ts +57 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---fail-on-multiple-stacks-exits-with-error-if-any-of-the-stacks-contains-a-diff.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---fail-on-multiple-stacks-exits-with-error-if-any-of-the-stacks-contains-a-diff.integtest.js +15 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---fail-on-multiple-stacks-exits-with-error-if-any-of-the-stacks-contains-a-diff.integtest.ts +22 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---fail-with-multiple-stack-exits-with-if-any-of-the-stacks-contains-a-diff.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---fail-with-multiple-stack-exits-with-if-any-of-the-stacks-contains-a-diff.integtest.js +15 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---fail-with-multiple-stack-exits-with-if-any-of-the-stacks-contains-a-diff.integtest.ts +22 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---quiet-does-not-print-there-were-no-differences-message-for-stacks-which-have-no-differences.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---quiet-does-not-print-there-were-no-differences-message-for-stacks-which-have-no-differences.integtest.js +14 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---quiet-does-not-print-there-were-no-differences-message-for-stacks-which-have-no-differences.integtest.ts +19 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-changes-are-present.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-changes-are-present.integtest.js +9 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-changes-are-present.integtest.ts +14 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-access-control-config.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-access-control-config.integtest.js +8 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-access-control-config.integtest.ts +13 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-assignment.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-assignment.integtest.js +8 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-assignment.integtest.ts +13 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-perm-set-with-managed-policy.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-perm-set-with-managed-policy.integtest.js +8 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-perm-set-with-managed-policy.integtest.ts +13 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-perm-set-without-managed-policy.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-perm-set-without-managed-policy.integtest.js +8 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-perm-set-without-managed-policy.integtest.ts +13 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-access-control-information.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-access-control-information.integtest.js +30 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-access-control-information.integtest.ts +35 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-assignment-information.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-assignment-information.integtest.js +28 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-assignment-information.integtest.ts +37 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-with-managed-policy-information.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-with-managed-policy-information.integtest.js +27 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-with-managed-policy-information.integtest.ts +35 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-without-managed-policy-information.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-without-managed-policy-information.integtest.js +30 -0
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-without-managed-policy-information.integtest.ts +37 -0
- package/tests/cli-integ-tests/cdk-cdk-diff-doesnt-show-resource-metadata-changes.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff-doesnt-show-resource-metadata-changes.integtest.js +18 -0
- package/tests/cli-integ-tests/cdk-cdk-diff-doesnt-show-resource-metadata-changes.integtest.ts +23 -0
- package/tests/cli-integ-tests/cdk-cdk-diff-shows-resource-metadata-changes-with---no-change-set.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff-shows-resource-metadata-changes-with---no-change-set.integtest.js +18 -0
- package/tests/cli-integ-tests/cdk-cdk-diff-shows-resource-metadata-changes-with---no-change-set.integtest.ts +23 -0
- package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-and-custom-toolkit-stack-name-and-qualifier-does-not-fail.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-and-custom-toolkit-stack-name-and-qualifier-does-not-fail.integtest.js +35 -0
- package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-and-custom-toolkit-stack-name-and-qualifier-does-not-fail.integtest.ts +38 -0
- package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-does-not-fail.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-does-not-fail.integtest.js +23 -0
- package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-does-not-fail.integtest.ts +28 -0
- package/tests/cli-integ-tests/cdk-cdk-diff.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-diff.integtest.js +13 -0
- package/tests/cli-integ-tests/cdk-cdk-diff.integtest.ts +18 -0
- package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json---long.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json---long.integtest.js +45 -0
- package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json---long.integtest.ts +50 -0
- package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json.integtest.js +75 -0
- package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json.integtest.ts +95 -0
- package/tests/cli-integ-tests/cdk-cdk-ls.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-ls.integtest.js +32 -0
- package/tests/cli-integ-tests/cdk-cdk-ls.integtest.ts +36 -0
- package/tests/cli-integ-tests/cdk-cdk-notices-are-displayed-correctly.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-notices-are-displayed-correctly.integtest.js +38 -0
- package/tests/cli-integ-tests/cdk-cdk-notices-are-displayed-correctly.integtest.ts +42 -0
- package/tests/cli-integ-tests/cdk-cdk-notices-with---unacknowledged.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-notices-with---unacknowledged.integtest.js +11 -0
- package/tests/cli-integ-tests/cdk-cdk-notices-with---unacknowledged.integtest.ts +14 -0
- package/tests/cli-integ-tests/cdk-cdk-synth-add-the-metadata-properties-expected-by-sam.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-synth-add-the-metadata-properties-expected-by-sam.integtest.js +111 -0
- package/tests/cli-integ-tests/cdk-cdk-synth-add-the-metadata-properties-expected-by-sam.integtest.ts +126 -0
- package/tests/cli-integ-tests/cdk-cdk-synth-bundled-functions-as-expected.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-synth-bundled-functions-as-expected.integtest.js +74 -0
- package/tests/cli-integ-tests/cdk-cdk-synth-bundled-functions-as-expected.integtest.ts +80 -0
- package/tests/cli-integ-tests/cdk-cdk-synth.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-cdk-synth.integtest.js +40 -0
- package/tests/cli-integ-tests/cdk-cdk-synth.integtest.ts +53 -0
- package/tests/cli-integ-tests/cdk-ci-output-to-stderr.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-ci-output-to-stderr.integtest.js +16 -0
- package/tests/cli-integ-tests/cdk-ci-output-to-stderr.integtest.ts +19 -0
- package/tests/cli-integ-tests/cdk-ci-true-output-to-stdout.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-ci-true-output-to-stdout.integtest.js +24 -0
- package/tests/cli-integ-tests/cdk-ci-true-output-to-stdout.integtest.ts +28 -0
- package/tests/cli-integ-tests/cdk-construct-with-builtin-lambda-function.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-construct-with-builtin-lambda-function.integtest.js +11 -0
- package/tests/cli-integ-tests/cdk-construct-with-builtin-lambda-function.integtest.ts +14 -0
- package/tests/cli-integ-tests/cdk-context-in-stage-propagates-to-top.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-context-in-stage-propagates-to-top.integtest.js +15 -0
- package/tests/cli-integ-tests/cdk-context-in-stage-propagates-to-top.integtest.ts +20 -0
- package/tests/cli-integ-tests/cdk-context-setting.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-context-setting.integtest.js +26 -0
- package/tests/cli-integ-tests/cdk-context-setting.integtest.ts +33 -0
- package/tests/cli-integ-tests/cdk-deploy---method-direct.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy---method-direct.integtest.js +18 -0
- package/tests/cli-integ-tests/cdk-deploy---method-direct.integtest.ts +23 -0
- package/tests/cli-integ-tests/cdk-deploy-all-concurrently.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-all-concurrently.integtest.js +13 -0
- package/tests/cli-integ-tests/cdk-deploy-all-concurrently.integtest.ts +17 -0
- package/tests/cli-integ-tests/cdk-deploy-all.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-all.integtest.js +10 -0
- package/tests/cli-integ-tests/cdk-deploy-all.integtest.ts +14 -0
- package/tests/cli-integ-tests/cdk-deploy-and-test-stack-with-lambda-asset.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-and-test-stack-with-lambda-asset.integtest.js +22 -0
- package/tests/cli-integ-tests/cdk-deploy-and-test-stack-with-lambda-asset.integtest.ts +31 -0
- package/tests/cli-integ-tests/cdk-deploy-deletes-all-notification-arns-when-empty-array-is-passed.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-deletes-all-notification-arns-when-empty-array-is-passed.integtest.js +41 -0
- package/tests/cli-integ-tests/cdk-deploy-deletes-all-notification-arns-when-empty-array-is-passed.integtest.ts +50 -0
- package/tests/cli-integ-tests/cdk-deploy-no-stacks-error.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-no-stacks-error.integtest.js +13 -0
- package/tests/cli-integ-tests/cdk-deploy-no-stacks-error.integtest.ts +18 -0
- package/tests/cli-integ-tests/cdk-deploy-no-stacks-with---ignore-no-stacks.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-no-stacks-with---ignore-no-stacks.integtest.js +14 -0
- package/tests/cli-integ-tests/cdk-deploy-no-stacks-with---ignore-no-stacks.integtest.ts +17 -0
- package/tests/cli-integ-tests/cdk-deploy-preserves-existing-notification-arns-when-not-specified.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-preserves-existing-notification-arns-when-not-specified.integtest.js +38 -0
- package/tests/cli-integ-tests/cdk-deploy-preserves-existing-notification-arns-when-not-specified.integtest.ts +51 -0
- package/tests/cli-integ-tests/cdk-deploy-stack-with-docker-asset.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-stack-with-docker-asset.integtest.js +8 -0
- package/tests/cli-integ-tests/cdk-deploy-stack-with-docker-asset.integtest.ts +11 -0
- package/tests/cli-integ-tests/cdk-deploy-stack-with-lambda-asset-to-object-lock-enabled-asset-bucket.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-stack-with-lambda-asset-to-object-lock-enabled-asset-bucket.integtest.js +39 -0
- package/tests/cli-integ-tests/cdk-deploy-stack-with-lambda-asset-to-object-lock-enabled-asset-bucket.integtest.ts +42 -0
- package/tests/cli-integ-tests/cdk-deploy-stack-without-resource.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-stack-without-resource.integtest.js +17 -0
- package/tests/cli-integ-tests/cdk-deploy-stack-without-resource.integtest.ts +32 -0
- package/tests/cli-integ-tests/cdk-deploy-wildcard-with-outputs.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-wildcard-with-outputs.integtest.js +23 -0
- package/tests/cli-integ-tests/cdk-deploy-wildcard-with-outputs.integtest.ts +28 -0
- package/tests/cli-integ-tests/cdk-deploy-with-import-existing-resources-true.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-with-import-existing-resources-true.integtest.js +28 -0
- package/tests/cli-integ-tests/cdk-deploy-with-import-existing-resources-true.integtest.ts +29 -0
- package/tests/cli-integ-tests/cdk-deploy-with-method-direct-and-import-existing-resources-fails.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-with-method-direct-and-import-existing-resources-fails.integtest.js +16 -0
- package/tests/cli-integ-tests/cdk-deploy-with-method-direct-and-import-existing-resources-fails.integtest.ts +17 -0
- package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-flag.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-flag.integtest.js +28 -0
- package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-flag.integtest.ts +36 -0
- package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop-and-flag.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop-and-flag.integtest.js +37 -0
- package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop-and-flag.integtest.ts +45 -0
- package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop.integtest.js +31 -0
- package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop.integtest.ts +37 -0
- package/tests/cli-integ-tests/cdk-deploy-with-parameters-multi.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-with-parameters-multi.integtest.js +26 -0
- package/tests/cli-integ-tests/cdk-deploy-with-parameters-multi.integtest.ts +33 -0
- package/tests/cli-integ-tests/cdk-deploy-with-parameters.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-with-parameters.integtest.js +20 -0
- package/tests/cli-integ-tests/cdk-deploy-with-parameters.integtest.ts +26 -0
- package/tests/cli-integ-tests/cdk-deploy-with-role.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-with-role.integtest.js +97 -0
- package/tests/cli-integ-tests/cdk-deploy-with-role.integtest.ts +119 -0
- package/tests/cli-integ-tests/cdk-deploy-with-wildcard-and-parameters.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-with-wildcard-and-parameters.integtest.js +19 -0
- package/tests/cli-integ-tests/cdk-deploy-with-wildcard-and-parameters.integtest.ts +22 -0
- package/tests/cli-integ-tests/cdk-deploy-without-execute-a-named-change-set.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-without-execute-a-named-change-set.integtest.js +28 -0
- package/tests/cli-integ-tests/cdk-deploy-without-execute-a-named-change-set.integtest.ts +36 -0
- package/tests/cli-integ-tests/cdk-deploy-without-import-existing-resources.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy-without-import-existing-resources.integtest.js +27 -0
- package/tests/cli-integ-tests/cdk-deploy-without-import-existing-resources.integtest.ts +28 -0
- package/tests/cli-integ-tests/cdk-deploy.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-deploy.integtest.js +15 -0
- package/tests/cli-integ-tests/cdk-deploy.integtest.ts +20 -0
- package/tests/cli-integ-tests/cdk-destroy-interactive.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-destroy-interactive.integtest.js +32 -0
- package/tests/cli-integ-tests/cdk-destroy-interactive.integtest.ts +36 -0
- package/tests/cli-integ-tests/cdk-doubly-nested-stack.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-doubly-nested-stack.integtest.js +10 -0
- package/tests/cli-integ-tests/cdk-doubly-nested-stack.integtest.ts +12 -0
- package/tests/cli-integ-tests/cdk-enablediffnofail.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-enablediffnofail.integtest.js +34 -0
- package/tests/cli-integ-tests/cdk-enablediffnofail.integtest.ts +44 -0
- package/tests/cli-integ-tests/cdk-failed-deploy-does-not-hang.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-failed-deploy-does-not-hang.integtest.js +9 -0
- package/tests/cli-integ-tests/cdk-failed-deploy-does-not-hang.integtest.ts +12 -0
- package/tests/cli-integ-tests/cdk-fast-deploy.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-fast-deploy.integtest.js +35 -0
- package/tests/cli-integ-tests/cdk-fast-deploy.integtest.ts +41 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-ecr-images.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-ecr-images.integtest.js +39 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-ecr-images.integtest.ts +48 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-s3-objects.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-s3-objects.integtest.js +43 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-s3-objects.integtest.ts +51 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-ecr-images.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-ecr-images.integtest.js +39 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-ecr-images.integtest.ts +48 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-s3-objects.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-s3-objects.integtest.js +44 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-s3-objects.integtest.ts +52 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-ecr-images.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-ecr-images.integtest.js +38 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-ecr-images.integtest.ts +47 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-s3-objects.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-s3-objects.integtest.js +54 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-s3-objects.integtest.ts +63 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-ecr-images.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-ecr-images.integtest.js +45 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-ecr-images.integtest.ts +55 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-s3-objects.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-s3-objects.integtest.js +53 -0
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-s3-objects.integtest.ts +63 -0
- package/tests/cli-integ-tests/cdk-generating-and-loading-assembly.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-generating-and-loading-assembly.integtest.js +44 -0
- package/tests/cli-integ-tests/cdk-generating-and-loading-assembly.integtest.ts +52 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-detects-failed-deployment-and-errors.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-detects-failed-deployment-and-errors.integtest.js +24 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-detects-failed-deployment-and-errors.integtest.ts +29 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-waits-for-deployment-to-complete.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-waits-for-deployment-to-complete.integtest.js +33 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-waits-for-deployment-to-complete.integtest.ts +45 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-appsync-apis-with-many-functions.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-appsync-apis-with-many-functions.integtest.js +30 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-appsync-apis-with-many-functions.integtest.ts +36 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-ecs-service.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-ecs-service.integtest.js +33 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-ecs-service.integtest.ts +41 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-fn::importvalue-intrinsic.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-fn::importvalue-intrinsic.integtest.js +46 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-fn::importvalue-intrinsic.integtest.ts +53 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-lambda-functions-description-and-environment-variables.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-lambda-functions-description-and-environment-variables.integtest.js +36 -0
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-lambda-functions-description-and-environment-variables.integtest.ts +43 -0
- package/tests/cli-integ-tests/cdk-hotswap-ecs-deployment-respects-properties-override.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-hotswap-ecs-deployment-respects-properties-override.integtest.js +51 -0
- package/tests/cli-integ-tests/cdk-hotswap-ecs-deployment-respects-properties-override.integtest.ts +59 -0
- package/tests/cli-integ-tests/cdk-iam-diff.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-iam-diff.integtest.js +18 -0
- package/tests/cli-integ-tests/cdk-iam-diff.integtest.ts +23 -0
- package/tests/cli-integ-tests/cdk-import-interactive.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-import-interactive.integtest.js +46 -0
- package/tests/cli-integ-tests/cdk-import-interactive.integtest.ts +53 -0
- package/tests/cli-integ-tests/cdk-lib-cli-lib-deploy.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-lib-cli-lib-deploy.integtest.js +27 -0
- package/tests/cli-integ-tests/cdk-lib-cli-lib-deploy.integtest.ts +32 -0
- package/tests/cli-integ-tests/cdk-lib-cli-lib-list.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-lib-cli-lib-list.integtest.js +9 -0
- package/tests/cli-integ-tests/cdk-lib-cli-lib-list.integtest.ts +12 -0
- package/tests/cli-integ-tests/cdk-lib-cli-lib-synth.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-lib-cli-lib-synth.integtest.js +22 -0
- package/tests/cli-integ-tests/cdk-lib-cli-lib-synth.integtest.ts +27 -0
- package/tests/cli-integ-tests/cdk-lib-security-related-changes-without-a-cli-are-expected-to-fail-when-approval-is-required.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-lib-security-related-changes-without-a-cli-are-expected-to-fail-when-approval-is-required.integtest.js +20 -0
- package/tests/cli-integ-tests/cdk-lib-security-related-changes-without-a-cli-are-expected-to-fail-when-approval-is-required.integtest.ts +32 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-csharp.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-csharp.integtest.js +9 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-csharp.integtest.ts +11 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-java.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-java.integtest.js +9 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-java.integtest.ts +11 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-python.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-python.integtest.js +9 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-python.integtest.ts +11 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-typescript.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-typescript.integtest.js +9 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-typescript.integtest.ts +11 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-csharp.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-csharp.integtest.js +9 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-csharp.integtest.ts +13 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-java.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-java.integtest.js +9 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-java.integtest.ts +13 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-python.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-python.integtest.js +9 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-python.integtest.ts +13 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-typescript.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-typescript.integtest.js +9 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-typescript.integtest.ts +13 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-generates-migrate.json.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-generates-migrate.json.integtest.js +16 -0
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-generates-migrate.json.integtest.ts +20 -0
- package/tests/cli-integ-tests/cdk-migrate/testcase.d.ts +3 -0
- package/tests/cli-integ-tests/cdk-migrate/testcase.js +55 -0
- package/tests/cli-integ-tests/cdk-migrate/testcase.ts +69 -0
- package/tests/cli-integ-tests/cdk-nested-stack-with-parameters.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-nested-stack-with-parameters.integtest.js +22 -0
- package/tests/cli-integ-tests/cdk-nested-stack-with-parameters.integtest.ts +28 -0
- package/tests/cli-integ-tests/cdk-requests-go-through-a-proxy-when-configured.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-requests-go-through-a-proxy-when-configured.integtest.js +36 -0
- package/tests/cli-integ-tests/cdk-requests-go-through-a-proxy-when-configured.integtest.ts +39 -0
- package/tests/cli-integ-tests/cdk-sam-can-locally-test-the-synthesized-cdk-application.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-sam-can-locally-test-the-synthesized-cdk-application.integtest.js +14 -0
- package/tests/cli-integ-tests/cdk-sam-can-locally-test-the-synthesized-cdk-application.integtest.ts +25 -0
- package/tests/cli-integ-tests/cdk-security-related-changes-without-a-cli-are-expected-to-fail.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-security-related-changes-without-a-cli-are-expected-to-fail.integtest.js +20 -0
- package/tests/cli-integ-tests/cdk-security-related-changes-without-a-cli-are-expected-to-fail.integtest.ts +30 -0
- package/tests/cli-integ-tests/cdk-skips-notice-refresh.integtest.d.ts +6 -0
- package/tests/cli-integ-tests/cdk-skips-notice-refresh.integtest.js +22 -0
- package/tests/cli-integ-tests/cdk-skips-notice-refresh.integtest.ts +26 -0
- package/tests/cli-integ-tests/cdk-ssm-parameter-provider-error.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-ssm-parameter-provider-error.integtest.js +10 -0
- package/tests/cli-integ-tests/cdk-ssm-parameter-provider-error.integtest.ts +18 -0
- package/tests/cli-integ-tests/cdk-stack-in-update_rollback_complete-state-can-be-updated.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-stack-in-update_rollback_complete-state-can-be-updated.integtest.js +41 -0
- package/tests/cli-integ-tests/cdk-stack-in-update_rollback_complete-state-can-be-updated.integtest.ts +59 -0
- package/tests/cli-integ-tests/cdk-stage-with-bundled-lambda-function.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-stage-with-bundled-lambda-function.integtest.js +10 -0
- package/tests/cli-integ-tests/cdk-stage-with-bundled-lambda-function.integtest.ts +13 -0
- package/tests/cli-integ-tests/cdk-synth---quiet-can-be-specified-in-cdk.json.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-synth---quiet-can-be-specified-in-cdk.json.integtest.js +17 -0
- package/tests/cli-integ-tests/cdk-synth---quiet-can-be-specified-in-cdk.json.integtest.ts +20 -0
- package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-can-be-suppressed.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-can-be-suppressed.integtest.js +12 -0
- package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-can-be-suppressed.integtest.ts +15 -0
- package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-leads-to-failure.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-leads-to-failure.integtest.js +14 -0
- package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-leads-to-failure.integtest.ts +18 -0
- package/tests/cli-integ-tests/cdk-templates-on-disk-contain-metadata-resource.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-templates-on-disk-contain-metadata-resource.integtest.js +18 -0
- package/tests/cli-integ-tests/cdk-templates-on-disk-contain-metadata-resource.integtest.ts +25 -0
- package/tests/cli-integ-tests/cdk-termination-protection.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-termination-protection.integtest.js +14 -0
- package/tests/cli-integ-tests/cdk-termination-protection.integtest.ts +19 -0
- package/tests/cli-integ-tests/cdk-test-cdk-rollback---force.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-test-cdk-rollback---force.integtest.js +40 -0
- package/tests/cli-integ-tests/cdk-test-cdk-rollback---force.integtest.ts +48 -0
- package/tests/cli-integ-tests/cdk-test-cdk-rollback.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-test-cdk-rollback.integtest.js +33 -0
- package/tests/cli-integ-tests/cdk-test-cdk-rollback.integtest.ts +38 -0
- package/tests/cli-integ-tests/cdk-test-migrate-deployment-for-app-with-localfile-source-in-migrate.json.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-test-migrate-deployment-for-app-with-localfile-source-in-migrate.json.integtest.js +45 -0
- package/tests/cli-integ-tests/cdk-test-migrate-deployment-for-app-with-localfile-source-in-migrate.json.integtest.ts +56 -0
- package/tests/cli-integ-tests/cdk-test-resource-import-with-construct-that-requires-bundling.integtest.d.ts +6 -0
- package/tests/cli-integ-tests/cdk-test-resource-import-with-construct-that-requires-bundling.integtest.js +59 -0
- package/tests/cli-integ-tests/cdk-test-resource-import-with-construct-that-requires-bundling.integtest.ts +74 -0
- package/tests/cli-integ-tests/cdk-test-resource-import.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-test-resource-import.integtest.js +51 -0
- package/tests/cli-integ-tests/cdk-test-resource-import.integtest.ts +64 -0
- package/tests/cli-integ-tests/cdk-two-ways-of-showing-the-version.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-two-ways-of-showing-the-version.integtest.js +10 -0
- package/tests/cli-integ-tests/cdk-two-ways-of-showing-the-version.integtest.ts +14 -0
- package/tests/cli-integ-tests/cdk-update-to-stack-in-rollback_complete-state-will-delete-stack-and-create-a-new-one.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-update-to-stack-in-rollback_complete-state-will-delete-stack-and-create-a-new-one.integtest.js +34 -0
- package/tests/cli-integ-tests/cdk-update-to-stack-in-rollback_complete-state-will-delete-stack-and-create-a-new-one.integtest.ts +47 -0
- package/tests/cli-integ-tests/cdk-vpc-lookup.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/cdk-vpc-lookup.integtest.js +21 -0
- package/tests/cli-integ-tests/cdk-vpc-lookup.integtest.ts +26 -0
- package/tests/cli-integ-tests/proxy.integtest.js +1 -2
- package/tests/cli-integ-tests/proxy.integtest.ts +0 -1
- package/tests/cli-integ-tests/bootstrapping.integtest.js +0 -431
- package/tests/cli-integ-tests/bootstrapping.integtest.ts +0 -517
- package/tests/cli-integ-tests/cli-lib.integtest.js +0 -62
- package/tests/cli-integ-tests/cli-lib.integtest.ts +0 -90
- package/tests/cli-integ-tests/cli.integtest.js +0 -2187
- package/tests/cli-integ-tests/cli.integtest.ts +0 -2969
- package/tests/cli-integ-tests/garbage-collection.integtest.js +0 -314
- package/tests/cli-integ-tests/garbage-collection.integtest.ts +0 -392
- /package/tests/cli-integ-tests/{bootstrapping.integtest.d.ts → cdk---exclusively-selects-only-selected-stack.integtest.d.ts} +0 -0
- /package/tests/cli-integ-tests/{cli-lib.integtest.d.ts → cdk-assets/cdk-assets-uses-profile.integtest.d.ts} +0 -0
- /package/tests/cli-integ-tests/{cli.integtest.d.ts → cdk-automatic-ordering-with-concurrency.integtest.d.ts} +0 -0
- /package/tests/cli-integ-tests/{garbage-collection.integtest.d.ts → cdk-automatic-ordering.integtest.d.ts} +0 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { DescribeStacksCommand, GetTemplateCommand } from '@aws-sdk/client-cloudformation';
|
|
4
|
+
import { integTest, withDefaultFixture } from '../../lib';
|
|
5
|
+
|
|
6
|
+
jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
7
|
+
|
|
8
|
+
integTest(
|
|
9
|
+
'test resource import with construct that requires bundling',
|
|
10
|
+
withDefaultFixture(async (fixture) => {
|
|
11
|
+
// GIVEN
|
|
12
|
+
const outputsFile = path.join(fixture.integTestDir, 'outputs', 'outputs.json');
|
|
13
|
+
await fs.mkdir(path.dirname(outputsFile), { recursive: true });
|
|
14
|
+
|
|
15
|
+
// First, create a stack that includes a NodeJSFunction lambda and one bucket that will be removed from the stack but NOT deleted from AWS.
|
|
16
|
+
await fixture.cdkDeploy('importable-stack', {
|
|
17
|
+
modEnv: { INCLUDE_NODEJS_FUNCTION_LAMBDA: '1', INCLUDE_SINGLE_BUCKET: '1', RETAIN_SINGLE_BUCKET: '1' },
|
|
18
|
+
options: ['--outputs-file', outputsFile],
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
try {
|
|
22
|
+
// Second, now the bucket we will remove is in the stack and has a logicalId. We can now make the resource mapping file.
|
|
23
|
+
// This resource mapping file will be used to tell the import operation what bucket to bring into the stack.
|
|
24
|
+
const fullStackName = fixture.fullStackName('importable-stack');
|
|
25
|
+
const outputs = JSON.parse((await fs.readFile(outputsFile, { encoding: 'utf-8' })).toString());
|
|
26
|
+
const bucketLogicalId = outputs[fullStackName].BucketLogicalId;
|
|
27
|
+
const bucketName = outputs[fullStackName].BucketName;
|
|
28
|
+
const bucketResourceMap = {
|
|
29
|
+
[bucketLogicalId]: {
|
|
30
|
+
BucketName: bucketName,
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
const mappingFile = path.join(fixture.integTestDir, 'outputs', 'mapping.json');
|
|
34
|
+
await fs.writeFile(mappingFile, JSON.stringify(bucketResourceMap), { encoding: 'utf-8' });
|
|
35
|
+
|
|
36
|
+
// Third, remove the bucket from the stack, but don't delete the bucket from AWS.
|
|
37
|
+
await fixture.cdkDeploy('importable-stack', {
|
|
38
|
+
modEnv: { INCLUDE_NODEJS_FUNCTION_LAMBDA: '1', INCLUDE_SINGLE_BUCKET: '0', RETAIN_SINGLE_BUCKET: '0' },
|
|
39
|
+
});
|
|
40
|
+
const cfnTemplateBeforeImport = await fixture.aws.cloudFormation.send(
|
|
41
|
+
new GetTemplateCommand({ StackName: fullStackName }),
|
|
42
|
+
);
|
|
43
|
+
expect(cfnTemplateBeforeImport.TemplateBody).not.toContain(bucketLogicalId);
|
|
44
|
+
|
|
45
|
+
// WHEN
|
|
46
|
+
await fixture.cdk(['import', '--resource-mapping', mappingFile, fixture.fullStackName('importable-stack')], {
|
|
47
|
+
modEnv: { INCLUDE_NODEJS_FUNCTION_LAMBDA: '1', INCLUDE_SINGLE_BUCKET: '1', RETAIN_SINGLE_BUCKET: '0' },
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// THEN
|
|
51
|
+
const describeStacksResponse = await fixture.aws.cloudFormation.send(
|
|
52
|
+
new DescribeStacksCommand({ StackName: fullStackName }),
|
|
53
|
+
);
|
|
54
|
+
const cfnTemplateAfterImport = await fixture.aws.cloudFormation.send(
|
|
55
|
+
new GetTemplateCommand({ StackName: fullStackName }),
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
// If bundling is skipped during import for NodeJSFunction lambda, then the operation should fail and exit
|
|
59
|
+
expect(describeStacksResponse.Stacks![0].StackStatus).toEqual('IMPORT_COMPLETE');
|
|
60
|
+
|
|
61
|
+
// If the import operation is successful, the template should contain the imported bucket
|
|
62
|
+
expect(cfnTemplateAfterImport.TemplateBody).toContain(bucketLogicalId);
|
|
63
|
+
} finally {
|
|
64
|
+
// Clean up the resources we created
|
|
65
|
+
await fixture.cdkDestroy('importable-stack');
|
|
66
|
+
}
|
|
67
|
+
}),
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Create a queue, orphan that queue, then import the queue.
|
|
72
|
+
*
|
|
73
|
+
* We want to test with a large template to make sure large templates can work with import.
|
|
74
|
+
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fs_1 = require("fs");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
|
|
6
|
+
const lib_1 = require("../../lib");
|
|
7
|
+
jest.setTimeout(2 * 60 * 60000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
8
|
+
(0, lib_1.integTest)('test resource import', (0, lib_1.withDefaultFixture)(async (fixture) => {
|
|
9
|
+
// GIVEN
|
|
10
|
+
const randomPrefix = (0, lib_1.randomString)();
|
|
11
|
+
const uniqueOutputsFileName = `${randomPrefix}Outputs.json`; // other tests use the outputs file. Make sure we don't collide.
|
|
12
|
+
const outputsFile = path.join(fixture.integTestDir, 'outputs', uniqueOutputsFileName);
|
|
13
|
+
await fs_1.promises.mkdir(path.dirname(outputsFile), { recursive: true });
|
|
14
|
+
// First, create a stack that includes many queues, and one queue that will be removed from the stack but NOT deleted from AWS.
|
|
15
|
+
await fixture.cdkDeploy('importable-stack', {
|
|
16
|
+
modEnv: { LARGE_TEMPLATE: '1', INCLUDE_SINGLE_QUEUE: '1', RETAIN_SINGLE_QUEUE: '1' },
|
|
17
|
+
options: ['--outputs-file', outputsFile],
|
|
18
|
+
});
|
|
19
|
+
try {
|
|
20
|
+
// Second, now the queue we will remove is in the stack and has a logicalId. We can now make the resource mapping file.
|
|
21
|
+
// This resource mapping file will be used to tell the import operation what queue to bring into the stack.
|
|
22
|
+
const fullStackName = fixture.fullStackName('importable-stack');
|
|
23
|
+
const outputs = JSON.parse((await fs_1.promises.readFile(outputsFile, { encoding: 'utf-8' })).toString());
|
|
24
|
+
const queueLogicalId = outputs[fullStackName].QueueLogicalId;
|
|
25
|
+
const queueResourceMap = {
|
|
26
|
+
[queueLogicalId]: { QueueUrl: outputs[fullStackName].QueueUrl },
|
|
27
|
+
};
|
|
28
|
+
const mappingFile = path.join(fixture.integTestDir, 'outputs', `${randomPrefix}Mapping.json`);
|
|
29
|
+
await fs_1.promises.writeFile(mappingFile, JSON.stringify(queueResourceMap), { encoding: 'utf-8' });
|
|
30
|
+
// Third, remove the queue from the stack, but don't delete the queue from AWS.
|
|
31
|
+
await fixture.cdkDeploy('importable-stack', {
|
|
32
|
+
modEnv: { LARGE_TEMPLATE: '1', INCLUDE_SINGLE_QUEUE: '0', RETAIN_SINGLE_QUEUE: '0' },
|
|
33
|
+
});
|
|
34
|
+
const cfnTemplateBeforeImport = await fixture.aws.cloudFormation.send(new client_cloudformation_1.GetTemplateCommand({ StackName: fullStackName }));
|
|
35
|
+
expect(cfnTemplateBeforeImport.TemplateBody).not.toContain(queueLogicalId);
|
|
36
|
+
// WHEN
|
|
37
|
+
await fixture.cdk(['import', '--resource-mapping', mappingFile, fixture.fullStackName('importable-stack')], {
|
|
38
|
+
modEnv: { LARGE_TEMPLATE: '1', INCLUDE_SINGLE_QUEUE: '1', RETAIN_SINGLE_QUEUE: '0' },
|
|
39
|
+
});
|
|
40
|
+
// THEN
|
|
41
|
+
const describeStacksResponse = await fixture.aws.cloudFormation.send(new client_cloudformation_1.DescribeStacksCommand({ StackName: fullStackName }));
|
|
42
|
+
const cfnTemplateAfterImport = await fixture.aws.cloudFormation.send(new client_cloudformation_1.GetTemplateCommand({ StackName: fullStackName }));
|
|
43
|
+
expect(describeStacksResponse.Stacks[0].StackStatus).toEqual('IMPORT_COMPLETE');
|
|
44
|
+
expect(cfnTemplateAfterImport.TemplateBody).toContain(queueLogicalId);
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
// Clean up
|
|
48
|
+
await fixture.cdkDestroy('importable-stack');
|
|
49
|
+
}
|
|
50
|
+
}));
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXRlc3QtcmVzb3VyY2UtaW1wb3J0LmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay10ZXN0LXJlc291cmNlLWltcG9ydC5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyQkFBb0M7QUFDcEMsNkJBQTZCO0FBQzdCLDBFQUEyRjtBQUMzRixtQ0FBd0U7QUFFeEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQU0sQ0FBQyxDQUFDLENBQUMseUVBQXlFO0FBRTNHLElBQUEsZUFBUyxFQUNQLHNCQUFzQixFQUN0QixJQUFBLHdCQUFrQixFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNuQyxRQUFRO0lBQ1IsTUFBTSxZQUFZLEdBQUcsSUFBQSxrQkFBWSxHQUFFLENBQUM7SUFDcEMsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLFlBQVksY0FBYyxDQUFDLENBQUMsZ0VBQWdFO0lBQzdILE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUscUJBQXFCLENBQUMsQ0FBQztJQUN0RixNQUFNLGFBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRS9ELCtIQUErSDtJQUMvSCxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUU7UUFDMUMsTUFBTSxFQUFFLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1FBQ3BGLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQztLQUN6QyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUM7UUFDSCx1SEFBdUg7UUFDdkgsMkdBQTJHO1FBQzNHLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxhQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMvRixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsY0FBYyxDQUFDO1FBQzdELE1BQU0sZ0JBQWdCLEdBQUc7WUFDdkIsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxFQUFFO1NBQ2hFLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLEdBQUcsWUFBWSxjQUFjLENBQUMsQ0FBQztRQUM5RixNQUFNLGFBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRXpGLCtFQUErRTtRQUMvRSxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUU7WUFDMUMsTUFBTSxFQUFFLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1NBQ3JGLENBQUMsQ0FBQztRQUNILE1BQU0sdUJBQXVCLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ25FLElBQUksMENBQWtCLENBQUMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FDckQsQ0FBQztRQUNGLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTNFLE9BQU87UUFDUCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFO1lBQzFHLE1BQU0sRUFBRSxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtTQUNyRixDQUFDLENBQUM7UUFFSCxPQUFPO1FBQ1AsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDbEUsSUFBSSw2Q0FBcUIsQ0FBQyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUN4RCxDQUFDO1FBQ0YsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDbEUsSUFBSSwwQ0FBa0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUNyRCxDQUFDO1FBQ0YsTUFBTSxDQUFDLHNCQUFzQixDQUFDLE1BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRixNQUFNLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7WUFBUyxDQUFDO1FBQ1QsV0FBVztRQUNYLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQy9DLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRGVzY3JpYmVTdGFja3NDb21tYW5kLCBHZXRUZW1wbGF0ZUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoRGVmYXVsdEZpeHR1cmUsIHJhbmRvbVN0cmluZyB9IGZyb20gJy4uLy4uL2xpYic7XG5cbmplc3Quc2V0VGltZW91dCgyICogNjAgKiA2MF8wMDApOyAvLyBJbmNsdWRlcyB0aGUgdGltZSB0byBhY3F1aXJlIGxvY2tzLCB3b3JzdC1jYXNlIHNpbmdsZS10aHJlYWRlZCBydW50aW1lXG5cbmludGVnVGVzdChcbiAgJ3Rlc3QgcmVzb3VyY2UgaW1wb3J0JyxcbiAgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCByYW5kb21QcmVmaXggPSByYW5kb21TdHJpbmcoKTtcbiAgICBjb25zdCB1bmlxdWVPdXRwdXRzRmlsZU5hbWUgPSBgJHtyYW5kb21QcmVmaXh9T3V0cHV0cy5qc29uYDsgLy8gb3RoZXIgdGVzdHMgdXNlIHRoZSBvdXRwdXRzIGZpbGUuIE1ha2Ugc3VyZSB3ZSBkb24ndCBjb2xsaWRlLlxuICAgIGNvbnN0IG91dHB1dHNGaWxlID0gcGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCAnb3V0cHV0cycsIHVuaXF1ZU91dHB1dHNGaWxlTmFtZSk7XG4gICAgYXdhaXQgZnMubWtkaXIocGF0aC5kaXJuYW1lKG91dHB1dHNGaWxlKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICAvLyBGaXJzdCwgY3JlYXRlIGEgc3RhY2sgdGhhdCBpbmNsdWRlcyBtYW55IHF1ZXVlcywgYW5kIG9uZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBzdGFjayBidXQgTk9UIGRlbGV0ZWQgZnJvbSBBV1MuXG4gICAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ2ltcG9ydGFibGUtc3RhY2snLCB7XG4gICAgICBtb2RFbnY6IHsgTEFSR0VfVEVNUExBVEU6ICcxJywgSU5DTFVERV9TSU5HTEVfUVVFVUU6ICcxJywgUkVUQUlOX1NJTkdMRV9RVUVVRTogJzEnIH0sXG4gICAgICBvcHRpb25zOiBbJy0tb3V0cHV0cy1maWxlJywgb3V0cHV0c0ZpbGVdLFxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFNlY29uZCwgbm93IHRoZSBxdWV1ZSB3ZSB3aWxsIHJlbW92ZSBpcyBpbiB0aGUgc3RhY2sgYW5kIGhhcyBhIGxvZ2ljYWxJZC4gV2UgY2FuIG5vdyBtYWtlIHRoZSByZXNvdXJjZSBtYXBwaW5nIGZpbGUuXG4gICAgICAvLyBUaGlzIHJlc291cmNlIG1hcHBpbmcgZmlsZSB3aWxsIGJlIHVzZWQgdG8gdGVsbCB0aGUgaW1wb3J0IG9wZXJhdGlvbiB3aGF0IHF1ZXVlIHRvIGJyaW5nIGludG8gdGhlIHN0YWNrLlxuICAgICAgY29uc3QgZnVsbFN0YWNrTmFtZSA9IGZpeHR1cmUuZnVsbFN0YWNrTmFtZSgnaW1wb3J0YWJsZS1zdGFjaycpO1xuICAgICAgY29uc3Qgb3V0cHV0cyA9IEpTT04ucGFyc2UoKGF3YWl0IGZzLnJlYWRGaWxlKG91dHB1dHNGaWxlLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pKS50b1N0cmluZygpKTtcbiAgICAgIGNvbnN0IHF1ZXVlTG9naWNhbElkID0gb3V0cHV0c1tmdWxsU3RhY2tOYW1lXS5RdWV1ZUxvZ2ljYWxJZDtcbiAgICAgIGNvbnN0IHF1ZXVlUmVzb3VyY2VNYXAgPSB7XG4gICAgICAgIFtxdWV1ZUxvZ2ljYWxJZF06IHsgUXVldWVVcmw6IG91dHB1dHNbZnVsbFN0YWNrTmFtZV0uUXVldWVVcmwgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBtYXBwaW5nRmlsZSA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ291dHB1dHMnLCBgJHtyYW5kb21QcmVmaXh9TWFwcGluZy5qc29uYCk7XG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUobWFwcGluZ0ZpbGUsIEpTT04uc3RyaW5naWZ5KHF1ZXVlUmVzb3VyY2VNYXApLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuXG4gICAgICAvLyBUaGlyZCwgcmVtb3ZlIHRoZSBxdWV1ZSBmcm9tIHRoZSBzdGFjaywgYnV0IGRvbid0IGRlbGV0ZSB0aGUgcXVldWUgZnJvbSBBV1MuXG4gICAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnaW1wb3J0YWJsZS1zdGFjaycsIHtcbiAgICAgICAgbW9kRW52OiB7IExBUkdFX1RFTVBMQVRFOiAnMScsIElOQ0xVREVfU0lOR0xFX1FVRVVFOiAnMCcsIFJFVEFJTl9TSU5HTEVfUVVFVUU6ICcwJyB9LFxuICAgICAgfSk7XG4gICAgICBjb25zdCBjZm5UZW1wbGF0ZUJlZm9yZUltcG9ydCA9IGF3YWl0IGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uLnNlbmQoXG4gICAgICAgIG5ldyBHZXRUZW1wbGF0ZUNvbW1hbmQoeyBTdGFja05hbWU6IGZ1bGxTdGFja05hbWUgfSksXG4gICAgICApO1xuICAgICAgZXhwZWN0KGNmblRlbXBsYXRlQmVmb3JlSW1wb3J0LlRlbXBsYXRlQm9keSkubm90LnRvQ29udGFpbihxdWV1ZUxvZ2ljYWxJZCk7XG5cbiAgICAgIC8vIFdIRU5cbiAgICAgIGF3YWl0IGZpeHR1cmUuY2RrKFsnaW1wb3J0JywgJy0tcmVzb3VyY2UtbWFwcGluZycsIG1hcHBpbmdGaWxlLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ2ltcG9ydGFibGUtc3RhY2snKV0sIHtcbiAgICAgICAgbW9kRW52OiB7IExBUkdFX1RFTVBMQVRFOiAnMScsIElOQ0xVREVfU0lOR0xFX1FVRVVFOiAnMScsIFJFVEFJTl9TSU5HTEVfUVVFVUU6ICcwJyB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGNvbnN0IGRlc2NyaWJlU3RhY2tzUmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbi5zZW5kKFxuICAgICAgICBuZXcgRGVzY3JpYmVTdGFja3NDb21tYW5kKHsgU3RhY2tOYW1lOiBmdWxsU3RhY2tOYW1lIH0pLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNmblRlbXBsYXRlQWZ0ZXJJbXBvcnQgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbi5zZW5kKFxuICAgICAgICBuZXcgR2V0VGVtcGxhdGVDb21tYW5kKHsgU3RhY2tOYW1lOiBmdWxsU3RhY2tOYW1lIH0pLFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChkZXNjcmliZVN0YWNrc1Jlc3BvbnNlLlN0YWNrcyFbMF0uU3RhY2tTdGF0dXMpLnRvRXF1YWwoJ0lNUE9SVF9DT01QTEVURScpO1xuICAgICAgZXhwZWN0KGNmblRlbXBsYXRlQWZ0ZXJJbXBvcnQuVGVtcGxhdGVCb2R5KS50b0NvbnRhaW4ocXVldWVMb2dpY2FsSWQpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBDbGVhbiB1cFxuICAgICAgYXdhaXQgZml4dHVyZS5jZGtEZXN0cm95KCdpbXBvcnRhYmxlLXN0YWNrJyk7XG4gICAgfVxuICB9KSxcbik7XG5cbiJdfQ==
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { DescribeStacksCommand, GetTemplateCommand } from '@aws-sdk/client-cloudformation';
|
|
4
|
+
import { integTest, withDefaultFixture, randomString } from '../../lib';
|
|
5
|
+
|
|
6
|
+
jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
7
|
+
|
|
8
|
+
integTest(
|
|
9
|
+
'test resource import',
|
|
10
|
+
withDefaultFixture(async (fixture) => {
|
|
11
|
+
// GIVEN
|
|
12
|
+
const randomPrefix = randomString();
|
|
13
|
+
const uniqueOutputsFileName = `${randomPrefix}Outputs.json`; // other tests use the outputs file. Make sure we don't collide.
|
|
14
|
+
const outputsFile = path.join(fixture.integTestDir, 'outputs', uniqueOutputsFileName);
|
|
15
|
+
await fs.mkdir(path.dirname(outputsFile), { recursive: true });
|
|
16
|
+
|
|
17
|
+
// First, create a stack that includes many queues, and one queue that will be removed from the stack but NOT deleted from AWS.
|
|
18
|
+
await fixture.cdkDeploy('importable-stack', {
|
|
19
|
+
modEnv: { LARGE_TEMPLATE: '1', INCLUDE_SINGLE_QUEUE: '1', RETAIN_SINGLE_QUEUE: '1' },
|
|
20
|
+
options: ['--outputs-file', outputsFile],
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
try {
|
|
24
|
+
// Second, now the queue we will remove is in the stack and has a logicalId. We can now make the resource mapping file.
|
|
25
|
+
// This resource mapping file will be used to tell the import operation what queue to bring into the stack.
|
|
26
|
+
const fullStackName = fixture.fullStackName('importable-stack');
|
|
27
|
+
const outputs = JSON.parse((await fs.readFile(outputsFile, { encoding: 'utf-8' })).toString());
|
|
28
|
+
const queueLogicalId = outputs[fullStackName].QueueLogicalId;
|
|
29
|
+
const queueResourceMap = {
|
|
30
|
+
[queueLogicalId]: { QueueUrl: outputs[fullStackName].QueueUrl },
|
|
31
|
+
};
|
|
32
|
+
const mappingFile = path.join(fixture.integTestDir, 'outputs', `${randomPrefix}Mapping.json`);
|
|
33
|
+
await fs.writeFile(mappingFile, JSON.stringify(queueResourceMap), { encoding: 'utf-8' });
|
|
34
|
+
|
|
35
|
+
// Third, remove the queue from the stack, but don't delete the queue from AWS.
|
|
36
|
+
await fixture.cdkDeploy('importable-stack', {
|
|
37
|
+
modEnv: { LARGE_TEMPLATE: '1', INCLUDE_SINGLE_QUEUE: '0', RETAIN_SINGLE_QUEUE: '0' },
|
|
38
|
+
});
|
|
39
|
+
const cfnTemplateBeforeImport = await fixture.aws.cloudFormation.send(
|
|
40
|
+
new GetTemplateCommand({ StackName: fullStackName }),
|
|
41
|
+
);
|
|
42
|
+
expect(cfnTemplateBeforeImport.TemplateBody).not.toContain(queueLogicalId);
|
|
43
|
+
|
|
44
|
+
// WHEN
|
|
45
|
+
await fixture.cdk(['import', '--resource-mapping', mappingFile, fixture.fullStackName('importable-stack')], {
|
|
46
|
+
modEnv: { LARGE_TEMPLATE: '1', INCLUDE_SINGLE_QUEUE: '1', RETAIN_SINGLE_QUEUE: '0' },
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
// THEN
|
|
50
|
+
const describeStacksResponse = await fixture.aws.cloudFormation.send(
|
|
51
|
+
new DescribeStacksCommand({ StackName: fullStackName }),
|
|
52
|
+
);
|
|
53
|
+
const cfnTemplateAfterImport = await fixture.aws.cloudFormation.send(
|
|
54
|
+
new GetTemplateCommand({ StackName: fullStackName }),
|
|
55
|
+
);
|
|
56
|
+
expect(describeStacksResponse.Stacks![0].StackStatus).toEqual('IMPORT_COMPLETE');
|
|
57
|
+
expect(cfnTemplateAfterImport.TemplateBody).toContain(queueLogicalId);
|
|
58
|
+
} finally {
|
|
59
|
+
// Clean up
|
|
60
|
+
await fixture.cdkDestroy('importable-stack');
|
|
61
|
+
}
|
|
62
|
+
}),
|
|
63
|
+
);
|
|
64
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const lib_1 = require("../../lib");
|
|
4
|
+
jest.setTimeout(2 * 60 * 60000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
5
|
+
(0, lib_1.integTest)('Two ways of showing the version', (0, lib_1.withDefaultFixture)(async (fixture) => {
|
|
6
|
+
const version1 = await fixture.cdk(['version'], { verbose: false });
|
|
7
|
+
const version2 = await fixture.cdk(['--version'], { verbose: false });
|
|
8
|
+
expect(version1).toEqual(version2);
|
|
9
|
+
}));
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXR3by13YXlzLW9mLXNob3dpbmctdGhlLXZlcnNpb24uaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLXR3by13YXlzLW9mLXNob3dpbmctdGhlLXZlcnNpb24uaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBQTBEO0FBRTFELElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFNLENBQUMsQ0FBQyxDQUFDLHlFQUF5RTtBQUUzRyxJQUFBLGVBQVMsRUFDUCxpQ0FBaUMsRUFDakMsSUFBQSx3QkFBa0IsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDbkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNwRSxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRXRFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGludGVnVGVzdCwgd2l0aERlZmF1bHRGaXh0dXJlIH0gZnJvbSAnLi4vLi4vbGliJztcblxuamVzdC5zZXRUaW1lb3V0KDIgKiA2MCAqIDYwXzAwMCk7IC8vIEluY2x1ZGVzIHRoZSB0aW1lIHRvIGFjcXVpcmUgbG9ja3MsIHdvcnN0LWNhc2Ugc2luZ2xlLXRocmVhZGVkIHJ1bnRpbWVcblxuaW50ZWdUZXN0KFxuICAnVHdvIHdheXMgb2Ygc2hvd2luZyB0aGUgdmVyc2lvbicsXG4gIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGNvbnN0IHZlcnNpb24xID0gYXdhaXQgZml4dHVyZS5jZGsoWyd2ZXJzaW9uJ10sIHsgdmVyYm9zZTogZmFsc2UgfSk7XG4gICAgY29uc3QgdmVyc2lvbjIgPSBhd2FpdCBmaXh0dXJlLmNkayhbJy0tdmVyc2lvbiddLCB7IHZlcmJvc2U6IGZhbHNlIH0pO1xuXG4gICAgZXhwZWN0KHZlcnNpb24xKS50b0VxdWFsKHZlcnNpb24yKTtcbiAgfSksXG4pO1xuXG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { integTest, withDefaultFixture } from '../../lib';
|
|
2
|
+
|
|
3
|
+
jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
4
|
+
|
|
5
|
+
integTest(
|
|
6
|
+
'Two ways of showing the version',
|
|
7
|
+
withDefaultFixture(async (fixture) => {
|
|
8
|
+
const version1 = await fixture.cdk(['version'], { verbose: false });
|
|
9
|
+
const version2 = await fixture.cdk(['--version'], { verbose: false });
|
|
10
|
+
|
|
11
|
+
expect(version1).toEqual(version2);
|
|
12
|
+
}),
|
|
13
|
+
);
|
|
14
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
|
|
4
|
+
const lib_1 = require("../../lib");
|
|
5
|
+
jest.setTimeout(2 * 60 * 60000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
6
|
+
(0, lib_1.integTest)('update to stack in ROLLBACK_COMPLETE state will delete stack and create a new one', (0, lib_1.withDefaultFixture)(async (fixture) => {
|
|
7
|
+
var _a, _b, _c, _d;
|
|
8
|
+
// GIVEN
|
|
9
|
+
await expect(fixture.cdkDeploy('param-test-1', {
|
|
10
|
+
options: ['--parameters', `TopicNameParam=${fixture.stackNamePrefix}@aww`],
|
|
11
|
+
captureStderr: false,
|
|
12
|
+
})).rejects.toThrow('exited with error');
|
|
13
|
+
const response = await fixture.aws.cloudFormation.send(new client_cloudformation_1.DescribeStacksCommand({
|
|
14
|
+
StackName: fixture.fullStackName('param-test-1'),
|
|
15
|
+
}));
|
|
16
|
+
const stackArn = (_a = response.Stacks) === null || _a === void 0 ? void 0 : _a[0].StackId;
|
|
17
|
+
expect((_b = response.Stacks) === null || _b === void 0 ? void 0 : _b[0].StackStatus).toEqual('ROLLBACK_COMPLETE');
|
|
18
|
+
// WHEN
|
|
19
|
+
const newStackArn = await fixture.cdkDeploy('param-test-1', {
|
|
20
|
+
options: ['--parameters', `TopicNameParam=${fixture.stackNamePrefix}allgood`],
|
|
21
|
+
captureStderr: false,
|
|
22
|
+
});
|
|
23
|
+
const newStackResponse = await fixture.aws.cloudFormation.send(new client_cloudformation_1.DescribeStacksCommand({
|
|
24
|
+
StackName: newStackArn,
|
|
25
|
+
}));
|
|
26
|
+
// THEN
|
|
27
|
+
expect(stackArn).not.toEqual(newStackArn); // new stack was created
|
|
28
|
+
expect((_c = newStackResponse.Stacks) === null || _c === void 0 ? void 0 : _c[0].StackStatus).toEqual('CREATE_COMPLETE');
|
|
29
|
+
expect((_d = newStackResponse.Stacks) === null || _d === void 0 ? void 0 : _d[0].Parameters).toContainEqual({
|
|
30
|
+
ParameterKey: 'TopicNameParam',
|
|
31
|
+
ParameterValue: `${fixture.stackNamePrefix}allgood`,
|
|
32
|
+
});
|
|
33
|
+
}));
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXVwZGF0ZS10by1zdGFjay1pbi1yb2xsYmFja19jb21wbGV0ZS1zdGF0ZS13aWxsLWRlbGV0ZS1zdGFjay1hbmQtY3JlYXRlLWEtbmV3LW9uZS5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstdXBkYXRlLXRvLXN0YWNrLWluLXJvbGxiYWNrX2NvbXBsZXRlLXN0YXRlLXdpbGwtZGVsZXRlLXN0YWNrLWFuZC1jcmVhdGUtYS1uZXctb25lLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBFQUF1RTtBQUN2RSxtQ0FBMEQ7QUFFMUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQU0sQ0FBQyxDQUFDLENBQUMseUVBQXlFO0FBRTNHLElBQUEsZUFBUyxFQUNQLG1GQUFtRixFQUNuRixJQUFBLHdCQUFrQixFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTs7SUFDbkMsUUFBUTtJQUNSLE1BQU0sTUFBTSxDQUNWLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFO1FBQ2hDLE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsT0FBTyxDQUFDLGVBQWUsTUFBTSxDQUFDO1FBQzFFLGFBQWEsRUFBRSxLQUFLO0tBQ3JCLENBQUMsQ0FDSCxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUV2QyxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDcEQsSUFBSSw2Q0FBcUIsQ0FBQztRQUN4QixTQUFTLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUM7S0FDakQsQ0FBQyxDQUNILENBQUM7SUFFRixNQUFNLFFBQVEsR0FBRyxNQUFBLFFBQVEsQ0FBQyxNQUFNLDBDQUFHLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDOUMsTUFBTSxDQUFDLE1BQUEsUUFBUSxDQUFDLE1BQU0sMENBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRXRFLE9BQU87SUFDUCxNQUFNLFdBQVcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFO1FBQzFELE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsT0FBTyxDQUFDLGVBQWUsU0FBUyxDQUFDO1FBQzdFLGFBQWEsRUFBRSxLQUFLO0tBQ3JCLENBQUMsQ0FBQztJQUVILE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQzVELElBQUksNkNBQXFCLENBQUM7UUFDeEIsU0FBUyxFQUFFLFdBQVc7S0FDdkIsQ0FBQyxDQUNILENBQUM7SUFFRixPQUFPO0lBQ1AsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyx3QkFBd0I7SUFDbkUsTUFBTSxDQUFDLE1BQUEsZ0JBQWdCLENBQUMsTUFBTSwwQ0FBRyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUUsTUFBTSxDQUFDLE1BQUEsZ0JBQWdCLENBQUMsTUFBTSwwQ0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsY0FBYyxDQUFDO1FBQzdELFlBQVksRUFBRSxnQkFBZ0I7UUFDOUIsY0FBYyxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsU0FBUztLQUNwRCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY3JpYmVTdGFja3NDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IGludGVnVGVzdCwgd2l0aERlZmF1bHRGaXh0dXJlIH0gZnJvbSAnLi4vLi4vbGliJztcblxuamVzdC5zZXRUaW1lb3V0KDIgKiA2MCAqIDYwXzAwMCk7IC8vIEluY2x1ZGVzIHRoZSB0aW1lIHRvIGFjcXVpcmUgbG9ja3MsIHdvcnN0LWNhc2Ugc2luZ2xlLXRocmVhZGVkIHJ1bnRpbWVcblxuaW50ZWdUZXN0KFxuICAndXBkYXRlIHRvIHN0YWNrIGluIFJPTExCQUNLX0NPTVBMRVRFIHN0YXRlIHdpbGwgZGVsZXRlIHN0YWNrIGFuZCBjcmVhdGUgYSBuZXcgb25lJyxcbiAgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBmaXh0dXJlLmNka0RlcGxveSgncGFyYW0tdGVzdC0xJywge1xuICAgICAgICBvcHRpb25zOiBbJy0tcGFyYW1ldGVycycsIGBUb3BpY05hbWVQYXJhbT0ke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fUBhd3dgXSxcbiAgICAgICAgY2FwdHVyZVN0ZGVycjogZmFsc2UsXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygnZXhpdGVkIHdpdGggZXJyb3InKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24uc2VuZChcbiAgICAgIG5ldyBEZXNjcmliZVN0YWNrc0NvbW1hbmQoe1xuICAgICAgICBTdGFja05hbWU6IGZpeHR1cmUuZnVsbFN0YWNrTmFtZSgncGFyYW0tdGVzdC0xJyksXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhY2tBcm4gPSByZXNwb25zZS5TdGFja3M/LlswXS5TdGFja0lkO1xuICAgIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5TdGFja1N0YXR1cykudG9FcXVhbCgnUk9MTEJBQ0tfQ09NUExFVEUnKTtcblxuICAgIC8vIFdIRU5cbiAgICBjb25zdCBuZXdTdGFja0FybiA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdwYXJhbS10ZXN0LTEnLCB7XG4gICAgICBvcHRpb25zOiBbJy0tcGFyYW1ldGVycycsIGBUb3BpY05hbWVQYXJhbT0ke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fWFsbGdvb2RgXSxcbiAgICAgIGNhcHR1cmVTdGRlcnI6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbmV3U3RhY2tSZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uLnNlbmQoXG4gICAgICBuZXcgRGVzY3JpYmVTdGFja3NDb21tYW5kKHtcbiAgICAgICAgU3RhY2tOYW1lOiBuZXdTdGFja0FybixcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KHN0YWNrQXJuKS5ub3QudG9FcXVhbChuZXdTdGFja0Fybik7IC8vIG5ldyBzdGFjayB3YXMgY3JlYXRlZFxuICAgIGV4cGVjdChuZXdTdGFja1Jlc3BvbnNlLlN0YWNrcz8uWzBdLlN0YWNrU3RhdHVzKS50b0VxdWFsKCdDUkVBVEVfQ09NUExFVEUnKTtcbiAgICBleHBlY3QobmV3U3RhY2tSZXNwb25zZS5TdGFja3M/LlswXS5QYXJhbWV0ZXJzKS50b0NvbnRhaW5FcXVhbCh7XG4gICAgICBQYXJhbWV0ZXJLZXk6ICdUb3BpY05hbWVQYXJhbScsXG4gICAgICBQYXJhbWV0ZXJWYWx1ZTogYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9YWxsZ29vZGAsXG4gICAgfSk7XG4gIH0pLFxuKTtcblxuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { DescribeStacksCommand } from '@aws-sdk/client-cloudformation';
|
|
2
|
+
import { integTest, withDefaultFixture } from '../../lib';
|
|
3
|
+
|
|
4
|
+
jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
5
|
+
|
|
6
|
+
integTest(
|
|
7
|
+
'update to stack in ROLLBACK_COMPLETE state will delete stack and create a new one',
|
|
8
|
+
withDefaultFixture(async (fixture) => {
|
|
9
|
+
// GIVEN
|
|
10
|
+
await expect(
|
|
11
|
+
fixture.cdkDeploy('param-test-1', {
|
|
12
|
+
options: ['--parameters', `TopicNameParam=${fixture.stackNamePrefix}@aww`],
|
|
13
|
+
captureStderr: false,
|
|
14
|
+
}),
|
|
15
|
+
).rejects.toThrow('exited with error');
|
|
16
|
+
|
|
17
|
+
const response = await fixture.aws.cloudFormation.send(
|
|
18
|
+
new DescribeStacksCommand({
|
|
19
|
+
StackName: fixture.fullStackName('param-test-1'),
|
|
20
|
+
}),
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
const stackArn = response.Stacks?.[0].StackId;
|
|
24
|
+
expect(response.Stacks?.[0].StackStatus).toEqual('ROLLBACK_COMPLETE');
|
|
25
|
+
|
|
26
|
+
// WHEN
|
|
27
|
+
const newStackArn = await fixture.cdkDeploy('param-test-1', {
|
|
28
|
+
options: ['--parameters', `TopicNameParam=${fixture.stackNamePrefix}allgood`],
|
|
29
|
+
captureStderr: false,
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
const newStackResponse = await fixture.aws.cloudFormation.send(
|
|
33
|
+
new DescribeStacksCommand({
|
|
34
|
+
StackName: newStackArn,
|
|
35
|
+
}),
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
// THEN
|
|
39
|
+
expect(stackArn).not.toEqual(newStackArn); // new stack was created
|
|
40
|
+
expect(newStackResponse.Stacks?.[0].StackStatus).toEqual('CREATE_COMPLETE');
|
|
41
|
+
expect(newStackResponse.Stacks?.[0].Parameters).toContainEqual({
|
|
42
|
+
ParameterKey: 'TopicNameParam',
|
|
43
|
+
ParameterValue: `${fixture.stackNamePrefix}allgood`,
|
|
44
|
+
});
|
|
45
|
+
}),
|
|
46
|
+
);
|
|
47
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const lib_1 = require("../../lib");
|
|
4
|
+
jest.setTimeout(2 * 60 * 60000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
5
|
+
(0, lib_1.integTest)('VPC Lookup', (0, lib_1.withDefaultFixture)(async (fixture) => {
|
|
6
|
+
fixture.log('Making sure we are clean before starting.');
|
|
7
|
+
await fixture.cdkDestroy('define-vpc', { modEnv: { ENABLE_VPC_TESTING: 'DEFINE' } });
|
|
8
|
+
fixture.log('Setting up: creating a VPC with known tags');
|
|
9
|
+
await fixture.cdkDeploy('define-vpc', { modEnv: { ENABLE_VPC_TESTING: 'DEFINE' } });
|
|
10
|
+
fixture.log('Setup complete!');
|
|
11
|
+
fixture.log('Verifying we can now import that VPC');
|
|
12
|
+
await fixture.cdkDeploy('import-vpc', { modEnv: { ENABLE_VPC_TESTING: 'IMPORT' } });
|
|
13
|
+
}));
|
|
14
|
+
// testing a construct with a builtin Nodejs Lambda Function.
|
|
15
|
+
// In this case we are testing the s3.Bucket construct with the
|
|
16
|
+
// autoDeleteObjects prop set to true, which creates a Lambda backed
|
|
17
|
+
// CustomResource. Since the compiled Lambda code (e.g. __entrypoint__.js)
|
|
18
|
+
// is bundled as part of the CDK package, we want to make sure we don't
|
|
19
|
+
// introduce changes to the compiled code that could prevent the Lambda from
|
|
20
|
+
// executing. If we do, this test will timeout and fail.
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXZwYy1sb29rdXAuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLXZwYy1sb29rdXAuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBQTBEO0FBRTFELElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFNLENBQUMsQ0FBQyxDQUFDLHlFQUF5RTtBQUUzRyxJQUFBLGVBQVMsRUFDUCxZQUFZLEVBQ1osSUFBQSx3QkFBa0IsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFckYsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQzFELE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRS9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUNwRCxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3RGLENBQUMsQ0FBQyxDQUNILENBQUM7QUFFRiw2REFBNkQ7QUFDN0QsK0RBQStEO0FBQy9ELG9FQUFvRTtBQUNwRSwwRUFBMEU7QUFDMUUsdUVBQXVFO0FBQ3ZFLDRFQUE0RTtBQUM1RSx3REFBd0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhEZWZhdWx0Rml4dHVyZSB9IGZyb20gJy4uLy4uL2xpYic7XG5cbmplc3Quc2V0VGltZW91dCgyICogNjAgKiA2MF8wMDApOyAvLyBJbmNsdWRlcyB0aGUgdGltZSB0byBhY3F1aXJlIGxvY2tzLCB3b3JzdC1jYXNlIHNpbmdsZS10aHJlYWRlZCBydW50aW1lXG5cbmludGVnVGVzdChcbiAgJ1ZQQyBMb29rdXAnLFxuICB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICBmaXh0dXJlLmxvZygnTWFraW5nIHN1cmUgd2UgYXJlIGNsZWFuIGJlZm9yZSBzdGFydGluZy4nKTtcbiAgICBhd2FpdCBmaXh0dXJlLmNka0Rlc3Ryb3koJ2RlZmluZS12cGMnLCB7IG1vZEVudjogeyBFTkFCTEVfVlBDX1RFU1RJTkc6ICdERUZJTkUnIH0gfSk7XG5cbiAgICBmaXh0dXJlLmxvZygnU2V0dGluZyB1cDogY3JlYXRpbmcgYSBWUEMgd2l0aCBrbm93biB0YWdzJyk7XG4gICAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ2RlZmluZS12cGMnLCB7IG1vZEVudjogeyBFTkFCTEVfVlBDX1RFU1RJTkc6ICdERUZJTkUnIH0gfSk7XG4gICAgZml4dHVyZS5sb2coJ1NldHVwIGNvbXBsZXRlIScpO1xuXG4gICAgZml4dHVyZS5sb2coJ1ZlcmlmeWluZyB3ZSBjYW4gbm93IGltcG9ydCB0aGF0IFZQQycpO1xuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdpbXBvcnQtdnBjJywgeyBtb2RFbnY6IHsgRU5BQkxFX1ZQQ19URVNUSU5HOiAnSU1QT1JUJyB9IH0pO1xuICB9KSxcbik7XG5cbi8vIHRlc3RpbmcgYSBjb25zdHJ1Y3Qgd2l0aCBhIGJ1aWx0aW4gTm9kZWpzIExhbWJkYSBGdW5jdGlvbi5cbi8vIEluIHRoaXMgY2FzZSB3ZSBhcmUgdGVzdGluZyB0aGUgczMuQnVja2V0IGNvbnN0cnVjdCB3aXRoIHRoZVxuLy8gYXV0b0RlbGV0ZU9iamVjdHMgcHJvcCBzZXQgdG8gdHJ1ZSwgd2hpY2ggY3JlYXRlcyBhIExhbWJkYSBiYWNrZWRcbi8vIEN1c3RvbVJlc291cmNlLiBTaW5jZSB0aGUgY29tcGlsZWQgTGFtYmRhIGNvZGUgKGUuZy4gX19lbnRyeXBvaW50X18uanMpXG4vLyBpcyBidW5kbGVkIGFzIHBhcnQgb2YgdGhlIENESyBwYWNrYWdlLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBkb24ndFxuLy8gaW50cm9kdWNlIGNoYW5nZXMgdG8gdGhlIGNvbXBpbGVkIGNvZGUgdGhhdCBjb3VsZCBwcmV2ZW50IHRoZSBMYW1iZGEgZnJvbVxuLy8gZXhlY3V0aW5nLiBJZiB3ZSBkbywgdGhpcyB0ZXN0IHdpbGwgdGltZW91dCBhbmQgZmFpbC5cbiJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { integTest, withDefaultFixture } from '../../lib';
|
|
2
|
+
|
|
3
|
+
jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
4
|
+
|
|
5
|
+
integTest(
|
|
6
|
+
'VPC Lookup',
|
|
7
|
+
withDefaultFixture(async (fixture) => {
|
|
8
|
+
fixture.log('Making sure we are clean before starting.');
|
|
9
|
+
await fixture.cdkDestroy('define-vpc', { modEnv: { ENABLE_VPC_TESTING: 'DEFINE' } });
|
|
10
|
+
|
|
11
|
+
fixture.log('Setting up: creating a VPC with known tags');
|
|
12
|
+
await fixture.cdkDeploy('define-vpc', { modEnv: { ENABLE_VPC_TESTING: 'DEFINE' } });
|
|
13
|
+
fixture.log('Setup complete!');
|
|
14
|
+
|
|
15
|
+
fixture.log('Verifying we can now import that VPC');
|
|
16
|
+
await fixture.cdkDeploy('import-vpc', { modEnv: { ENABLE_VPC_TESTING: 'IMPORT' } });
|
|
17
|
+
}),
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
// testing a construct with a builtin Nodejs Lambda Function.
|
|
21
|
+
// In this case we are testing the s3.Bucket construct with the
|
|
22
|
+
// autoDeleteObjects prop set to true, which creates a Lambda backed
|
|
23
|
+
// CustomResource. Since the compiled Lambda code (e.g. __entrypoint__.js)
|
|
24
|
+
// is bundled as part of the CDK package, we want to make sure we don't
|
|
25
|
+
// introduce changes to the compiled code that could prevent the Lambda from
|
|
26
|
+
// executing. If we do, this test will timeout and fail.
|
|
@@ -50,7 +50,6 @@ async function runInIsolatedContainer(fixture, pathsToMount, testCommands) {
|
|
|
50
50
|
'public.ecr.aws/ubuntu/ubuntu:24.04_stable',
|
|
51
51
|
`${scriptName}`,
|
|
52
52
|
], {
|
|
53
|
-
stdio: 'inherit',
|
|
54
53
|
modEnv: {
|
|
55
54
|
AWS_ACCESS_KEY_ID: credentials.accessKeyId,
|
|
56
55
|
AWS_SECRET_ACCESS_KEY: credentials.secretAccessKey,
|
|
@@ -144,4 +143,4 @@ function findMountableParent(dir) {
|
|
|
144
143
|
}
|
|
145
144
|
return dir;
|
|
146
145
|
}
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJveHkuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJCQUFvQztBQUNwQyx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLHFEQUFpRDtBQUNqRCwyQ0FBbUQ7QUFDbkQseURBQXlFO0FBRXpFLE1BQU0sTUFBTSxHQUFHLE1BQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLG1DQUFJLFFBQVEsQ0FBQztBQUVsRCxJQUFBLHNCQUFTLEVBQ1Asb0RBQW9ELEVBQ3BELElBQUEsaUNBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25DLHdFQUF3RTtJQUN4RSxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkUsSUFBSSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFOUMsMENBQTBDO0lBQzFDLE1BQU0sUUFBUSxHQUFHO1FBQ2YsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksV0FBVyxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUs7S0FDaEgsQ0FBQztJQUVGLE1BQU0sc0JBQXNCLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUVGLEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxPQUFvQixFQUFFLFlBQXNCLEVBQUUsWUFBc0I7SUFDeEcsWUFBWSxDQUFDLElBQUksQ0FDZixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQ3JCLE9BQU8sQ0FBQyxZQUFZ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QyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QgfSBmcm9tICcuLi8uLi9saWIvaW50ZWctdGVzdCc7XG5pbXBvcnQgeyBzdGFydFByb3h5U2VydmVyIH0gZnJvbSAnLi4vLi4vbGliL3Byb3h5JztcbmltcG9ydCB7IFRlc3RGaXh0dXJlLCB3aXRoRGVmYXVsdEZpeHR1cmUgfSBmcm9tICcuLi8uLi9saWIvd2l0aC1jZGstYXBwJztcblxuY29uc3QgZG9ja2VyID0gcHJvY2Vzcy5lbnYuQ0RLX0RPQ0tFUiA/PyAnZG9ja2VyJztcblxuaW50ZWdUZXN0KFxuICAnYWxsIGNhbGxzIGZyb20gaXNvbGF0ZWQgY29udGFpbmVyIGdvIHRocm91Z2ggcHJveHknLFxuICB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICAvLyBGaW5kIHRoZSAnY2RrJyBjb21tYW5kIGFuZCBtYWtlIHN1cmUgaXQgaXMgbW91bnRlZCBpbnRvIHRoZSBjb250YWluZXJcbiAgICBjb25zdCBjZGtGdWxscGF0aCA9IChhd2FpdCBmaXh0dXJlLnNoZWxsKFsnd2hpY2gnLCAnY2RrJ10pKS50cmltKCk7XG4gICAgbGV0IGNka1RvcCA9IGZpbmRNb3VudGFibGVQYXJlbnQoY2RrRnVsbHBhdGgpO1xuXG4gICAgLy8gUnVuIGEgJ2NkayBkZXBsb3knIGluc2lkZSB0aGUgY29udGFpbmVyXG4gICAgY29uc3QgY29tbWFuZHMgPSBbXG4gICAgICBgZW52ICR7cmVuZGVyRW52KGZpeHR1cmUuY2RrU2hlbGxFbnYoKSl9ICR7Y2RrRnVsbHBhdGh9ICR7Zml4dHVyZS5jZGtEZXBsb3lDb21tYW5kTGluZSgndGVzdC0yJykuam9pbignICcpfSAtdmAsXG4gICAgXTtcblxuICAgIGF3YWl0IHJ1bkluSXNvbGF0ZWRDb250YWluZXIoZml4dHVyZSwgW2Nka1RvcF0sIGNvbW1hbmRzKTtcbiAgfSksXG4pO1xuXG5hc3luYyBmdW5jdGlvbiBydW5Jbklzb2xhdGVkQ29udGFpbmVyKGZpeHR1cmU6IFRlc3RGaXh0dXJlLCBwYXRoc1RvTW91bnQ6IHN0cmluZ1tdLCB0ZXN0Q29tbWFuZHM6IHN0cmluZ1tdKSB7XG4gIHBhdGhzVG9Nb3VudC5wdXNoKFxuICAgIGAke3Byb2Nlc3MuZW52LkhPTUV9YCxcbiAgICBmaXh0dXJlLmludGVnVGVzdERpcixcbiAgKTtcblxuICAvLyBSZXNvbHZlIGNyZWRlbnRpYWwgcHJvdmlkZXIgdG8gYW4gYWNjZXNzIGtleSB0aGF0IHdlIGNhbiBwYXNzIGludG8gdGhlIGNvbnRhaW5lclxuICBjb25zdCBjcmVkZW50aWFscyA9IGF3YWl0IGZpeHR1cmUuYXdzLmNyZWRlbnRpYWxzKCk7XG5cbiAgY29uc3QgcHJveHkgPSBhd2FpdCBzdGFydFByb3h5U2VydmVyKGZpeHR1cmUuaW50ZWdUZXN0RGlyKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBwcm94eVBvcnQgPSBwcm94eS5wb3J0O1xuXG4gICAgY29uc3Qgc2V0dXBDb21tYW5kcyA9IFtcbiAgICAgICdhcHQtZ2V0IHVwZGF0ZSAtcXEnLFxuICAgICAgJ2FwdC1nZXQgaW5zdGFsbCAtcXF5IG5vZGVqcyA+IC9kZXYvbnVsbCcsXG4gICAgICAuLi5pc29sYXRlZERvY2tlckNvbW1hbmRzKHByb3h5UG9ydCwgcHJveHkuY2VydFBhdGgpLFxuICAgIF07XG5cbiAgICBjb25zdCBzY3JpcHROYW1lID0gcGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCAnc2NyaXB0LnNoJyk7XG5cbiAgICAvLyBXcml0ZSBhIHNjcmlwdCBmaWxlXG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKHNjcmlwdE5hbWUsIFtcbiAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAnc2V0IC14JyxcbiAgICAgICdzZXQgLWV1JyxcbiAgICAgIC4uLnNldHVwQ29tbWFuZHMsXG4gICAgICAuLi50ZXN0Q29tbWFuZHMsXG4gICAgXS5qb2luKCdcXG4nKSwgJ3V0Zi04Jyk7XG5cbiAgICBhd2FpdCBmcy5jaG1vZChzY3JpcHROYW1lLCAwbzc1NSk7XG5cbiAgICAvLyBSdW4gY29tbWFuZHMgaW4gYSBEb2NrZXIgc2hlbGxcbiAgICBhd2FpdCBmaXh0dXJlLnNoZWxsKFtcbiAgICAgIGRvY2tlciwgJ3J1bicsICctLW5ldD1icmlkZ2UnLCAnLS1ybScsXG4gICAgICAuLi5wYXRoc1RvTW91bnQuZmxhdE1hcChwID0+IFsnLXYnLCBgJHtwfToke3B9YF0pLFxuICAgICAgLi4uWydIT01FJywgJ0FXU19BQ0NFU1NfS0VZX0lEJywgJ0FXU19TRUNSRVRfQUNDRVNTX0tFWScsICdBV1NfU0VTU0lPTl9UT0tFTiddLmZsYXRNYXAoZSA9PiBbJy1lJywgZV0pLFxuICAgICAgJy13JywgZml4dHVyZS5pbnRlZ1Rlc3REaXIsXG4gICAgICAnLS1jYXAtYWRkPU5FVF9BRE1JTicsXG4gICAgICAncHVibGljLmVjci5hd3MvdWJ1bnR1L3VidW50dToyNC4wNF9zdGFibGUnLFxuICAgICAgYCR7c2NyaXB0TmFtZX1gLFxuICAgIF0sIHtcbiAgICAgIHN0ZGlvOiAnaW5oZXJpdCcsXG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgQVdTX0FDQ0VTU19LRVlfSUQ6IGNyZWRlbnRpYWxzLmFjY2Vzc0tleUlkLFxuICAgICAgICBBV1NfU0VDUkVUX0FDQ0VTU19LRVk6IGNyZWRlbnRpYWxzLnNlY3JldEFjY2Vzc0tleSxcbiAgICAgICAgQVdTX1NFU1NJT05fVE9LRU46IGNyZWRlbnRpYWxzLnNlc3Npb25Ub2tlbixcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcHJveHkuc3RvcCgpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBjb21tYW5kcyBuZWNlc3NhcnkgdG8gaXNvbGF0ZSB0aGUgaW5zaWRlIG9mIHRoZSBjb250YWluZXIgZnJvbSB0aGUgaW50ZXJuZXQsXG4gKiBleGNlcHQgYnkgZ29pbmcgdGhyb3VnaCB0aGUgcHJveHlcbiAqL1xuZnVuY3Rpb24gaXNvbGF0ZWREb2NrZXJDb21tYW5kcyhwcm94eVBvcnQ6IG51bWJlciwgY2FCdW5kbGVQYXRoOiBzdHJpbmcpIHtcbiAgbGV0IGRlZmF1bHRCcmlkZ2VJcCA9ICcxNzIuMTcuMC4xJztcblxuICAvLyBUaGUgaG9zdCdzIGRlZmF1bHQgSVAgaXMgZGlmZmVyZW50IG9uIENvZGVCdWlsZCB0aGFuIGl0IGlzIG9uIG90aGVyIERvY2tlciBzeXN0ZW1zLlxuICBpZiAocHJvY2Vzcy5lbnYuQ09ERUJVSUxEX0JVSUxEX0FSTikge1xuICAgIGRlZmF1bHRCcmlkZ2VJcCA9ICcxNzIuMTguMC4xJztcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgJ2VjaG8gV29ya2luZy4uLicsXG4gICAgJ2FwdC1nZXQgaW5zdGFsbCAtcXF5IGN1cmwgbmV0LXRvb2xzIGlwdXRpbHMtcGluZyBkbnN1dGlscyBpcHRhYmxlcyA+IC9kZXYvbnVsbCcsXG4gICAgJycsXG4gICAgLy8gTG9va2luZyB1cCBgaG9zdC5kb2NrZXIuaW50ZXJuYWxgIGlzIG5lY2Vzc2FyeSBvbiBNYWNPUyBGaW5jaCBhbmQgRG9ja2VyIERlc2t0b3BcbiAgICAvLyBvbiBNYWMuIFRoZSBtYWdpYyBJUCBhZGRyZXNzIGlzIG5lY2Vzc2FyeSBvbiBDb2RlQnVpbGQgYW5kIEdpdEh1YiBBY3Rpb25zLlxuICAgIC8vXG4gICAgLy8gSSB0cmllZCBgLS1hZGQtaG9zdD1ob3N0LmRvY2tlci5pbnRlcm5hbDpob3N0LWdhdGV3YXlgIG9uIHRoZSBMaW51eGVzIGJ1dFxuICAgIC8vIGl0IGRvZXNuJ3QgY2hhbmdlIGFueXRoaW5nIG9uIGVpdGhlciBHSEEgb3IgQ29kZUJ1aWxkLCBzbyB3ZSdyZSBsZWZ0IHdpdGggdGhpc1xuICAgIC8vIGJhY2t1cCBzb2x1dGlvbi5cbiAgICAnZ2F0ZXdheT0kKGRpZyArc2hvcnQgaG9zdC5kb2NrZXIuaW50ZXJuYWwpJyxcbiAgICAnaWYgW1sgLXogXCIkZ2F0ZXdheVwiIF1dOyB0aGVuJyxcbiAgICBgICBnYXRld2F5PSR7ZGVmYXVsdEJyaWRnZUlwfWAsXG4gICAgJ2ZpJyxcbiAgICAnJyxcbiAgICAnIyBTb21lIGlwdGFibGVzIG1hbmlwdWxhdGlvbjsgdGhlcmUgbWlnaHQgYmUgdW5uZWNlc3NhcnkgY29tbWFuZHMgaW4gaGVyZSwgbm90IGFuIGV4cGVydCcsXG4gICAgJ2lwdGFibGVzIC1GJyxcbiAgICAnaXB0YWJsZXMgLVgnLFxuICAgICdpcHRhYmxlcyAtUCBJTlBVVCBEUk9QJyxcbiAgICAnaXB0YWJsZXMgLVAgT1VUUFVUIERST1AnLFxuICAgICdpcHRhYmxlcyAtUCBGT1JXQVJEIERST1AnLFxuICAgICdpcHRhYmxlcyAtQSBJTlBVVCAtaSBsbyAtaiBBQ0NFUFQnLFxuICAgICdpcHRhYmxlcyAtQSBPVVRQVVQgLW8gbG8gLWogQUNDRVBUJyxcbiAgICAnaXB0YWJsZXMgLUEgT1VUUFVUIC1kICRnYXRld2F5IC1qIEFDQ0VQVCcsXG4gICAgJ2lwdGFibGVzIC1BIElOUFVUIC1zICRnYXRld2F5IC1qIEFDQ0VQVCcsXG4gICAgJycsXG4gICAgJycsXG4gICAgYGlmIFtbICEgLWYgJHtjYUJ1bmRsZVBhdGh9IF1dOyB0aGVuYCxcbiAgICBgICAgIGVjaG8gXCJDb3VsZCBub3QgZmluZCAke2NhQnVuZGxlUGF0aH0sIHRoaXMgd2lsbCBwcm9iYWJseSBub3QgZ28gd2VsbC4gRXhpdGluZy5cIiA+JjJgLFxuICAgICcgICAgZXhpdCAxJyxcbiAgICAnZmknLFxuICAgICcnLFxuICAgICcjIENvbmZpZ3VyZSBhIGJ1bmNoIG9mIHRvb2xzIHRvIHdvcmsgd2l0aCB0aGUgcHJveHknLFxuICAgICdlY2hvIFwiKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXCInLFxuICAgICdlY2hvIFwifCAgRGlyZWN0IG5ldHdvcmsgdHJhZmZpYyBoYXMgYmVlbiBibG9ja2VkLCBldmVyeXRoaW5nIG11c3QgZ28gdGhyb3VnaCB0aGUgcHJveHkuICAgICB8XCInLFxuICAgICdlY2hvIFwiKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXCInLFxuICAgIGBleHBvcnQgSFRUUF9QUk9YWT1odHRwOi8vJGdhdGV3YXk6JHtwcm94eVBvcnR9L2AsXG4gICAgYGV4cG9ydCBIVFRQU19QUk9YWT1odHRwOi8vJGdhdGV3YXk6JHtwcm94eVBvcnR9L2AsXG4gICAgYGV4cG9ydCBOT0RFX0VYVFJBX0NBX0NFUlRTPSR7Y2FCdW5kbGVQYXRofWAsXG4gICAgYGV4cG9ydCBBV1NfQ0FfQlVORExFPSR7Y2FCdW5kbGVQYXRofWAsXG4gICAgYGV4cG9ydCBTU0xfQ0VSVF9GSUxFPSR7Y2FCdW5kbGVQYXRofWAsXG4gICAgJ2VjaG8gXCJBY3F1aXJlOjpodHRwOjpwcm94eSBcXFwiJEhUVFBfUFJPWFlcXFwiO1wiID4+IC9ldGMvYXB0L2FwdC5jb25mLmQvOTVwcm94aWVzJyxcbiAgICAnZWNobyBcIkFjcXVpcmU6Omh0dHBzOjpwcm94eSBcXFwiJEhUVFBTX1BST1hZXFxcIjtcIiA+PiAvZXRjL2FwdC9hcHQuY29uZi5kLzk1cHJveGllcycsXG4gIF07XG59XG5cbmZ1bmN0aW9uIHJlbmRlckVudihlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGVudikuZmlsdGVyKChbXywgdl0pID0+IHYpLm1hcCgoW2ssIHZdKSA9PiBgJHtrfT0nJHt2fSdgKS5qb2luKCcgJyk7XG59XG5cbi8qKlxuICogRmluZCBhIGJyb2FkbHkgbW91bnRhYmxlIHBhcmVudCBvZiB0aGUgZ2l2ZW4gZGlyZWN0b3J5XG4gKlxuICogV2UgZG9uJ3Qgd2FudCB0byBqdXN0IG1vdW50IHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LCBiZWNhdXNlXG4gKiBpdCBjb3VsZCBlbmQgdXAgYmVpbmcgYC92YXJgICh0b3AtbGV2ZWwgZGlyIG9mIHRtcGRpciBvbiBNYWMpLlxuICovXG5mdW5jdGlvbiBmaW5kTW91bnRhYmxlUGFyZW50KGRpcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgY2FuZGlkYXRlcyA9IFtcbiAgICBvcy50bXBkaXIoKSxcbiAgICBwcm9jZXNzLmVudi5UTVBESVIsXG4gICAgcHJvY2Vzcy5lbnYuSE9NRSxcbiAgXTtcbiAgZm9yIChjb25zdCBjYW5kIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICBpZiAoY2FuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoZGlyLnN0YXJ0c1dpdGgoY2FuZCkpIHtcbiAgICAgIGNvbnN0IHN1ZmZpeCA9IGRpci5zdWJzdHJpbmcoY2FuZC5sZW5ndGgpO1xuICAgICAgY29uc3QgZmlyc3RDaGlsZERpciA9IHN1ZmZpeC5zcGxpdCgnLycpWzBdO1xuXG4gICAgICByZXR1cm4gcGF0aC5qb2luKGNhbmQsIGZpcnN0Q2hpbGREaXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGlyO1xufVxuIl19
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJveHkuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJCQUFvQztBQUNwQyx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLHFEQUFpRDtBQUNqRCwyQ0FBbUQ7QUFDbkQseURBQXlFO0FBRXpFLE1BQU0sTUFBTSxHQUFHLE1BQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLG1DQUFJLFFBQVEsQ0FBQztBQUVsRCxJQUFBLHNCQUFTLEVBQ1Asb0RBQW9ELEVBQ3BELElBQUEsaUNBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25DLHdFQUF3RTtJQUN4RSxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkUsSUFBSSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFOUMsMENBQTBDO0lBQzFDLE1BQU0sUUFBUSxHQUFHO1FBQ2YsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksV0FBVyxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUs7S0FDaEgsQ0FBQztJQUVGLE1BQU0sc0JBQXNCLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUVGLEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxPQUFvQixFQUFFLFlBQXNCLEVBQUUsWUFBc0I7SUFDeEcsWUFBWSxDQUFDLElBQUksQ0FDZixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQ3JCLE9BQU8sQ0FBQyxZQUFZ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LENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QgfSBmcm9tICcuLi8uLi9saWIvaW50ZWctdGVzdCc7XG5pbXBvcnQgeyBzdGFydFByb3h5U2VydmVyIH0gZnJvbSAnLi4vLi4vbGliL3Byb3h5JztcbmltcG9ydCB7IFRlc3RGaXh0dXJlLCB3aXRoRGVmYXVsdEZpeHR1cmUgfSBmcm9tICcuLi8uLi9saWIvd2l0aC1jZGstYXBwJztcblxuY29uc3QgZG9ja2VyID0gcHJvY2Vzcy5lbnYuQ0RLX0RPQ0tFUiA/PyAnZG9ja2VyJztcblxuaW50ZWdUZXN0KFxuICAnYWxsIGNhbGxzIGZyb20gaXNvbGF0ZWQgY29udGFpbmVyIGdvIHRocm91Z2ggcHJveHknLFxuICB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICAvLyBGaW5kIHRoZSAnY2RrJyBjb21tYW5kIGFuZCBtYWtlIHN1cmUgaXQgaXMgbW91bnRlZCBpbnRvIHRoZSBjb250YWluZXJcbiAgICBjb25zdCBjZGtGdWxscGF0aCA9IChhd2FpdCBmaXh0dXJlLnNoZWxsKFsnd2hpY2gnLCAnY2RrJ10pKS50cmltKCk7XG4gICAgbGV0IGNka1RvcCA9IGZpbmRNb3VudGFibGVQYXJlbnQoY2RrRnVsbHBhdGgpO1xuXG4gICAgLy8gUnVuIGEgJ2NkayBkZXBsb3knIGluc2lkZSB0aGUgY29udGFpbmVyXG4gICAgY29uc3QgY29tbWFuZHMgPSBbXG4gICAgICBgZW52ICR7cmVuZGVyRW52KGZpeHR1cmUuY2RrU2hlbGxFbnYoKSl9ICR7Y2RrRnVsbHBhdGh9ICR7Zml4dHVyZS5jZGtEZXBsb3lDb21tYW5kTGluZSgndGVzdC0yJykuam9pbignICcpfSAtdmAsXG4gICAgXTtcblxuICAgIGF3YWl0IHJ1bkluSXNvbGF0ZWRDb250YWluZXIoZml4dHVyZSwgW2Nka1RvcF0sIGNvbW1hbmRzKTtcbiAgfSksXG4pO1xuXG5hc3luYyBmdW5jdGlvbiBydW5Jbklzb2xhdGVkQ29udGFpbmVyKGZpeHR1cmU6IFRlc3RGaXh0dXJlLCBwYXRoc1RvTW91bnQ6IHN0cmluZ1tdLCB0ZXN0Q29tbWFuZHM6IHN0cmluZ1tdKSB7XG4gIHBhdGhzVG9Nb3VudC5wdXNoKFxuICAgIGAke3Byb2Nlc3MuZW52LkhPTUV9YCxcbiAgICBmaXh0dXJlLmludGVnVGVzdERpcixcbiAgKTtcblxuICAvLyBSZXNvbHZlIGNyZWRlbnRpYWwgcHJvdmlkZXIgdG8gYW4gYWNjZXNzIGtleSB0aGF0IHdlIGNhbiBwYXNzIGludG8gdGhlIGNvbnRhaW5lclxuICBjb25zdCBjcmVkZW50aWFscyA9IGF3YWl0IGZpeHR1cmUuYXdzLmNyZWRlbnRpYWxzKCk7XG5cbiAgY29uc3QgcHJveHkgPSBhd2FpdCBzdGFydFByb3h5U2VydmVyKGZpeHR1cmUuaW50ZWdUZXN0RGlyKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBwcm94eVBvcnQgPSBwcm94eS5wb3J0O1xuXG4gICAgY29uc3Qgc2V0dXBDb21tYW5kcyA9IFtcbiAgICAgICdhcHQtZ2V0IHVwZGF0ZSAtcXEnLFxuICAgICAgJ2FwdC1nZXQgaW5zdGFsbCAtcXF5IG5vZGVqcyA+IC9kZXYvbnVsbCcsXG4gICAgICAuLi5pc29sYXRlZERvY2tlckNvbW1hbmRzKHByb3h5UG9ydCwgcHJveHkuY2VydFBhdGgpLFxuICAgIF07XG5cbiAgICBjb25zdCBzY3JpcHROYW1lID0gcGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCAnc2NyaXB0LnNoJyk7XG5cbiAgICAvLyBXcml0ZSBhIHNjcmlwdCBmaWxlXG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKHNjcmlwdE5hbWUsIFtcbiAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAnc2V0IC14JyxcbiAgICAgICdzZXQgLWV1JyxcbiAgICAgIC4uLnNldHVwQ29tbWFuZHMsXG4gICAgICAuLi50ZXN0Q29tbWFuZHMsXG4gICAgXS5qb2luKCdcXG4nKSwgJ3V0Zi04Jyk7XG5cbiAgICBhd2FpdCBmcy5jaG1vZChzY3JpcHROYW1lLCAwbzc1NSk7XG5cbiAgICAvLyBSdW4gY29tbWFuZHMgaW4gYSBEb2NrZXIgc2hlbGxcbiAgICBhd2FpdCBmaXh0dXJlLnNoZWxsKFtcbiAgICAgIGRvY2tlciwgJ3J1bicsICctLW5ldD1icmlkZ2UnLCAnLS1ybScsXG4gICAgICAuLi5wYXRoc1RvTW91bnQuZmxhdE1hcChwID0+IFsnLXYnLCBgJHtwfToke3B9YF0pLFxuICAgICAgLi4uWydIT01FJywgJ0FXU19BQ0NFU1NfS0VZX0lEJywgJ0FXU19TRUNSRVRfQUNDRVNTX0tFWScsICdBV1NfU0VTU0lPTl9UT0tFTiddLmZsYXRNYXAoZSA9PiBbJy1lJywgZV0pLFxuICAgICAgJy13JywgZml4dHVyZS5pbnRlZ1Rlc3REaXIsXG4gICAgICAnLS1jYXAtYWRkPU5FVF9BRE1JTicsXG4gICAgICAncHVibGljLmVjci5hd3MvdWJ1bnR1L3VidW50dToyNC4wNF9zdGFibGUnLFxuICAgICAgYCR7c2NyaXB0TmFtZX1gLFxuICAgIF0sIHtcbiAgICAgIG1vZEVudjoge1xuICAgICAgICBBV1NfQUNDRVNTX0tFWV9JRDogY3JlZGVudGlhbHMuYWNjZXNzS2V5SWQsXG4gICAgICAgIEFXU19TRUNSRVRfQUNDRVNTX0tFWTogY3JlZGVudGlhbHMuc2VjcmV0QWNjZXNzS2V5LFxuICAgICAgICBBV1NfU0VTU0lPTl9UT0tFTjogY3JlZGVudGlhbHMuc2Vzc2lvblRva2VuLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBwcm94eS5zdG9wKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGNvbW1hbmRzIG5lY2Vzc2FyeSB0byBpc29sYXRlIHRoZSBpbnNpZGUgb2YgdGhlIGNvbnRhaW5lciBmcm9tIHRoZSBpbnRlcm5ldCxcbiAqIGV4Y2VwdCBieSBnb2luZyB0aHJvdWdoIHRoZSBwcm94eVxuICovXG5mdW5jdGlvbiBpc29sYXRlZERvY2tlckNvbW1hbmRzKHByb3h5UG9ydDogbnVtYmVyLCBjYUJ1bmRsZVBhdGg6IHN0cmluZykge1xuICBsZXQgZGVmYXVsdEJyaWRnZUlwID0gJzE3Mi4xNy4wLjEnO1xuXG4gIC8vIFRoZSBob3N0J3MgZGVmYXVsdCBJUCBpcyBkaWZmZXJlbnQgb24gQ29kZUJ1aWxkIHRoYW4gaXQgaXMgb24gb3RoZXIgRG9ja2VyIHN5c3RlbXMuXG4gIGlmIChwcm9jZXNzLmVudi5DT0RFQlVJTERfQlVJTERfQVJOKSB7XG4gICAgZGVmYXVsdEJyaWRnZUlwID0gJzE3Mi4xOC4wLjEnO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICAnZWNobyBXb3JraW5nLi4uJyxcbiAgICAnYXB0LWdldCBpbnN0YWxsIC1xcXkgY3VybCBuZXQtdG9vbHMgaXB1dGlscy1waW5nIGRuc3V0aWxzIGlwdGFibGVzID4gL2Rldi9udWxsJyxcbiAgICAnJyxcbiAgICAvLyBMb29raW5nIHVwIGBob3N0LmRvY2tlci5pbnRlcm5hbGAgaXMgbmVjZXNzYXJ5IG9uIE1hY09TIEZpbmNoIGFuZCBEb2NrZXIgRGVza3RvcFxuICAgIC8vIG9uIE1hYy4gVGhlIG1hZ2ljIElQIGFkZHJlc3MgaXMgbmVjZXNzYXJ5IG9uIENvZGVCdWlsZCBhbmQgR2l0SHViIEFjdGlvbnMuXG4gICAgLy9cbiAgICAvLyBJIHRyaWVkIGAtLWFkZC1ob3N0PWhvc3QuZG9ja2VyLmludGVybmFsOmhvc3QtZ2F0ZXdheWAgb24gdGhlIExpbnV4ZXMgYnV0XG4gICAgLy8gaXQgZG9lc24ndCBjaGFuZ2UgYW55dGhpbmcgb24gZWl0aGVyIEdIQSBvciBDb2RlQnVpbGQsIHNvIHdlJ3JlIGxlZnQgd2l0aCB0aGlzXG4gICAgLy8gYmFja3VwIHNvbHV0aW9uLlxuICAgICdnYXRld2F5PSQoZGlnICtzaG9ydCBob3N0LmRvY2tlci5pbnRlcm5hbCknLFxuICAgICdpZiBbWyAteiBcIiRnYXRld2F5XCIgXV07IHRoZW4nLFxuICAgIGAgIGdhdGV3YXk9JHtkZWZhdWx0QnJpZGdlSXB9YCxcbiAgICAnZmknLFxuICAgICcnLFxuICAgICcjIFNvbWUgaXB0YWJsZXMgbWFuaXB1bGF0aW9uOyB0aGVyZSBtaWdodCBiZSB1bm5lY2Vzc2FyeSBjb21tYW5kcyBpbiBoZXJlLCBub3QgYW4gZXhwZXJ0JyxcbiAgICAnaXB0YWJsZXMgLUYnLFxuICAgICdpcHRhYmxlcyAtWCcsXG4gICAgJ2lwdGFibGVzIC1QIElOUFVUIERST1AnLFxuICAgICdpcHRhYmxlcyAtUCBPVVRQVVQgRFJPUCcsXG4gICAgJ2lwdGFibGVzIC1QIEZPUldBUkQgRFJPUCcsXG4gICAgJ2lwdGFibGVzIC1BIElOUFVUIC1pIGxvIC1qIEFDQ0VQVCcsXG4gICAgJ2lwdGFibGVzIC1BIE9VVFBVVCAtbyBsbyAtaiBBQ0NFUFQnLFxuICAgICdpcHRhYmxlcyAtQSBPVVRQVVQgLWQgJGdhdGV3YXkgLWogQUNDRVBUJyxcbiAgICAnaXB0YWJsZXMgLUEgSU5QVVQgLXMgJGdhdGV3YXkgLWogQUNDRVBUJyxcbiAgICAnJyxcbiAgICAnJyxcbiAgICBgaWYgW1sgISAtZiAke2NhQnVuZGxlUGF0aH0gXV07IHRoZW5gLFxuICAgIGAgICAgZWNobyBcIkNvdWxkIG5vdCBmaW5kICR7Y2FCdW5kbGVQYXRofSwgdGhpcyB3aWxsIHByb2JhYmx5IG5vdCBnbyB3ZWxsLiBFeGl0aW5nLlwiID4mMmAsXG4gICAgJyAgICBleGl0IDEnLFxuICAgICdmaScsXG4gICAgJycsXG4gICAgJyMgQ29uZmlndXJlIGEgYnVuY2ggb2YgdG9vbHMgdG8gd29yayB3aXRoIHRoZSBwcm94eScsXG4gICAgJ2VjaG8gXCIrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcIicsXG4gICAgJ2VjaG8gXCJ8ICBEaXJlY3QgbmV0d29yayB0cmFmZmljIGhhcyBiZWVuIGJsb2NrZWQsIGV2ZXJ5dGhpbmcgbXVzdCBnbyB0aHJvdWdoIHRoZSBwcm94eS4gICAgIHxcIicsXG4gICAgJ2VjaG8gXCIrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcIicsXG4gICAgYGV4cG9ydCBIVFRQX1BST1hZPWh0dHA6Ly8kZ2F0ZXdheToke3Byb3h5UG9ydH0vYCxcbiAgICBgZXhwb3J0IEhUVFBTX1BST1hZPWh0dHA6Ly8kZ2F0ZXdheToke3Byb3h5UG9ydH0vYCxcbiAgICBgZXhwb3J0IE5PREVfRVhUUkFfQ0FfQ0VSVFM9JHtjYUJ1bmRsZVBhdGh9YCxcbiAgICBgZXhwb3J0IEFXU19DQV9CVU5ETEU9JHtjYUJ1bmRsZVBhdGh9YCxcbiAgICBgZXhwb3J0IFNTTF9DRVJUX0ZJTEU9JHtjYUJ1bmRsZVBhdGh9YCxcbiAgICAnZWNobyBcIkFjcXVpcmU6Omh0dHA6OnByb3h5IFxcXCIkSFRUUF9QUk9YWVxcXCI7XCIgPj4gL2V0Yy9hcHQvYXB0LmNvbmYuZC85NXByb3hpZXMnLFxuICAgICdlY2hvIFwiQWNxdWlyZTo6aHR0cHM6OnByb3h5IFxcXCIkSFRUUFNfUFJPWFlcXFwiO1wiID4+IC9ldGMvYXB0L2FwdC5jb25mLmQvOTVwcm94aWVzJyxcbiAgXTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRW52KGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZW52KS5maWx0ZXIoKFtfLCB2XSkgPT4gdikubWFwKChbaywgdl0pID0+IGAke2t9PScke3Z9J2ApLmpvaW4oJyAnKTtcbn1cblxuLyoqXG4gKiBGaW5kIGEgYnJvYWRseSBtb3VudGFibGUgcGFyZW50IG9mIHRoZSBnaXZlbiBkaXJlY3RvcnlcbiAqXG4gKiBXZSBkb24ndCB3YW50IHRvIGp1c3QgbW91bnQgdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnksIGJlY2F1c2VcbiAqIGl0IGNvdWxkIGVuZCB1cCBiZWluZyBgL3ZhcmAgKHRvcC1sZXZlbCBkaXIgb2YgdG1wZGlyIG9uIE1hYykuXG4gKi9cbmZ1bmN0aW9uIGZpbmRNb3VudGFibGVQYXJlbnQoZGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBjYW5kaWRhdGVzID0gW1xuICAgIG9zLnRtcGRpcigpLFxuICAgIHByb2Nlc3MuZW52LlRNUERJUixcbiAgICBwcm9jZXNzLmVudi5IT01FLFxuICBdO1xuICBmb3IgKGNvbnN0IGNhbmQgb2YgY2FuZGlkYXRlcykge1xuICAgIGlmIChjYW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChkaXIuc3RhcnRzV2l0aChjYW5kKSkge1xuICAgICAgY29uc3Qgc3VmZml4ID0gZGlyLnN1YnN0cmluZyhjYW5kLmxlbmd0aCk7XG4gICAgICBjb25zdCBmaXJzdENoaWxkRGlyID0gc3VmZml4LnNwbGl0KCcvJylbMF07XG5cbiAgICAgIHJldHVybiBwYXRoLmpvaW4oY2FuZCwgZmlyc3RDaGlsZERpcik7XG4gICAgfVxuICB9XG4gIHJldHVybiBkaXI7XG59XG4iXX0=
|
|
@@ -65,7 +65,6 @@ async function runInIsolatedContainer(fixture: TestFixture, pathsToMount: string
|
|
|
65
65
|
'public.ecr.aws/ubuntu/ubuntu:24.04_stable',
|
|
66
66
|
`${scriptName}`,
|
|
67
67
|
], {
|
|
68
|
-
stdio: 'inherit',
|
|
69
68
|
modEnv: {
|
|
70
69
|
AWS_ACCESS_KEY_ID: credentials.accessKeyId,
|
|
71
70
|
AWS_SECRET_ACCESS_KEY: credentials.secretAccessKey,
|