@aws-cdk-testing/cli-integ 3.4.5 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/lib/aws.js +6 -9
  2. package/lib/cli/query-github.js +2 -3
  3. package/lib/cli/run-suite.js +2 -3
  4. package/lib/cli/stage-distribution.js +4 -4
  5. package/lib/eventually.js +3 -3
  6. package/lib/files.js +2 -3
  7. package/lib/github.js +5 -6
  8. package/lib/integ-test.js +58 -3
  9. package/lib/package-sources/release-source.d.ts +1 -1
  10. package/lib/package-sources/release-source.js +2 -3
  11. package/lib/package-sources/repo-source.d.ts +1 -1
  12. package/lib/package-sources/repo-source.js +1 -1
  13. package/lib/package-sources/repo-tools/npm.js +4 -5
  14. package/lib/package-sources/subprocess.d.ts +1 -1
  15. package/lib/package-sources/subprocess.js +1 -1
  16. package/lib/process.js +5 -6
  17. package/lib/proxy.d.ts +1 -1
  18. package/lib/proxy.js +2 -2
  19. package/lib/resource-pool.js +5 -3
  20. package/lib/shell.d.ts +3 -3
  21. package/lib/shell.js +8 -12
  22. package/lib/staging/codeartifact.js +8 -11
  23. package/lib/staging/maven.d.ts +2 -2
  24. package/lib/staging/maven.js +3 -5
  25. package/lib/staging/npm.d.ts +2 -2
  26. package/lib/staging/npm.js +1 -1
  27. package/lib/staging/nuget.d.ts +2 -2
  28. package/lib/staging/nuget.js +1 -1
  29. package/lib/staging/parallel-shell.js +2 -2
  30. package/lib/staging/pypi.d.ts +2 -2
  31. package/lib/staging/pypi.js +1 -1
  32. package/lib/with-aws.d.ts +2 -2
  33. package/lib/with-aws.js +5 -4
  34. package/lib/with-cdk-app.d.ts +7 -5
  35. package/lib/with-cdk-app.js +30 -33
  36. package/lib/with-cli-lib.d.ts +4 -3
  37. package/lib/with-cli-lib.js +2 -1
  38. package/lib/with-packages.d.ts +1 -1
  39. package/lib/with-packages.js +1 -1
  40. package/lib/with-sam.d.ts +3 -3
  41. package/lib/with-sam.js +5 -7
  42. package/lib/with-temporary-directory.d.ts +1 -1
  43. package/lib/with-temporary-directory.js +1 -1
  44. package/lib/xpmutex.js +5 -3
  45. package/npm-shrinkwrap.json +8722 -0
  46. package/package.json +11 -7
  47. package/resources/cdk-apps/refactoring/cdk.json +7 -0
  48. package/resources/cdk-apps/refactoring/refactoring.js +18 -0
  49. package/test-reports/junit.xml +15 -0
  50. package/tests/cli-integ-tests/cdk-assets/cdk-assets-uses-profile.integtest.js +11 -11
  51. package/tests/cli-integ-tests/cdk-assets/smoketest.integtest.js +9 -9
  52. package/tests/cli-integ-tests/cdk-bootstrap-add-tags.integtest.js +2 -3
  53. package/tests/cli-integ-tests/cdk-bootstrap-can-add-tags-then-update-tags-during-re-bootstrap.integtest.js +2 -3
  54. package/tests/cli-integ-tests/cdk-bootstrap-can-bootstrap-without-execution.integtest.js +2 -3
  55. package/tests/cli-integ-tests/cdk-bootstrap-can-create-a-legacy-bootstrap-stack-with---public-access-block-configuration-false.integtest.js +2 -3
  56. package/tests/cli-integ-tests/cdk-bootstrap-can-create-multiple-legacy-bootstrap-stacks.integtest.js +2 -3
  57. package/tests/cli-integ-tests/cdk-bootstrap-can-remove-custompermissionsboundary.integtest.js +4 -6
  58. package/tests/cli-integ-tests/cdk-bootstrap-can-remove-trusted-account.integtest.js +2 -3
  59. package/tests/cli-integ-tests/cdk-bootstrap-create-ecr-with-tag-immutability-to-set-on.integtest.js +4 -5
  60. package/tests/cli-integ-tests/cdk-bootstrap-switch-on-termination-protection.integtest.js +2 -3
  61. package/tests/cli-integ-tests/cdk-ci-true-output-to-stdout.integtest.js +1 -1
  62. package/tests/cli-integ-tests/cdk-deploy---method-direct.integtest.js +2 -3
  63. package/tests/cli-integ-tests/cdk-deploy-and-test-stack-with-lambda-asset.integtest.js +3 -4
  64. package/tests/cli-integ-tests/cdk-deploy-deletes-all-notification-arns-when-empty-array-is-passed.integtest.js +3 -4
  65. package/tests/cli-integ-tests/cdk-deploy-preserves-existing-notification-arns-when-not-specified.integtest.js +2 -3
  66. package/tests/cli-integ-tests/cdk-deploy-with-import-existing-resources-true.integtest.js +2 -3
  67. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-flag.integtest.js +2 -3
  68. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop-and-flag.integtest.js +2 -3
  69. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop.integtest.js +2 -3
  70. package/tests/cli-integ-tests/cdk-deploy-with-parameters-multi.integtest.js +3 -4
  71. package/tests/cli-integ-tests/cdk-deploy-with-parameters.integtest.js +2 -3
  72. package/tests/cli-integ-tests/cdk-deploy-without-execute-a-named-change-set.integtest.js +2 -3
  73. package/tests/cli-integ-tests/cdk-deploy-without-import-existing-resources.integtest.js +2 -3
  74. package/tests/cli-integ-tests/cdk-deploy.integtest.js +2 -3
  75. package/tests/cli-integ-tests/cdk-destroy-interactive.integtest.js +6 -7
  76. package/tests/cli-integ-tests/cdk-fast-deploy.integtest.js +4 -5
  77. package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-s3-objects.integtest.js +2 -2
  78. package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-waits-for-deployment-to-complete.integtest.js +6 -5
  79. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-appsync-apis-with-many-functions.integtest.js +2 -3
  80. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-ecs-service.integtest.js +3 -4
  81. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-fn::importvalue-intrinsic.integtest.js +3 -4
  82. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-lambda-functions-description-and-environment-variables.integtest.js +3 -4
  83. package/tests/cli-integ-tests/cdk-hotswap-ecs-deployment-respects-properties-override.integtest.js +5 -6
  84. package/tests/cli-integ-tests/cdk-import-interactive.integtest.js +5 -6
  85. package/tests/cli-integ-tests/cdk-lib-cli-lib-deploy.integtest.js +2 -3
  86. package/tests/cli-integ-tests/cdk-lib-security-related-changes-without-a-cli-are-expected-to-fail-when-approval-is-required.integtest.js +1 -2
  87. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-csharp.integtest.js +1 -1
  88. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-java.integtest.js +1 -1
  89. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-python.integtest.js +1 -1
  90. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-typescript.integtest.js +1 -1
  91. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-csharp.integtest.js +1 -1
  92. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-java.integtest.js +1 -1
  93. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-python.integtest.js +1 -1
  94. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-typescript.integtest.js +1 -1
  95. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-generates-migrate.json.integtest.js +1 -1
  96. package/tests/cli-integ-tests/cdk-migrate/testcase.d.ts +1 -1
  97. package/tests/cli-integ-tests/cdk-migrate/testcase.js +4 -6
  98. package/tests/cli-integ-tests/cdk-nested-stack-with-parameters.integtest.js +2 -3
  99. package/tests/cli-integ-tests/cdk-refactor-dry-run.integtest.d.ts +1 -0
  100. package/tests/cli-integ-tests/cdk-refactor-dry-run.integtest.js +41 -0
  101. package/tests/cli-integ-tests/cdk-requests-go-through-a-proxy-when-configured.integtest.js +2 -3
  102. package/tests/cli-integ-tests/cdk-stack-in-update_rollback_complete-state-can-be-updated.integtest.js +5 -6
  103. package/tests/cli-integ-tests/cdk-test-migrate-deployment-for-app-with-localfile-source-in-migrate.json.integtest.js +4 -4
  104. package/tests/cli-integ-tests/cdk-update-to-stack-in-rollback_complete-state-will-delete-stack-and-create-a-new-one.integtest.js +5 -6
  105. package/tests/cli-integ-tests/proxy.integtest.js +2 -3
  106. package/tests/init-go/init-go.integtest.js +2 -3
  107. package/tests/init-typescript-app/init-typescript-app.integtest.js +1 -1
  108. package/tests/tool-integrations/amplify.integtest.js +4 -4
  109. package/tests/tool-integrations/with-tool-context.d.ts +5 -5
  110. package/tests/tool-integrations/with-tool-context.js +1 -1
  111. package/.eslintrc.js +0 -9
  112. package/lib/aws.ts +0 -303
  113. package/lib/cli/query-github.ts +0 -56
  114. package/lib/cli/run-suite.ts +0 -153
  115. package/lib/cli/stage-distribution.ts +0 -262
  116. package/lib/cli/test-root.ts +0 -3
  117. package/lib/corking.ts +0 -33
  118. package/lib/eventually.ts +0 -42
  119. package/lib/files.ts +0 -80
  120. package/lib/github.ts +0 -43
  121. package/lib/index.ts +0 -13
  122. package/lib/integ-test.ts +0 -110
  123. package/lib/lists.ts +0 -9
  124. package/lib/memoize.ts +0 -14
  125. package/lib/npm.ts +0 -41
  126. package/lib/package-sources/release-source.ts +0 -82
  127. package/lib/package-sources/repo-source.ts +0 -112
  128. package/lib/package-sources/repo-tools/npm.ts +0 -48
  129. package/lib/package-sources/source.ts +0 -35
  130. package/lib/package-sources/subprocess.ts +0 -15
  131. package/lib/process.ts +0 -154
  132. package/lib/proxy.ts +0 -64
  133. package/lib/resource-pool.ts +0 -140
  134. package/lib/resources.ts +0 -4
  135. package/lib/shell.ts +0 -331
  136. package/lib/staging/codeartifact.ts +0 -387
  137. package/lib/staging/maven.ts +0 -95
  138. package/lib/staging/npm.ts +0 -62
  139. package/lib/staging/nuget.ts +0 -75
  140. package/lib/staging/parallel-shell.ts +0 -51
  141. package/lib/staging/pypi.ts +0 -50
  142. package/lib/staging/usage-dir.ts +0 -99
  143. package/lib/with-aws.ts +0 -111
  144. package/lib/with-cdk-app.ts +0 -845
  145. package/lib/with-cli-lib.ts +0 -149
  146. package/lib/with-packages.ts +0 -15
  147. package/lib/with-sam.ts +0 -294
  148. package/lib/with-temporary-directory.ts +0 -35
  149. package/lib/with-timeout.ts +0 -33
  150. package/lib/xpmutex.ts +0 -218
  151. package/resources/cli-regression-patches/v2.130.0/node_modules/@aws-cdk-testing/cli-integ/resources/cdk-apps/sam_cdk_integ_app/lib/nested-stack.js +0 -19
  152. package/resources/cli-regression-patches/v2.130.0/node_modules/@aws-cdk-testing/cli-integ/resources/cdk-apps/sam_cdk_integ_app/lib/test-stack.js +0 -134
  153. package/tests/cli-integ-tests/cdk---exclusively-selects-only-selected-stack.integtest.ts +0 -29
  154. package/tests/cli-integ-tests/cdk-assets/cdk-assets-uses-profile.integtest.ts +0 -92
  155. package/tests/cli-integ-tests/cdk-assets/smoketest.integtest.ts +0 -82
  156. package/tests/cli-integ-tests/cdk-automatic-ordering-with-concurrency.integtest.ts +0 -15
  157. package/tests/cli-integ-tests/cdk-automatic-ordering.integtest.ts +0 -15
  158. package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and---no-rollback-is-removed-from-flags.integtest.ts +0 -40
  159. package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and-change-contains-a-replacement.integtest.ts +0 -40
  160. package/tests/cli-integ-tests/cdk-automatic-rollback-if-replacement-and---no-rollback-is-removed-from-flags.integtest.ts +0 -29
  161. package/tests/cli-integ-tests/cdk-bootstrap-a-customized-template-vendor-will-not-overwrite-the-default-template.integtest.ts +0 -42
  162. package/tests/cli-integ-tests/cdk-bootstrap-add-tags.integtest.ts +0 -26
  163. package/tests/cli-integ-tests/cdk-bootstrap-can-add-tags-then-update-tags-during-re-bootstrap.integtest.ts +0 -28
  164. package/tests/cli-integ-tests/cdk-bootstrap-can-and-deploy-if-omitting-execution-policies.integtest.ts +0 -21
  165. package/tests/cli-integ-tests/cdk-bootstrap-can-bootstrap-without-execution.integtest.ts +0 -22
  166. package/tests/cli-integ-tests/cdk-bootstrap-can-create-a-legacy-bootstrap-stack-with---public-access-block-configuration-false.integtest.ts +0 -21
  167. package/tests/cli-integ-tests/cdk-bootstrap-can-create-multiple-legacy-bootstrap-stacks.integtest.ts +0 -27
  168. package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-modern-synthesized-stack-even-if-bootstrap-stack-name-is-unknown.integtest.ts +0 -24
  169. package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-with-session-tags-on-the-deploy.integtest.ts +0 -25
  170. package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-without-execution-role-and-with-session-tags-on-deploy-role.integtest.ts +0 -22
  171. package/tests/cli-integ-tests/cdk-bootstrap-can-dump-the-template.integtest.ts +0 -32
  172. package/tests/cli-integ-tests/cdk-bootstrap-can-remove-custompermissionsboundary.integtest.ts +0 -77
  173. package/tests/cli-integ-tests/cdk-bootstrap-can-remove-trusted-account.integtest.ts +0 -30
  174. package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-(with-slashes)-to-bootstrap.integtest.ts +0 -15
  175. package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-to-bootstrap.integtest.ts +0 -15
  176. package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-default-permissions-boundary-to-bootstrap.integtest.ts +0 -15
  177. package/tests/cli-integ-tests/cdk-bootstrap-create-ecr-with-tag-immutability-to-set-on.integtest.ts +0 -34
  178. package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap-(with-docker-image).integtest.ts +0 -22
  179. package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap.integtest.ts +0 -22
  180. package/tests/cli-integ-tests/cdk-bootstrap-deploy-old-style-synthesis-to-new-style-bootstrap.integtest.ts +0 -21
  181. package/tests/cli-integ-tests/cdk-bootstrap-switch-on-termination-protection.integtest.ts +0 -24
  182. package/tests/cli-integ-tests/cdk-bootstrap-upgrade-legacy-bootstrap-stack-to-new-bootstrap-stack-while-in-use.integtest.ts +0 -47
  183. package/tests/cli-integ-tests/cdk-can-still-load-old-assemblies.integtest.ts +0 -57
  184. 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 +0 -22
  185. package/tests/cli-integ-tests/cdk-cdk-diff---fail-with-multiple-stack-exits-with-if-any-of-the-stacks-contains-a-diff.integtest.ts +0 -22
  186. 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 +0 -19
  187. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-changes-are-present.integtest.ts +0 -14
  188. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-access-control-config.integtest.ts +0 -13
  189. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-assignment.integtest.ts +0 -13
  190. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-perm-set-with-managed-policy.integtest.ts +0 -13
  191. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-perm-set-without-managed-policy.integtest.ts +0 -13
  192. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-access-control-information.integtest.ts +0 -35
  193. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-assignment-information.integtest.ts +0 -37
  194. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-with-managed-policy-information.integtest.ts +0 -35
  195. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-without-managed-policy-information.integtest.ts +0 -37
  196. package/tests/cli-integ-tests/cdk-cdk-diff-doesnt-show-resource-metadata-changes.integtest.ts +0 -23
  197. package/tests/cli-integ-tests/cdk-cdk-diff-shows-resource-metadata-changes-with---no-change-set.integtest.ts +0 -23
  198. package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-and-custom-toolkit-stack-name-and-qualifier-does-not-fail.integtest.ts +0 -39
  199. package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-does-not-fail.integtest.ts +0 -28
  200. package/tests/cli-integ-tests/cdk-cdk-diff.integtest.ts +0 -18
  201. package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json---long.integtest.ts +0 -50
  202. package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json.integtest.ts +0 -95
  203. package/tests/cli-integ-tests/cdk-cdk-ls.integtest.ts +0 -36
  204. package/tests/cli-integ-tests/cdk-cdk-notices-are-displayed-correctly.integtest.ts +0 -42
  205. package/tests/cli-integ-tests/cdk-cdk-notices-with---unacknowledged.integtest.ts +0 -14
  206. package/tests/cli-integ-tests/cdk-cdk-synth-add-the-metadata-properties-expected-by-sam.integtest.ts +0 -126
  207. package/tests/cli-integ-tests/cdk-cdk-synth-bundled-functions-as-expected.integtest.ts +0 -80
  208. package/tests/cli-integ-tests/cdk-cdk-synth.integtest.ts +0 -53
  209. package/tests/cli-integ-tests/cdk-ci-output-to-stderr.integtest.ts +0 -19
  210. package/tests/cli-integ-tests/cdk-ci-true-output-to-stdout.integtest.ts +0 -28
  211. package/tests/cli-integ-tests/cdk-construct-with-builtin-lambda-function.integtest.ts +0 -14
  212. package/tests/cli-integ-tests/cdk-context-in-stage-propagates-to-top.integtest.ts +0 -20
  213. package/tests/cli-integ-tests/cdk-context-setting.integtest.ts +0 -33
  214. package/tests/cli-integ-tests/cdk-deploy---method-direct.integtest.ts +0 -23
  215. package/tests/cli-integ-tests/cdk-deploy-all-concurrently.integtest.ts +0 -17
  216. package/tests/cli-integ-tests/cdk-deploy-all.integtest.ts +0 -14
  217. package/tests/cli-integ-tests/cdk-deploy-and-test-stack-with-lambda-asset.integtest.ts +0 -31
  218. package/tests/cli-integ-tests/cdk-deploy-deletes-all-notification-arns-when-empty-array-is-passed.integtest.ts +0 -50
  219. package/tests/cli-integ-tests/cdk-deploy-no-stacks-error.integtest.ts +0 -18
  220. package/tests/cli-integ-tests/cdk-deploy-no-stacks-with---ignore-no-stacks.integtest.ts +0 -17
  221. package/tests/cli-integ-tests/cdk-deploy-preserves-existing-notification-arns-when-not-specified.integtest.ts +0 -51
  222. package/tests/cli-integ-tests/cdk-deploy-stack-with-docker-asset.integtest.ts +0 -11
  223. package/tests/cli-integ-tests/cdk-deploy-stack-with-lambda-asset-to-object-lock-enabled-asset-bucket.integtest.ts +0 -42
  224. package/tests/cli-integ-tests/cdk-deploy-stack-without-resource.integtest.ts +0 -32
  225. package/tests/cli-integ-tests/cdk-deploy-wildcard-with-outputs.integtest.ts +0 -28
  226. package/tests/cli-integ-tests/cdk-deploy-with-import-existing-resources-true.integtest.ts +0 -29
  227. package/tests/cli-integ-tests/cdk-deploy-with-method-direct-and-import-existing-resources-fails.integtest.ts +0 -17
  228. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-flag.integtest.ts +0 -36
  229. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop-and-flag.integtest.ts +0 -45
  230. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop.integtest.ts +0 -37
  231. package/tests/cli-integ-tests/cdk-deploy-with-parameters-multi.integtest.ts +0 -33
  232. package/tests/cli-integ-tests/cdk-deploy-with-parameters.integtest.ts +0 -26
  233. package/tests/cli-integ-tests/cdk-deploy-with-role.integtest.ts +0 -119
  234. package/tests/cli-integ-tests/cdk-deploy-with-wildcard-and-parameters.integtest.ts +0 -22
  235. package/tests/cli-integ-tests/cdk-deploy-without-execute-a-named-change-set.integtest.ts +0 -36
  236. package/tests/cli-integ-tests/cdk-deploy-without-import-existing-resources.integtest.ts +0 -28
  237. package/tests/cli-integ-tests/cdk-deploy.integtest.ts +0 -20
  238. package/tests/cli-integ-tests/cdk-destroy-interactive.integtest.ts +0 -36
  239. package/tests/cli-integ-tests/cdk-doubly-nested-stack.integtest.ts +0 -12
  240. package/tests/cli-integ-tests/cdk-enablediffnofail.integtest.ts +0 -44
  241. package/tests/cli-integ-tests/cdk-failed-deploy-does-not-hang.integtest.ts +0 -12
  242. package/tests/cli-integ-tests/cdk-fast-deploy.integtest.ts +0 -41
  243. package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-ecr-images.integtest.ts +0 -48
  244. package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-s3-objects.integtest.ts +0 -51
  245. package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-ecr-images.integtest.ts +0 -48
  246. package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-s3-objects.integtest.ts +0 -52
  247. package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-ecr-images.integtest.ts +0 -47
  248. package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-s3-objects.integtest.ts +0 -63
  249. package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-ecr-images.integtest.ts +0 -55
  250. package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-s3-objects.integtest.ts +0 -63
  251. package/tests/cli-integ-tests/cdk-generating-and-loading-assembly.integtest.ts +0 -52
  252. package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-detects-failed-deployment-and-errors.integtest.ts +0 -29
  253. package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-waits-for-deployment-to-complete.integtest.ts +0 -45
  254. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-appsync-apis-with-many-functions.integtest.ts +0 -36
  255. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-ecs-service.integtest.ts +0 -41
  256. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-fn::importvalue-intrinsic.integtest.ts +0 -53
  257. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-lambda-functions-description-and-environment-variables.integtest.ts +0 -43
  258. package/tests/cli-integ-tests/cdk-hotswap-ecs-deployment-respects-properties-override.integtest.ts +0 -59
  259. package/tests/cli-integ-tests/cdk-iam-diff.integtest.ts +0 -23
  260. package/tests/cli-integ-tests/cdk-import-interactive.integtest.ts +0 -57
  261. package/tests/cli-integ-tests/cdk-lib-cli-lib-deploy.integtest.ts +0 -32
  262. package/tests/cli-integ-tests/cdk-lib-cli-lib-list.integtest.ts +0 -12
  263. package/tests/cli-integ-tests/cdk-lib-cli-lib-synth.integtest.ts +0 -27
  264. package/tests/cli-integ-tests/cdk-lib-security-related-changes-without-a-cli-are-expected-to-fail-when-approval-is-required.integtest.ts +0 -32
  265. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-csharp.integtest.ts +0 -13
  266. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-java.integtest.ts +0 -14
  267. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-python.integtest.ts +0 -13
  268. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-typescript.integtest.ts +0 -13
  269. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-csharp.integtest.ts +0 -15
  270. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-java.integtest.ts +0 -15
  271. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-python.integtest.ts +0 -15
  272. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-typescript.integtest.ts +0 -15
  273. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-generates-migrate.json.integtest.ts +0 -20
  274. package/tests/cli-integ-tests/cdk-migrate/testcase.ts +0 -69
  275. package/tests/cli-integ-tests/cdk-nested-stack-with-parameters.integtest.ts +0 -28
  276. package/tests/cli-integ-tests/cdk-requests-go-through-a-proxy-when-configured.integtest.ts +0 -39
  277. package/tests/cli-integ-tests/cdk-sam-can-locally-test-the-synthesized-cdk-application.integtest.ts +0 -25
  278. package/tests/cli-integ-tests/cdk-security-related-changes-without-a-cli-are-expected-to-fail.integtest.ts +0 -30
  279. package/tests/cli-integ-tests/cdk-skips-notice-refresh.integtest.ts +0 -26
  280. package/tests/cli-integ-tests/cdk-ssm-parameter-provider-error.integtest.ts +0 -18
  281. package/tests/cli-integ-tests/cdk-stack-in-update_rollback_complete-state-can-be-updated.integtest.ts +0 -59
  282. package/tests/cli-integ-tests/cdk-stage-with-bundled-lambda-function.integtest.ts +0 -13
  283. package/tests/cli-integ-tests/cdk-synth---quiet-can-be-specified-in-cdk.json.integtest.ts +0 -20
  284. package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-can-be-suppressed.integtest.ts +0 -15
  285. package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-leads-to-failure.integtest.ts +0 -18
  286. package/tests/cli-integ-tests/cdk-templates-on-disk-contain-metadata-resource.integtest.ts +0 -25
  287. package/tests/cli-integ-tests/cdk-termination-protection.integtest.ts +0 -19
  288. package/tests/cli-integ-tests/cdk-test-cdk-rollback---force.integtest.ts +0 -48
  289. package/tests/cli-integ-tests/cdk-test-cdk-rollback.integtest.ts +0 -38
  290. package/tests/cli-integ-tests/cdk-test-migrate-deployment-for-app-with-localfile-source-in-migrate.json.integtest.ts +0 -56
  291. package/tests/cli-integ-tests/cdk-test-resource-import-with-construct-that-requires-bundling.integtest.ts +0 -74
  292. package/tests/cli-integ-tests/cdk-test-resource-import.integtest.ts +0 -64
  293. package/tests/cli-integ-tests/cdk-two-ways-of-showing-the-version.integtest.ts +0 -14
  294. package/tests/cli-integ-tests/cdk-update-to-stack-in-rollback_complete-state-will-delete-stack-and-create-a-new-one.integtest.ts +0 -47
  295. package/tests/cli-integ-tests/cdk-vpc-lookup.integtest.ts +0 -26
  296. package/tests/cli-integ-tests/proxy.integtest.ts +0 -168
  297. package/tests/init-csharp/init-csharp.integtest.ts +0 -15
  298. package/tests/init-fsharp/init-fsharp.integtest.ts +0 -15
  299. package/tests/init-go/init-go.integtest.ts +0 -28
  300. package/tests/init-java/init-java.integtest.ts +0 -14
  301. package/tests/init-javascript/init-javascript.integtest.ts +0 -58
  302. package/tests/init-python/init-python.integtest.ts +0 -20
  303. package/tests/init-typescript-app/init-typescript-app.integtest.ts +0 -67
  304. package/tests/init-typescript-lib/init-typescript-lib.integtest.ts +0 -13
  305. package/tests/tool-integrations/amplify.integtest.ts +0 -117
  306. package/tests/tool-integrations/with-tool-context.ts +0 -14
  307. package/tests/uberpackage/uberpackage.integtest.ts +0 -11
package/lib/xpmutex.ts DELETED
@@ -1,218 +0,0 @@
1
- import { watch, promises as fs, mkdirSync } from 'fs';
2
- import * as os from 'os';
3
- import * as path from 'path';
4
-
5
- export class XpMutexPool {
6
- public static fromDirectory(directory: string) {
7
- mkdirSync(directory, { recursive: true });
8
- return new XpMutexPool(directory);
9
- }
10
-
11
- public static fromName(name: string) {
12
- return XpMutexPool.fromDirectory(path.join(os.tmpdir(), name));
13
- }
14
-
15
- private readonly waitingResolvers = new Set<() => void>();
16
- private watcher: ReturnType<typeof watch> | undefined;
17
-
18
- private constructor(public readonly directory: string) {
19
- this.startWatch();
20
- }
21
-
22
- public mutex(name: string) {
23
- return new XpMutex(this, name);
24
- }
25
-
26
- /**
27
- * Await an unlock event
28
- *
29
- * (An unlock event is when a file in the directory gets deleted, with a tiny
30
- * random sleep attached to it).
31
- */
32
- public awaitUnlock(maxWaitMs?: number): Promise<void> {
33
- const wait = new Promise<void>(ok => {
34
- this.waitingResolvers.add(async () => {
35
- await randomSleep(10);
36
- ok();
37
- });
38
- });
39
-
40
- if (maxWaitMs) {
41
- return Promise.race([wait, sleep(maxWaitMs)]);
42
- } else {
43
- return wait;
44
- }
45
- }
46
-
47
- private startWatch() {
48
- this.watcher = watch(this.directory);
49
- (this.watcher as any).unref(); // @types doesn't know about this but it exists
50
- this.watcher.on('change', async (eventType, fname) => {
51
- // Only trigger on 'deletes'.
52
- // After receiving the event, we check if the file exists.
53
- // - If no: the file was deleted! Huzzah, this counts as a wakeup.
54
- // - If yes: either the file was just created (in which case we don't need to wakeup)
55
- // or the event was due to a delete but someone raced us to it and claimed the
56
- // file already (in which case we also don't need to wake up).
57
- if (eventType === 'rename' && !await fileExists(path.join(this.directory, fname.toString()))) {
58
- this.notifyWaiters();
59
- }
60
- });
61
- this.watcher.on('error', async (e) => {
62
- // eslint-disable-next-line no-console
63
- console.error(e);
64
- await randomSleep(100);
65
- this.startWatch();
66
- });
67
- }
68
-
69
- private notifyWaiters() {
70
- for (const promise of this.waitingResolvers) {
71
- promise();
72
- }
73
- this.waitingResolvers.clear();
74
- }
75
- }
76
-
77
- /**
78
- * Cross-process mutex
79
- *
80
- * Uses the presence of a file on disk and `fs.watch` to represent the mutex
81
- * and discover unlocks.
82
- */
83
- export class XpMutex {
84
- private readonly fileName: string;
85
-
86
- constructor(private readonly pool: XpMutexPool, public readonly mutexName: string) {
87
- this.fileName = path.join(pool.directory, `${mutexName}.mutex`);
88
- }
89
-
90
- /**
91
- * Try to acquire the lock (may fail)
92
- */
93
- public async tryAcquire(): Promise<ILock | undefined> {
94
- while (true) {
95
- // Acquire lock by being the one to create the file
96
- try {
97
- return await this.writePidFile('wx'); // Fails if the file already exists
98
- } catch (e: any) {
99
- if (e.code !== 'EEXIST') { throw e; }
100
- }
101
-
102
- // File already exists. Read the contents, see if it's an existent PID (if so, the lock is taken)
103
- const ownerPid = await this.readPidFile();
104
- if (ownerPid === undefined) {
105
- // File got deleted just now, maybe we can acquire it again
106
- continue;
107
- }
108
- if (processExists(ownerPid)) {
109
- return undefined;
110
- }
111
-
112
- // If not, the lock is stale and will never be released anymore. We may
113
- // delete it and acquire it anyway, but we may be racing someone else trying
114
- // to do the same. Solve this as follows:
115
- // - Try to acquire a lock that gives us permissions to declare the existing lock stale.
116
- // - Sleep a small random period to reduce contention on this operation
117
- await randomSleep(10);
118
- const innerMux = new XpMutex(this.pool, `${this.mutexName}.${ownerPid}`);
119
- const innerLock = await innerMux.tryAcquire();
120
- if (!innerLock) {
121
- return undefined;
122
- }
123
-
124
- // We may not release the 'inner lock' we used to acquire the rights to declare the other
125
- // lock stale until we release the actual lock itself. If we did, other contenders might
126
- // see it released while they're still in this fallback block and accidentally steal
127
- // from a new legitimate owner.
128
- return this.writePidFile('w', innerLock); // Force write lock file, attach inner lock as well
129
- }
130
- }
131
-
132
- /**
133
- * Acquire the lock, waiting until we can
134
- */
135
- public async acquire(): Promise<ILock> {
136
- while (true) {
137
- // Start the wait here, so we don't miss the signal if it comes after
138
- // we try but before we sleep.
139
- //
140
- // We also periodically retry anyway since we may have missed the delete
141
- // signal due to unfortunate timing.
142
- const wait = this.pool.awaitUnlock(5000);
143
-
144
- const lock = await this.tryAcquire();
145
- if (lock) {
146
- // Ignore the wait (count as handled)
147
- wait.then(() => {}, () => {});
148
- return lock;
149
- }
150
-
151
- await wait;
152
- await randomSleep(100);
153
- }
154
- }
155
-
156
- private async readPidFile(): Promise<number | undefined> {
157
- const deadLine = Date.now() + 1000;
158
- while (Date.now() < deadLine) {
159
- let contents;
160
- try {
161
- contents = await fs.readFile(this.fileName, { encoding: 'utf-8' });
162
- } catch (e: any) {
163
- if (e.code === 'ENOENT') { return undefined; }
164
- throw e;
165
- }
166
-
167
- // Retry until we've seen the full contents
168
- if (contents.endsWith('.')) { return parseInt(contents.substring(0, contents.length - 1), 10); }
169
- await sleep(10);
170
- }
171
-
172
- throw new Error(`${this.fileName} was never completely written`);
173
- }
174
-
175
- private async writePidFile(mode: string, additionalLock?: ILock): Promise<ILock> {
176
- const fd = await fs.open(this.fileName, mode); // May fail if the file already exists
177
- await fd.write(`${process.pid}.`); // Period guards against partial reads
178
- await fd.close();
179
-
180
- return {
181
- release: async () => {
182
- await fs.unlink(this.fileName);
183
- await additionalLock?.release();
184
- },
185
- };
186
- }
187
- }
188
-
189
- export interface ILock {
190
- release(): Promise<void>;
191
- }
192
-
193
- async function fileExists(fileName: string) {
194
- try {
195
- await fs.stat(fileName);
196
- return true;
197
- } catch (e: any) {
198
- if (e.code === 'ENOENT') { return false; }
199
- throw e;
200
- }
201
- }
202
-
203
- function processExists(pid: number) {
204
- try {
205
- process.kill(pid, 0);
206
- return true;
207
- } catch {
208
- return false;
209
- }
210
- }
211
-
212
- function sleep(ms: number): Promise<void> {
213
- return new Promise(ok => (setTimeout(ok, ms) as any).unref());
214
- }
215
-
216
- function randomSleep(ms: number) {
217
- return sleep(Math.floor(Math.random() * ms));
218
- }
@@ -1,19 +0,0 @@
1
- if (process.env.PACKAGE_LAYOUT_VERSION === '1') {
2
- var { NestedStack } = require('@aws-cdk/core');
3
- var { Function, Runtime, Code } = require('@aws-cdk/aws-lambda');
4
- } else {
5
- var { NestedStack } = require('aws-cdk-lib');
6
- var { Function, Runtime, Code } = require('aws-cdk-lib/aws-lambda');
7
- }
8
-
9
- class NestedStack1 extends NestedStack {
10
- constructor(scope, id, props) {
11
- super(scope, id, props);
12
- new Function(this, 'FunctionPythonRuntime', {
13
- runtime: Runtime.PYTHON_3_12,
14
- code: Code.fromAsset('./src/python/Function'),
15
- handler: 'app.lambda_handler',
16
- });
17
- }
18
- }
19
- exports.NestedStack1 = NestedStack1;
@@ -1,134 +0,0 @@
1
- var path = require('path');
2
- var { NestedStack1 } = require('./nested-stack');
3
- if (process.env.PACKAGE_LAYOUT_VERSION === '1') {
4
- var { Stack } = require('@aws-cdk/core');
5
- var { Runtime, LayerVersion, Code, Function, DockerImageFunction, DockerImageCode } = require('@aws-cdk/aws-lambda');
6
- var { SpecRestApi, ApiDefinition } = require('@aws-cdk/aws-apigateway');
7
- var { NodejsFunction } = require('@aws-cdk/aws-lambda-nodejs');
8
- var { GoFunction } = require('@aws-cdk/aws-lambda-go');
9
- var { PythonFunction, PythonLayerVersion } = require('@aws-cdk/aws-lambda-python');
10
- var { Role, ServicePrincipal, PolicyStatement } = require('@aws-cdk/aws-iam');
11
- var { RetentionDays } = require('@aws-cdk/aws-logs');
12
- } else {
13
- var { Stack } = require('aws-cdk-lib');
14
- var { Runtime, LayerVersion, Code, Function, DockerImageFunction, DockerImageCode } = require('aws-cdk-lib/aws-lambda');
15
- var { SpecRestApi, ApiDefinition } = require('aws-cdk-lib/aws-apigateway');
16
- var { NodejsFunction } = require('aws-cdk-lib/aws-lambda-nodejs');
17
- var { GoFunction } = require('@aws-cdk/aws-lambda-go-alpha');
18
- var { PythonFunction, PythonLayerVersion } = require('@aws-cdk/aws-lambda-python-alpha');
19
- var { Role, ServicePrincipal, PolicyStatement } = require('aws-cdk-lib/aws-iam');
20
- var { RetentionDays } = require('aws-cdk-lib/aws-logs');
21
- }
22
-
23
- const isRunningOnCodeBuild = !!process.env.CODEBUILD_BUILD_ID;
24
-
25
- class CDKSupportDemoRootStack extends Stack{
26
- constructor(scope, id, props) {
27
- super(scope, id, props);
28
- // Python Runtime
29
- // Layers
30
- new PythonLayerVersion(this, 'PythonLayerVersion', {
31
- compatibleRuntimes: [
32
- Runtime.PYTHON_3_12,
33
- ],
34
- entry: './src/python/Layer',
35
- });
36
- new LayerVersion(this, 'LayerVersion', {
37
- compatibleRuntimes: [
38
- Runtime.PYTHON_3_12,
39
- ],
40
- code: Code.fromAsset('./src/python/Layer'),
41
- });
42
- new LayerVersion(this, 'BundledLayerVersionPythonRuntime', {
43
- compatibleRuntimes: [
44
- Runtime.PYTHON_3_12,
45
- ],
46
- code: Code.fromAsset('./src/python/Layer', {
47
- bundling: {
48
- command: [
49
- '/bin/sh',
50
- '-c',
51
- 'rm -rf /tmp/asset-input && mkdir /tmp/asset-input && cp * /tmp/asset-input && cd /tmp/asset-input && pip install -r requirements.txt -t . && mkdir /asset-output/python && cp -R /tmp/asset-input/* /asset-output/python',
52
- ],
53
- image: Runtime.PYTHON_3_12.bundlingImage,
54
- user: 'root',
55
- }
56
- }),
57
- });
58
-
59
- // ZIP package type Functions
60
- new PythonFunction(this, 'PythonFunction', {
61
- entry: './src/python/Function',
62
- index: 'app.py',
63
- handler: 'lambda_handler',
64
- runtime: Runtime.PYTHON_3_12,
65
- functionName: 'pythonFunc',
66
- logRetention: RetentionDays.THREE_MONTHS,
67
- });
68
- new Function(this, 'FunctionPythonRuntime', {
69
- runtime: Runtime.PYTHON_3_12,
70
- code: Code.fromAsset('./src/python/Function'),
71
- handler: 'app.lambda_handler',
72
- });
73
- new Function(this, 'BundledFunctionPythonRuntime', {
74
- runtime: Runtime.PYTHON_3_12,
75
- code: Code.fromAsset('./src/python/Function/', {
76
- bundling: {
77
- command: [
78
- '/bin/sh',
79
- '-c',
80
- 'rm -rf /tmp/asset-input && mkdir /tmp/asset-input && cp * /tmp/asset-input && cd /tmp/asset-input && pip install -r requirements.txt -t . && cp -R /tmp/asset-input/* /asset-output',
81
- ],
82
- image: Runtime.PYTHON_3_12.bundlingImage,
83
- user: 'root',
84
- }
85
- }),
86
- handler: 'app.lambda_handler',
87
- });
88
-
89
- // NodeJs Runtime
90
- new NodejsFunction(this, 'NodejsFunction', {
91
- entry: path.join(__dirname, '../src/nodejs/NodeJsFunctionConstruct/app.ts'),
92
- depsLockFilePath: path.join(__dirname, '../src/nodejs/NodeJsFunctionConstruct/package-lock.json'),
93
- bundling: {
94
- forceDockerBundling: true,
95
- },
96
- handler: 'lambdaHandler',
97
- });
98
-
99
- // Go Runtime
100
- new GoFunction(this, 'GoFunction', {
101
- entry: './src/go/GoFunctionConstruct',
102
- bundling: {
103
- forcedDockerBundling: true,
104
- // Only use Google proxy in the CI tests, as it is blocked on workstations
105
- goProxies: isRunningOnCodeBuild ? [GoFunction.GOOGLE_GOPROXY, 'direct'] : undefined,
106
- },
107
- });
108
-
109
- // Image Package Type Functions
110
- new DockerImageFunction(this, 'DockerImageFunction', {
111
- code: DockerImageCode.fromImageAsset('./src/docker/DockerImageFunctionConstruct', {
112
- file: 'Dockerfile',
113
- }),
114
- });
115
-
116
- // Spec Rest Api
117
- new SpecRestApi(this, 'SpecRestAPI', {
118
- apiDefinition: ApiDefinition.fromAsset('./src/rest-api-definition.yaml'),
119
- });
120
- // Role to be used as credentials for the Spec rest APi
121
- // it is used inside the spec rest api definition file
122
- new Role(this, 'SpecRestApiRole', {
123
- assumedBy: new ServicePrincipal('apigateway.amazonaws.com'),
124
- roleName: 'SpecRestApiRole',
125
- }).addToPolicy(new PolicyStatement({
126
- actions: ['lambda:InvokeFunction'],
127
- resources: ['*'],
128
- }));
129
-
130
- // Nested Stack
131
- new NestedStack1(this, 'NestedStack', {});
132
- }
133
- }
134
- exports.CDKSupportDemoRootStack = CDKSupportDemoRootStack;
@@ -1,29 +0,0 @@
1
- import { promises as fs } from 'fs';
2
- import * as path from 'path';
3
- import { integTest, withDefaultFixture } from '../../lib';
4
-
5
- jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
6
-
7
- integTest(
8
- '--exclusively selects only selected stack',
9
- withDefaultFixture(async (fixture) => {
10
- // Deploy the "depends-on-failed" stack, with --exclusively. It will NOT fail (because
11
- // of --exclusively) and it WILL create an output we can check for to confirm that it did
12
- // get deployed.
13
- const outputsFile = path.join(fixture.integTestDir, 'outputs', 'outputs.json');
14
- await fs.mkdir(path.dirname(outputsFile), { recursive: true });
15
-
16
- await fixture.cdkDeploy('depends-on-failed', {
17
- options: ['--exclusively', '--outputs-file', outputsFile],
18
- });
19
-
20
- // Verify the output to see that the stack deployed
21
- const outputs = JSON.parse((await fs.readFile(outputsFile, { encoding: 'utf-8' })).toString());
22
- expect(outputs).toEqual({
23
- [`${fixture.stackNamePrefix}-depends-on-failed`]: {
24
- TopicName: `${fixture.stackNamePrefix}-depends-on-failedMyTopic`,
25
- },
26
- });
27
- }),
28
- );
29
-
@@ -1,92 +0,0 @@
1
-
2
- import { promises as fs } from 'fs';
3
- import * as path from 'path';
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(`cdk-assets uses profile when specified`, withDefaultFixture(async (fixture) => {
9
-
10
- const currentCreds = await fixture.aws.credentials();
11
-
12
- await fixture.shell(['npm', 'init', '-y']);
13
- await fixture.shell(['npm', 'install', `cdk-assets@latest`]);
14
-
15
- const account = await fixture.aws.account();
16
- const region = fixture.aws.region;
17
- const bucketName = `cdk-hnb659fds-assets-${account}-${region}`;
18
-
19
- // Write some asset files. Its important to have more than 1 because cdk-assets
20
- // code has some funky state mutations that happens on each asset publishing.
21
- const assetFile1 = 'testfile.txt';
22
- const assetFile2 = 'testfile.txt';
23
- await fs.writeFile(path.join(fixture.integTestDir, assetFile1), 'some asset file');
24
- await fs.writeFile(path.join(fixture.integTestDir, assetFile2), 'some asset file');
25
-
26
- // Write an asset JSON file to publish to the bootstrapped environment
27
- const assetsJson = {
28
- version: "38.0.1",
29
- files: {
30
- testfile1: {
31
- source: {
32
- path: assetFile1,
33
- packaging: 'file',
34
- },
35
- destinations: {
36
- current: {
37
- region,
38
- assumeRoleArn: `arn:\${AWS::Partition}:iam::${account}:role/cdk-hnb659fds-file-publishing-role-${account}-${region}`,
39
- bucketName,
40
- objectKey: `test-file1-${Date.now()}.json`,
41
- }
42
- }
43
- },
44
- testfile2: {
45
- source: {
46
- path: assetFile2,
47
- packaging: 'file',
48
- },
49
- destinations: {
50
- current: {
51
- region,
52
- assumeRoleArn: `arn:\${AWS::Partition}:iam::${account}:role/cdk-hnb659fds-file-publishing-role-${account}-${region}`,
53
- bucketName,
54
- objectKey: `test-file2-${Date.now()}.json`,
55
- }
56
- }
57
- }
58
- }
59
- };
60
-
61
- // create a profile with our current credentials.
62
- //
63
- // if you're wondering why can't we do the reverse (i.e write a bogus profile and assert a failure),
64
- // its because when cdk-assets discovers the current account, it DOES consider the profile.
65
- // writing a bogus profile would fail this operation and we won't be able to reach the code
66
- // we're trying to test.
67
- const credentialsFile = path.join(fixture.integTestDir, 'aws.credentials');
68
- const profile = 'cdk-assets';
69
-
70
- // this kind sucks but its what it is given we need to write a working profile
71
- await fs.writeFile(credentialsFile, `[${profile}]
72
- aws_access_key_id=${currentCreds.accessKeyId}
73
- aws_secret_access_key=${currentCreds.secretAccessKey}
74
- aws_session_token=${currentCreds.sessionToken}`);
75
-
76
- await fs.writeFile(path.join(fixture.integTestDir, 'assets.json'), JSON.stringify(assetsJson, undefined, 2));
77
- await fixture.shell(['npx', 'cdk-assets', '--path', 'assets.json', 'publish', '--profile', profile], {
78
- modEnv: {
79
- ...fixture.cdkShellEnv(),
80
- AWS_SHARED_CREDENTIALS_FILE: credentialsFile,
81
-
82
- // remove the default creds so that if the command doesn't use
83
- // the profile, it will fail with "Could not load credentials from any providers"
84
- AWS_ACCESS_KEY_ID: '',
85
- AWS_SECRET_ACCESS_KEY: '',
86
- AWS_SESSION_TOKEN: ''
87
-
88
- },
89
- });
90
-
91
- }),
92
- );
@@ -1,82 +0,0 @@
1
- /**
2
- * Tests for the standalone cdk-assets executable, as used by CDK Pipelines
3
- */
4
- import { promises as fs } from 'fs';
5
- import * as path from 'path';
6
- import { integTest, withDefaultFixture } from '../../../lib';
7
-
8
- jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
9
-
10
- integTest(
11
- `cdk-assets smoke test`,
12
- withDefaultFixture(async (fixture) => {
13
- await fixture.shell(['npm', 'init', '-y']);
14
- await fixture.shell(['npm', 'install', `cdk-assets@latest`]);
15
-
16
- const account = await fixture.aws.account();
17
- const region = fixture.aws.region;
18
- const bucketName = `cdk-hnb659fds-assets-${account}-${region}`;
19
- const repositoryName = `cdk-hnb659fds-container-assets-${account}-${region}`;
20
-
21
- const imageDir = 'imagedir';
22
- await fs.mkdir(path.join(fixture.integTestDir, imageDir), { recursive: true });
23
-
24
- // Write an asset file and a data file for the Docker image
25
- const assetFile = 'testfile.txt';
26
- for (const toCreate of [assetFile, `${imageDir}/datafile.txt`]) {
27
- await fs.writeFile(path.join(fixture.integTestDir, toCreate), 'some asset file');
28
- }
29
-
30
- // Write a Dockerfile for the image build with a data file in it
31
- await fs.writeFile(path.join(fixture.integTestDir, imageDir, 'Dockerfile'), [
32
- 'FROM scratch',
33
- 'ADD datafile.txt datafile.txt',
34
- ].join('\n'));
35
-
36
- // Write an asset JSON file to publish to the bootstrapped environment
37
- const assetsJson = {
38
- version: "38.0.1",
39
- files: {
40
- testfile: {
41
- source: {
42
- path: assetFile,
43
- packaging: 'file',
44
- },
45
- destinations: {
46
- current: {
47
- region,
48
- assumeRoleArn: `arn:\${AWS::Partition}:iam::${account}:role/cdk-hnb659fds-file-publishing-role-${account}-${region}`,
49
- bucketName,
50
- objectKey: `test-file-${Date.now()}.json`,
51
- }
52
- }
53
- }
54
- },
55
- dockerImages: {
56
- testimage: {
57
- source: {
58
- directory: imageDir,
59
- },
60
- destinations: {
61
- current: {
62
- region,
63
- assumeRoleArn: `arn:\${AWS::Partition}:iam::${account}:role/cdk-hnb659fds-image-publishing-role-${account}-${region}`,
64
- repositoryName,
65
- imageTag: `test-image`, // Not fresh on every run because we'll run out of tags too easily
66
- },
67
- },
68
- },
69
- }
70
- };
71
-
72
- await fs.writeFile(path.join(fixture.integTestDir, 'assets.json'), JSON.stringify(assetsJson, undefined, 2));
73
- await fixture.shell(['npx', 'cdk-assets', '--path', 'assets.json', '--verbose', 'publish'], {
74
- modEnv: {
75
- ...fixture.cdkShellEnv(),
76
- // This is necessary for cdk-assets v2, if the credentials are supplied via
77
- // config file (which they are on the CodeBuild canaries).
78
- AWS_SDK_LOAD_CONFIG: '1',
79
- },
80
- });
81
- }),
82
- );
@@ -1,15 +0,0 @@
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
- 'automatic ordering with concurrency',
7
- withDefaultFixture(async (fixture) => {
8
- // Deploy the consuming stack which will include the producing stack
9
- await fixture.cdkDeploy('order-consuming', { options: ['--concurrency', '2'] });
10
-
11
- // Destroy the providing stack which will include the consuming stack
12
- await fixture.cdkDestroy('order-providing');
13
- }),
14
- );
15
-
@@ -1,15 +0,0 @@
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
- 'automatic ordering',
7
- withDefaultFixture(async (fixture) => {
8
- // Deploy the consuming stack which will include the producing stack
9
- await fixture.cdkDeploy('order-consuming');
10
-
11
- // Destroy the providing stack which will include the consuming stack
12
- await fixture.cdkDestroy('order-providing');
13
- }),
14
- );
15
-
@@ -1,40 +0,0 @@
1
- import { integTest, withSpecificFixture } 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
- 'automatic rollback if paused and --no-rollback is removed from flags',
7
- withSpecificFixture('rollback-test-app', async (fixture) => {
8
- let phase = '1';
9
-
10
- // Should succeed
11
- await fixture.cdkDeploy('test-rollback', {
12
- options: ['--no-rollback'],
13
- modEnv: { PHASE: phase },
14
- verbose: false,
15
- });
16
- try {
17
- phase = '2a';
18
-
19
- // Should fail
20
- const deployOutput = await fixture.cdkDeploy('test-rollback', {
21
- options: ['--no-rollback'],
22
- modEnv: { PHASE: phase },
23
- verbose: false,
24
- allowErrExit: true,
25
- });
26
- expect(deployOutput).toContain('UPDATE_FAILED');
27
-
28
- // Do a deployment removing --no-rollback: this will roll back first and then deploy normally
29
- phase = '1';
30
- await fixture.cdkDeploy('test-rollback', {
31
- options: ['--force'],
32
- modEnv: { PHASE: phase },
33
- verbose: false,
34
- });
35
- } finally {
36
- await fixture.cdkDestroy('test-rollback');
37
- }
38
- }),
39
- );
40
-