@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.
Files changed (454) hide show
  1. package/lib/cli/run-suite.js +6 -1
  2. package/lib/cli/run-suite.ts +6 -0
  3. package/lib/integ-test.js +3 -13
  4. package/lib/integ-test.ts +2 -13
  5. package/lib/process.d.ts +45 -0
  6. package/lib/process.js +97 -0
  7. package/lib/process.ts +154 -0
  8. package/lib/shell.d.ts +51 -0
  9. package/lib/shell.js +81 -20
  10. package/lib/shell.ts +144 -17
  11. package/lib/with-cdk-app.d.ts +4 -1
  12. package/lib/with-cdk-app.js +6 -4
  13. package/lib/with-cdk-app.ts +9 -2
  14. package/lib/with-cli-lib.js +2 -1
  15. package/lib/with-cli-lib.ts +1 -0
  16. package/package.json +5 -4
  17. package/resources/cdk-apps/app/app.js +36 -25
  18. package/resources/integ.jest.config.js +2 -3
  19. package/tests/cli-integ-tests/cdk---exclusively-selects-only-selected-stack.integtest.js +24 -0
  20. package/tests/cli-integ-tests/cdk---exclusively-selects-only-selected-stack.integtest.ts +29 -0
  21. package/tests/cli-integ-tests/cdk-assets/cdk-assets-uses-profile.integtest.js +80 -0
  22. package/tests/cli-integ-tests/cdk-assets/cdk-assets-uses-profile.integtest.ts +92 -0
  23. package/tests/cli-integ-tests/cdk-automatic-ordering-with-concurrency.integtest.js +11 -0
  24. package/tests/cli-integ-tests/cdk-automatic-ordering-with-concurrency.integtest.ts +15 -0
  25. package/tests/cli-integ-tests/cdk-automatic-ordering.integtest.js +11 -0
  26. package/tests/cli-integ-tests/cdk-automatic-ordering.integtest.ts +15 -0
  27. package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and---no-rollback-is-removed-from-flags.integtest.d.ts +1 -0
  28. package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and---no-rollback-is-removed-from-flags.integtest.js +35 -0
  29. package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and---no-rollback-is-removed-from-flags.integtest.ts +40 -0
  30. package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and-change-contains-a-replacement.integtest.d.ts +1 -0
  31. package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and-change-contains-a-replacement.integtest.js +35 -0
  32. package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and-change-contains-a-replacement.integtest.ts +40 -0
  33. package/tests/cli-integ-tests/cdk-automatic-rollback-if-replacement-and---no-rollback-is-removed-from-flags.integtest.d.ts +1 -0
  34. package/tests/cli-integ-tests/cdk-automatic-rollback-if-replacement-and---no-rollback-is-removed-from-flags.integtest.js +26 -0
  35. package/tests/cli-integ-tests/cdk-automatic-rollback-if-replacement-and---no-rollback-is-removed-from-flags.integtest.ts +29 -0
  36. package/tests/cli-integ-tests/cdk-bootstrap-a-customized-template-vendor-will-not-overwrite-the-default-template.integtest.d.ts +1 -0
  37. package/tests/cli-integ-tests/cdk-bootstrap-a-customized-template-vendor-will-not-overwrite-the-default-template.integtest.js +39 -0
  38. package/tests/cli-integ-tests/cdk-bootstrap-a-customized-template-vendor-will-not-overwrite-the-default-template.integtest.ts +42 -0
  39. package/tests/cli-integ-tests/cdk-bootstrap-add-tags.integtest.d.ts +1 -0
  40. package/tests/cli-integ-tests/cdk-bootstrap-add-tags.integtest.js +25 -0
  41. package/tests/cli-integ-tests/cdk-bootstrap-add-tags.integtest.ts +26 -0
  42. package/tests/cli-integ-tests/cdk-bootstrap-can-add-tags-then-update-tags-during-re-bootstrap.integtest.d.ts +1 -0
  43. package/tests/cli-integ-tests/cdk-bootstrap-can-add-tags-then-update-tags-during-re-bootstrap.integtest.js +27 -0
  44. package/tests/cli-integ-tests/cdk-bootstrap-can-add-tags-then-update-tags-during-re-bootstrap.integtest.ts +28 -0
  45. package/tests/cli-integ-tests/cdk-bootstrap-can-and-deploy-if-omitting-execution-policies.integtest.d.ts +1 -0
  46. package/tests/cli-integ-tests/cdk-bootstrap-can-and-deploy-if-omitting-execution-policies.integtest.js +19 -0
  47. package/tests/cli-integ-tests/cdk-bootstrap-can-and-deploy-if-omitting-execution-policies.integtest.ts +21 -0
  48. package/tests/cli-integ-tests/cdk-bootstrap-can-bootstrap-without-execution.integtest.d.ts +1 -0
  49. package/tests/cli-integ-tests/cdk-bootstrap-can-bootstrap-without-execution.integtest.js +18 -0
  50. package/tests/cli-integ-tests/cdk-bootstrap-can-bootstrap-without-execution.integtest.ts +22 -0
  51. package/tests/cli-integ-tests/cdk-bootstrap-can-create-a-legacy-bootstrap-stack-with---public-access-block-configuration-false.integtest.d.ts +1 -0
  52. package/tests/cli-integ-tests/cdk-bootstrap-can-create-a-legacy-bootstrap-stack-with---public-access-block-configuration-false.integtest.js +20 -0
  53. package/tests/cli-integ-tests/cdk-bootstrap-can-create-a-legacy-bootstrap-stack-with---public-access-block-configuration-false.integtest.ts +21 -0
  54. package/tests/cli-integ-tests/cdk-bootstrap-can-create-multiple-legacy-bootstrap-stacks.integtest.d.ts +1 -0
  55. package/tests/cli-integ-tests/cdk-bootstrap-can-create-multiple-legacy-bootstrap-stacks.integtest.js +26 -0
  56. package/tests/cli-integ-tests/cdk-bootstrap-can-create-multiple-legacy-bootstrap-stacks.integtest.ts +27 -0
  57. package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-modern-synthesized-stack-even-if-bootstrap-stack-name-is-unknown.integtest.d.ts +1 -0
  58. package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-modern-synthesized-stack-even-if-bootstrap-stack-name-is-unknown.integtest.js +22 -0
  59. package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-modern-synthesized-stack-even-if-bootstrap-stack-name-is-unknown.integtest.ts +24 -0
  60. package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-with-session-tags-on-the-deploy.integtest.d.ts +1 -0
  61. package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-with-session-tags-on-the-deploy.integtest.js +23 -0
  62. package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-with-session-tags-on-the-deploy.integtest.ts +25 -0
  63. package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-without-execution-role-and-with-session-tags-on-deploy-role.integtest.d.ts +1 -0
  64. package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-without-execution-role-and-with-session-tags-on-deploy-role.integtest.js +20 -0
  65. package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-without-execution-role-and-with-session-tags-on-deploy-role.integtest.ts +22 -0
  66. package/tests/cli-integ-tests/cdk-bootstrap-can-dump-the-template.integtest.d.ts +1 -0
  67. package/tests/cli-integ-tests/cdk-bootstrap-can-dump-the-template.integtest.js +29 -0
  68. package/tests/cli-integ-tests/cdk-bootstrap-can-dump-the-template.integtest.ts +32 -0
  69. package/tests/cli-integ-tests/cdk-bootstrap-can-remove-custompermissionsboundary.integtest.d.ts +1 -0
  70. package/tests/cli-integ-tests/cdk-bootstrap-can-remove-custompermissionsboundary.integtest.js +61 -0
  71. package/tests/cli-integ-tests/cdk-bootstrap-can-remove-custompermissionsboundary.integtest.ts +77 -0
  72. package/tests/cli-integ-tests/cdk-bootstrap-can-remove-trusted-account.integtest.d.ts +1 -0
  73. package/tests/cli-integ-tests/cdk-bootstrap-can-remove-trusted-account.integtest.js +25 -0
  74. package/tests/cli-integ-tests/cdk-bootstrap-can-remove-trusted-account.integtest.ts +30 -0
  75. package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-(with-slashes)-to-bootstrap.integtest.d.ts +1 -0
  76. package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-(with-slashes)-to-bootstrap.integtest.js +14 -0
  77. package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-(with-slashes)-to-bootstrap.integtest.ts +15 -0
  78. package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-to-bootstrap.integtest.d.ts +1 -0
  79. package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-to-bootstrap.integtest.js +14 -0
  80. package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-to-bootstrap.integtest.ts +15 -0
  81. package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-default-permissions-boundary-to-bootstrap.integtest.d.ts +1 -0
  82. package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-default-permissions-boundary-to-bootstrap.integtest.js +14 -0
  83. package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-default-permissions-boundary-to-bootstrap.integtest.ts +15 -0
  84. package/tests/cli-integ-tests/cdk-bootstrap-create-ecr-with-tag-immutability-to-set-on.integtest.d.ts +1 -0
  85. package/tests/cli-integ-tests/cdk-bootstrap-create-ecr-with-tag-immutability-to-set-on.integtest.js +27 -0
  86. package/tests/cli-integ-tests/cdk-bootstrap-create-ecr-with-tag-immutability-to-set-on.integtest.ts +34 -0
  87. package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap-(with-docker-image).integtest.d.ts +1 -0
  88. package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap-(with-docker-image).integtest.js +20 -0
  89. package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap-(with-docker-image).integtest.ts +22 -0
  90. package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap.integtest.d.ts +1 -0
  91. package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap.integtest.js +20 -0
  92. package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap.integtest.ts +22 -0
  93. package/tests/cli-integ-tests/cdk-bootstrap-deploy-old-style-synthesis-to-new-style-bootstrap.integtest.d.ts +1 -0
  94. package/tests/cli-integ-tests/cdk-bootstrap-deploy-old-style-synthesis-to-new-style-bootstrap.integtest.js +19 -0
  95. package/tests/cli-integ-tests/cdk-bootstrap-deploy-old-style-synthesis-to-new-style-bootstrap.integtest.ts +21 -0
  96. package/tests/cli-integ-tests/cdk-bootstrap-switch-on-termination-protection.integtest.d.ts +1 -0
  97. package/tests/cli-integ-tests/cdk-bootstrap-switch-on-termination-protection.integtest.js +23 -0
  98. package/tests/cli-integ-tests/cdk-bootstrap-switch-on-termination-protection.integtest.ts +24 -0
  99. package/tests/cli-integ-tests/cdk-bootstrap-upgrade-legacy-bootstrap-stack-to-new-bootstrap-stack-while-in-use.integtest.d.ts +1 -0
  100. package/tests/cli-integ-tests/cdk-bootstrap-upgrade-legacy-bootstrap-stack-to-new-bootstrap-stack-while-in-use.integtest.js +42 -0
  101. package/tests/cli-integ-tests/cdk-bootstrap-upgrade-legacy-bootstrap-stack-to-new-bootstrap-stack-while-in-use.integtest.ts +47 -0
  102. package/tests/cli-integ-tests/cdk-can-still-load-old-assemblies.integtest.d.ts +1 -0
  103. package/tests/cli-integ-tests/cdk-can-still-load-old-assemblies.integtest.js +49 -0
  104. package/tests/cli-integ-tests/cdk-can-still-load-old-assemblies.integtest.ts +57 -0
  105. 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
  106. 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
  107. 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
  108. 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
  109. 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
  110. 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
  111. 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
  112. 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
  113. 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
  114. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-changes-are-present.integtest.d.ts +1 -0
  115. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-changes-are-present.integtest.js +9 -0
  116. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-changes-are-present.integtest.ts +14 -0
  117. 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
  118. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-access-control-config.integtest.js +8 -0
  119. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-access-control-config.integtest.ts +13 -0
  120. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-assignment.integtest.d.ts +1 -0
  121. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-assignment.integtest.js +8 -0
  122. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-assignment.integtest.ts +13 -0
  123. 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
  124. 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
  125. 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
  126. 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
  127. 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
  128. 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
  129. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-access-control-information.integtest.d.ts +1 -0
  130. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-access-control-information.integtest.js +30 -0
  131. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-access-control-information.integtest.ts +35 -0
  132. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-assignment-information.integtest.d.ts +1 -0
  133. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-assignment-information.integtest.js +28 -0
  134. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-assignment-information.integtest.ts +37 -0
  135. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-with-managed-policy-information.integtest.d.ts +1 -0
  136. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-with-managed-policy-information.integtest.js +27 -0
  137. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-with-managed-policy-information.integtest.ts +35 -0
  138. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-without-managed-policy-information.integtest.d.ts +1 -0
  139. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-without-managed-policy-information.integtest.js +30 -0
  140. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-without-managed-policy-information.integtest.ts +37 -0
  141. package/tests/cli-integ-tests/cdk-cdk-diff-doesnt-show-resource-metadata-changes.integtest.d.ts +1 -0
  142. package/tests/cli-integ-tests/cdk-cdk-diff-doesnt-show-resource-metadata-changes.integtest.js +18 -0
  143. package/tests/cli-integ-tests/cdk-cdk-diff-doesnt-show-resource-metadata-changes.integtest.ts +23 -0
  144. package/tests/cli-integ-tests/cdk-cdk-diff-shows-resource-metadata-changes-with---no-change-set.integtest.d.ts +1 -0
  145. package/tests/cli-integ-tests/cdk-cdk-diff-shows-resource-metadata-changes-with---no-change-set.integtest.js +18 -0
  146. package/tests/cli-integ-tests/cdk-cdk-diff-shows-resource-metadata-changes-with---no-change-set.integtest.ts +23 -0
  147. 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
  148. 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
  149. 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
  150. package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-does-not-fail.integtest.d.ts +1 -0
  151. package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-does-not-fail.integtest.js +23 -0
  152. package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-does-not-fail.integtest.ts +28 -0
  153. package/tests/cli-integ-tests/cdk-cdk-diff.integtest.d.ts +1 -0
  154. package/tests/cli-integ-tests/cdk-cdk-diff.integtest.js +13 -0
  155. package/tests/cli-integ-tests/cdk-cdk-diff.integtest.ts +18 -0
  156. package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json---long.integtest.d.ts +1 -0
  157. package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json---long.integtest.js +45 -0
  158. package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json---long.integtest.ts +50 -0
  159. package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json.integtest.d.ts +1 -0
  160. package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json.integtest.js +75 -0
  161. package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json.integtest.ts +95 -0
  162. package/tests/cli-integ-tests/cdk-cdk-ls.integtest.d.ts +1 -0
  163. package/tests/cli-integ-tests/cdk-cdk-ls.integtest.js +32 -0
  164. package/tests/cli-integ-tests/cdk-cdk-ls.integtest.ts +36 -0
  165. package/tests/cli-integ-tests/cdk-cdk-notices-are-displayed-correctly.integtest.d.ts +1 -0
  166. package/tests/cli-integ-tests/cdk-cdk-notices-are-displayed-correctly.integtest.js +38 -0
  167. package/tests/cli-integ-tests/cdk-cdk-notices-are-displayed-correctly.integtest.ts +42 -0
  168. package/tests/cli-integ-tests/cdk-cdk-notices-with---unacknowledged.integtest.d.ts +1 -0
  169. package/tests/cli-integ-tests/cdk-cdk-notices-with---unacknowledged.integtest.js +11 -0
  170. package/tests/cli-integ-tests/cdk-cdk-notices-with---unacknowledged.integtest.ts +14 -0
  171. package/tests/cli-integ-tests/cdk-cdk-synth-add-the-metadata-properties-expected-by-sam.integtest.d.ts +1 -0
  172. package/tests/cli-integ-tests/cdk-cdk-synth-add-the-metadata-properties-expected-by-sam.integtest.js +111 -0
  173. package/tests/cli-integ-tests/cdk-cdk-synth-add-the-metadata-properties-expected-by-sam.integtest.ts +126 -0
  174. package/tests/cli-integ-tests/cdk-cdk-synth-bundled-functions-as-expected.integtest.d.ts +1 -0
  175. package/tests/cli-integ-tests/cdk-cdk-synth-bundled-functions-as-expected.integtest.js +74 -0
  176. package/tests/cli-integ-tests/cdk-cdk-synth-bundled-functions-as-expected.integtest.ts +80 -0
  177. package/tests/cli-integ-tests/cdk-cdk-synth.integtest.d.ts +1 -0
  178. package/tests/cli-integ-tests/cdk-cdk-synth.integtest.js +40 -0
  179. package/tests/cli-integ-tests/cdk-cdk-synth.integtest.ts +53 -0
  180. package/tests/cli-integ-tests/cdk-ci-output-to-stderr.integtest.d.ts +1 -0
  181. package/tests/cli-integ-tests/cdk-ci-output-to-stderr.integtest.js +16 -0
  182. package/tests/cli-integ-tests/cdk-ci-output-to-stderr.integtest.ts +19 -0
  183. package/tests/cli-integ-tests/cdk-ci-true-output-to-stdout.integtest.d.ts +1 -0
  184. package/tests/cli-integ-tests/cdk-ci-true-output-to-stdout.integtest.js +24 -0
  185. package/tests/cli-integ-tests/cdk-ci-true-output-to-stdout.integtest.ts +28 -0
  186. package/tests/cli-integ-tests/cdk-construct-with-builtin-lambda-function.integtest.d.ts +1 -0
  187. package/tests/cli-integ-tests/cdk-construct-with-builtin-lambda-function.integtest.js +11 -0
  188. package/tests/cli-integ-tests/cdk-construct-with-builtin-lambda-function.integtest.ts +14 -0
  189. package/tests/cli-integ-tests/cdk-context-in-stage-propagates-to-top.integtest.d.ts +1 -0
  190. package/tests/cli-integ-tests/cdk-context-in-stage-propagates-to-top.integtest.js +15 -0
  191. package/tests/cli-integ-tests/cdk-context-in-stage-propagates-to-top.integtest.ts +20 -0
  192. package/tests/cli-integ-tests/cdk-context-setting.integtest.d.ts +1 -0
  193. package/tests/cli-integ-tests/cdk-context-setting.integtest.js +26 -0
  194. package/tests/cli-integ-tests/cdk-context-setting.integtest.ts +33 -0
  195. package/tests/cli-integ-tests/cdk-deploy---method-direct.integtest.d.ts +1 -0
  196. package/tests/cli-integ-tests/cdk-deploy---method-direct.integtest.js +18 -0
  197. package/tests/cli-integ-tests/cdk-deploy---method-direct.integtest.ts +23 -0
  198. package/tests/cli-integ-tests/cdk-deploy-all-concurrently.integtest.d.ts +1 -0
  199. package/tests/cli-integ-tests/cdk-deploy-all-concurrently.integtest.js +13 -0
  200. package/tests/cli-integ-tests/cdk-deploy-all-concurrently.integtest.ts +17 -0
  201. package/tests/cli-integ-tests/cdk-deploy-all.integtest.d.ts +1 -0
  202. package/tests/cli-integ-tests/cdk-deploy-all.integtest.js +10 -0
  203. package/tests/cli-integ-tests/cdk-deploy-all.integtest.ts +14 -0
  204. package/tests/cli-integ-tests/cdk-deploy-and-test-stack-with-lambda-asset.integtest.d.ts +1 -0
  205. package/tests/cli-integ-tests/cdk-deploy-and-test-stack-with-lambda-asset.integtest.js +22 -0
  206. package/tests/cli-integ-tests/cdk-deploy-and-test-stack-with-lambda-asset.integtest.ts +31 -0
  207. package/tests/cli-integ-tests/cdk-deploy-deletes-all-notification-arns-when-empty-array-is-passed.integtest.d.ts +1 -0
  208. package/tests/cli-integ-tests/cdk-deploy-deletes-all-notification-arns-when-empty-array-is-passed.integtest.js +41 -0
  209. package/tests/cli-integ-tests/cdk-deploy-deletes-all-notification-arns-when-empty-array-is-passed.integtest.ts +50 -0
  210. package/tests/cli-integ-tests/cdk-deploy-no-stacks-error.integtest.d.ts +1 -0
  211. package/tests/cli-integ-tests/cdk-deploy-no-stacks-error.integtest.js +13 -0
  212. package/tests/cli-integ-tests/cdk-deploy-no-stacks-error.integtest.ts +18 -0
  213. package/tests/cli-integ-tests/cdk-deploy-no-stacks-with---ignore-no-stacks.integtest.d.ts +1 -0
  214. package/tests/cli-integ-tests/cdk-deploy-no-stacks-with---ignore-no-stacks.integtest.js +14 -0
  215. package/tests/cli-integ-tests/cdk-deploy-no-stacks-with---ignore-no-stacks.integtest.ts +17 -0
  216. package/tests/cli-integ-tests/cdk-deploy-preserves-existing-notification-arns-when-not-specified.integtest.d.ts +1 -0
  217. package/tests/cli-integ-tests/cdk-deploy-preserves-existing-notification-arns-when-not-specified.integtest.js +38 -0
  218. package/tests/cli-integ-tests/cdk-deploy-preserves-existing-notification-arns-when-not-specified.integtest.ts +51 -0
  219. package/tests/cli-integ-tests/cdk-deploy-stack-with-docker-asset.integtest.d.ts +1 -0
  220. package/tests/cli-integ-tests/cdk-deploy-stack-with-docker-asset.integtest.js +8 -0
  221. package/tests/cli-integ-tests/cdk-deploy-stack-with-docker-asset.integtest.ts +11 -0
  222. package/tests/cli-integ-tests/cdk-deploy-stack-with-lambda-asset-to-object-lock-enabled-asset-bucket.integtest.d.ts +1 -0
  223. package/tests/cli-integ-tests/cdk-deploy-stack-with-lambda-asset-to-object-lock-enabled-asset-bucket.integtest.js +39 -0
  224. package/tests/cli-integ-tests/cdk-deploy-stack-with-lambda-asset-to-object-lock-enabled-asset-bucket.integtest.ts +42 -0
  225. package/tests/cli-integ-tests/cdk-deploy-stack-without-resource.integtest.d.ts +1 -0
  226. package/tests/cli-integ-tests/cdk-deploy-stack-without-resource.integtest.js +17 -0
  227. package/tests/cli-integ-tests/cdk-deploy-stack-without-resource.integtest.ts +32 -0
  228. package/tests/cli-integ-tests/cdk-deploy-wildcard-with-outputs.integtest.d.ts +1 -0
  229. package/tests/cli-integ-tests/cdk-deploy-wildcard-with-outputs.integtest.js +23 -0
  230. package/tests/cli-integ-tests/cdk-deploy-wildcard-with-outputs.integtest.ts +28 -0
  231. package/tests/cli-integ-tests/cdk-deploy-with-import-existing-resources-true.integtest.d.ts +1 -0
  232. package/tests/cli-integ-tests/cdk-deploy-with-import-existing-resources-true.integtest.js +28 -0
  233. package/tests/cli-integ-tests/cdk-deploy-with-import-existing-resources-true.integtest.ts +29 -0
  234. package/tests/cli-integ-tests/cdk-deploy-with-method-direct-and-import-existing-resources-fails.integtest.d.ts +1 -0
  235. package/tests/cli-integ-tests/cdk-deploy-with-method-direct-and-import-existing-resources-fails.integtest.js +16 -0
  236. package/tests/cli-integ-tests/cdk-deploy-with-method-direct-and-import-existing-resources-fails.integtest.ts +17 -0
  237. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-flag.integtest.d.ts +1 -0
  238. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-flag.integtest.js +28 -0
  239. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-flag.integtest.ts +36 -0
  240. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop-and-flag.integtest.d.ts +1 -0
  241. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop-and-flag.integtest.js +37 -0
  242. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop-and-flag.integtest.ts +45 -0
  243. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop.integtest.d.ts +1 -0
  244. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop.integtest.js +31 -0
  245. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop.integtest.ts +37 -0
  246. package/tests/cli-integ-tests/cdk-deploy-with-parameters-multi.integtest.d.ts +1 -0
  247. package/tests/cli-integ-tests/cdk-deploy-with-parameters-multi.integtest.js +26 -0
  248. package/tests/cli-integ-tests/cdk-deploy-with-parameters-multi.integtest.ts +33 -0
  249. package/tests/cli-integ-tests/cdk-deploy-with-parameters.integtest.d.ts +1 -0
  250. package/tests/cli-integ-tests/cdk-deploy-with-parameters.integtest.js +20 -0
  251. package/tests/cli-integ-tests/cdk-deploy-with-parameters.integtest.ts +26 -0
  252. package/tests/cli-integ-tests/cdk-deploy-with-role.integtest.d.ts +1 -0
  253. package/tests/cli-integ-tests/cdk-deploy-with-role.integtest.js +97 -0
  254. package/tests/cli-integ-tests/cdk-deploy-with-role.integtest.ts +119 -0
  255. package/tests/cli-integ-tests/cdk-deploy-with-wildcard-and-parameters.integtest.d.ts +1 -0
  256. package/tests/cli-integ-tests/cdk-deploy-with-wildcard-and-parameters.integtest.js +19 -0
  257. package/tests/cli-integ-tests/cdk-deploy-with-wildcard-and-parameters.integtest.ts +22 -0
  258. package/tests/cli-integ-tests/cdk-deploy-without-execute-a-named-change-set.integtest.d.ts +1 -0
  259. package/tests/cli-integ-tests/cdk-deploy-without-execute-a-named-change-set.integtest.js +28 -0
  260. package/tests/cli-integ-tests/cdk-deploy-without-execute-a-named-change-set.integtest.ts +36 -0
  261. package/tests/cli-integ-tests/cdk-deploy-without-import-existing-resources.integtest.d.ts +1 -0
  262. package/tests/cli-integ-tests/cdk-deploy-without-import-existing-resources.integtest.js +27 -0
  263. package/tests/cli-integ-tests/cdk-deploy-without-import-existing-resources.integtest.ts +28 -0
  264. package/tests/cli-integ-tests/cdk-deploy.integtest.d.ts +1 -0
  265. package/tests/cli-integ-tests/cdk-deploy.integtest.js +15 -0
  266. package/tests/cli-integ-tests/cdk-deploy.integtest.ts +20 -0
  267. package/tests/cli-integ-tests/cdk-destroy-interactive.integtest.d.ts +1 -0
  268. package/tests/cli-integ-tests/cdk-destroy-interactive.integtest.js +32 -0
  269. package/tests/cli-integ-tests/cdk-destroy-interactive.integtest.ts +36 -0
  270. package/tests/cli-integ-tests/cdk-doubly-nested-stack.integtest.d.ts +1 -0
  271. package/tests/cli-integ-tests/cdk-doubly-nested-stack.integtest.js +10 -0
  272. package/tests/cli-integ-tests/cdk-doubly-nested-stack.integtest.ts +12 -0
  273. package/tests/cli-integ-tests/cdk-enablediffnofail.integtest.d.ts +1 -0
  274. package/tests/cli-integ-tests/cdk-enablediffnofail.integtest.js +34 -0
  275. package/tests/cli-integ-tests/cdk-enablediffnofail.integtest.ts +44 -0
  276. package/tests/cli-integ-tests/cdk-failed-deploy-does-not-hang.integtest.d.ts +1 -0
  277. package/tests/cli-integ-tests/cdk-failed-deploy-does-not-hang.integtest.js +9 -0
  278. package/tests/cli-integ-tests/cdk-failed-deploy-does-not-hang.integtest.ts +12 -0
  279. package/tests/cli-integ-tests/cdk-fast-deploy.integtest.d.ts +1 -0
  280. package/tests/cli-integ-tests/cdk-fast-deploy.integtest.js +35 -0
  281. package/tests/cli-integ-tests/cdk-fast-deploy.integtest.ts +41 -0
  282. package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-ecr-images.integtest.d.ts +1 -0
  283. package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-ecr-images.integtest.js +39 -0
  284. package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-ecr-images.integtest.ts +48 -0
  285. package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-s3-objects.integtest.d.ts +1 -0
  286. package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-s3-objects.integtest.js +43 -0
  287. package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-s3-objects.integtest.ts +51 -0
  288. package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-ecr-images.integtest.d.ts +1 -0
  289. package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-ecr-images.integtest.js +39 -0
  290. package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-ecr-images.integtest.ts +48 -0
  291. package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-s3-objects.integtest.d.ts +1 -0
  292. package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-s3-objects.integtest.js +44 -0
  293. package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-s3-objects.integtest.ts +52 -0
  294. package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-ecr-images.integtest.d.ts +1 -0
  295. package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-ecr-images.integtest.js +38 -0
  296. package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-ecr-images.integtest.ts +47 -0
  297. package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-s3-objects.integtest.d.ts +1 -0
  298. package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-s3-objects.integtest.js +54 -0
  299. package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-s3-objects.integtest.ts +63 -0
  300. package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-ecr-images.integtest.d.ts +1 -0
  301. package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-ecr-images.integtest.js +45 -0
  302. package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-ecr-images.integtest.ts +55 -0
  303. package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-s3-objects.integtest.d.ts +1 -0
  304. package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-s3-objects.integtest.js +53 -0
  305. package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-s3-objects.integtest.ts +63 -0
  306. package/tests/cli-integ-tests/cdk-generating-and-loading-assembly.integtest.d.ts +1 -0
  307. package/tests/cli-integ-tests/cdk-generating-and-loading-assembly.integtest.js +44 -0
  308. package/tests/cli-integ-tests/cdk-generating-and-loading-assembly.integtest.ts +52 -0
  309. package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-detects-failed-deployment-and-errors.integtest.d.ts +1 -0
  310. package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-detects-failed-deployment-and-errors.integtest.js +24 -0
  311. package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-detects-failed-deployment-and-errors.integtest.ts +29 -0
  312. package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-waits-for-deployment-to-complete.integtest.d.ts +1 -0
  313. package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-waits-for-deployment-to-complete.integtest.js +33 -0
  314. package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-waits-for-deployment-to-complete.integtest.ts +45 -0
  315. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-appsync-apis-with-many-functions.integtest.d.ts +1 -0
  316. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-appsync-apis-with-many-functions.integtest.js +30 -0
  317. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-appsync-apis-with-many-functions.integtest.ts +36 -0
  318. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-ecs-service.integtest.d.ts +1 -0
  319. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-ecs-service.integtest.js +33 -0
  320. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-ecs-service.integtest.ts +41 -0
  321. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-fn::importvalue-intrinsic.integtest.d.ts +1 -0
  322. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-fn::importvalue-intrinsic.integtest.js +46 -0
  323. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-fn::importvalue-intrinsic.integtest.ts +53 -0
  324. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-lambda-functions-description-and-environment-variables.integtest.d.ts +1 -0
  325. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-lambda-functions-description-and-environment-variables.integtest.js +36 -0
  326. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-lambda-functions-description-and-environment-variables.integtest.ts +43 -0
  327. package/tests/cli-integ-tests/cdk-hotswap-ecs-deployment-respects-properties-override.integtest.d.ts +1 -0
  328. package/tests/cli-integ-tests/cdk-hotswap-ecs-deployment-respects-properties-override.integtest.js +51 -0
  329. package/tests/cli-integ-tests/cdk-hotswap-ecs-deployment-respects-properties-override.integtest.ts +59 -0
  330. package/tests/cli-integ-tests/cdk-iam-diff.integtest.d.ts +1 -0
  331. package/tests/cli-integ-tests/cdk-iam-diff.integtest.js +18 -0
  332. package/tests/cli-integ-tests/cdk-iam-diff.integtest.ts +23 -0
  333. package/tests/cli-integ-tests/cdk-import-interactive.integtest.d.ts +1 -0
  334. package/tests/cli-integ-tests/cdk-import-interactive.integtest.js +46 -0
  335. package/tests/cli-integ-tests/cdk-import-interactive.integtest.ts +53 -0
  336. package/tests/cli-integ-tests/cdk-lib-cli-lib-deploy.integtest.d.ts +1 -0
  337. package/tests/cli-integ-tests/cdk-lib-cli-lib-deploy.integtest.js +27 -0
  338. package/tests/cli-integ-tests/cdk-lib-cli-lib-deploy.integtest.ts +32 -0
  339. package/tests/cli-integ-tests/cdk-lib-cli-lib-list.integtest.d.ts +1 -0
  340. package/tests/cli-integ-tests/cdk-lib-cli-lib-list.integtest.js +9 -0
  341. package/tests/cli-integ-tests/cdk-lib-cli-lib-list.integtest.ts +12 -0
  342. package/tests/cli-integ-tests/cdk-lib-cli-lib-synth.integtest.d.ts +1 -0
  343. package/tests/cli-integ-tests/cdk-lib-cli-lib-synth.integtest.js +22 -0
  344. package/tests/cli-integ-tests/cdk-lib-cli-lib-synth.integtest.ts +27 -0
  345. 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
  346. 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
  347. 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
  348. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-csharp.integtest.d.ts +1 -0
  349. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-csharp.integtest.js +9 -0
  350. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-csharp.integtest.ts +11 -0
  351. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-java.integtest.d.ts +1 -0
  352. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-java.integtest.js +9 -0
  353. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-java.integtest.ts +11 -0
  354. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-python.integtest.d.ts +1 -0
  355. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-python.integtest.js +9 -0
  356. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-python.integtest.ts +11 -0
  357. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-typescript.integtest.d.ts +1 -0
  358. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-typescript.integtest.js +9 -0
  359. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-typescript.integtest.ts +11 -0
  360. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-csharp.integtest.d.ts +1 -0
  361. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-csharp.integtest.js +9 -0
  362. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-csharp.integtest.ts +13 -0
  363. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-java.integtest.d.ts +1 -0
  364. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-java.integtest.js +9 -0
  365. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-java.integtest.ts +13 -0
  366. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-python.integtest.d.ts +1 -0
  367. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-python.integtest.js +9 -0
  368. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-python.integtest.ts +13 -0
  369. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-typescript.integtest.d.ts +1 -0
  370. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-typescript.integtest.js +9 -0
  371. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-typescript.integtest.ts +13 -0
  372. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-generates-migrate.json.integtest.d.ts +1 -0
  373. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-generates-migrate.json.integtest.js +16 -0
  374. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-generates-migrate.json.integtest.ts +20 -0
  375. package/tests/cli-integ-tests/cdk-migrate/testcase.d.ts +3 -0
  376. package/tests/cli-integ-tests/cdk-migrate/testcase.js +55 -0
  377. package/tests/cli-integ-tests/cdk-migrate/testcase.ts +69 -0
  378. package/tests/cli-integ-tests/cdk-nested-stack-with-parameters.integtest.d.ts +1 -0
  379. package/tests/cli-integ-tests/cdk-nested-stack-with-parameters.integtest.js +22 -0
  380. package/tests/cli-integ-tests/cdk-nested-stack-with-parameters.integtest.ts +28 -0
  381. package/tests/cli-integ-tests/cdk-requests-go-through-a-proxy-when-configured.integtest.d.ts +1 -0
  382. package/tests/cli-integ-tests/cdk-requests-go-through-a-proxy-when-configured.integtest.js +36 -0
  383. package/tests/cli-integ-tests/cdk-requests-go-through-a-proxy-when-configured.integtest.ts +39 -0
  384. package/tests/cli-integ-tests/cdk-sam-can-locally-test-the-synthesized-cdk-application.integtest.d.ts +1 -0
  385. package/tests/cli-integ-tests/cdk-sam-can-locally-test-the-synthesized-cdk-application.integtest.js +14 -0
  386. package/tests/cli-integ-tests/cdk-sam-can-locally-test-the-synthesized-cdk-application.integtest.ts +25 -0
  387. package/tests/cli-integ-tests/cdk-security-related-changes-without-a-cli-are-expected-to-fail.integtest.d.ts +1 -0
  388. package/tests/cli-integ-tests/cdk-security-related-changes-without-a-cli-are-expected-to-fail.integtest.js +20 -0
  389. package/tests/cli-integ-tests/cdk-security-related-changes-without-a-cli-are-expected-to-fail.integtest.ts +30 -0
  390. package/tests/cli-integ-tests/cdk-skips-notice-refresh.integtest.d.ts +6 -0
  391. package/tests/cli-integ-tests/cdk-skips-notice-refresh.integtest.js +22 -0
  392. package/tests/cli-integ-tests/cdk-skips-notice-refresh.integtest.ts +26 -0
  393. package/tests/cli-integ-tests/cdk-ssm-parameter-provider-error.integtest.d.ts +1 -0
  394. package/tests/cli-integ-tests/cdk-ssm-parameter-provider-error.integtest.js +10 -0
  395. package/tests/cli-integ-tests/cdk-ssm-parameter-provider-error.integtest.ts +18 -0
  396. package/tests/cli-integ-tests/cdk-stack-in-update_rollback_complete-state-can-be-updated.integtest.d.ts +1 -0
  397. package/tests/cli-integ-tests/cdk-stack-in-update_rollback_complete-state-can-be-updated.integtest.js +41 -0
  398. package/tests/cli-integ-tests/cdk-stack-in-update_rollback_complete-state-can-be-updated.integtest.ts +59 -0
  399. package/tests/cli-integ-tests/cdk-stage-with-bundled-lambda-function.integtest.d.ts +1 -0
  400. package/tests/cli-integ-tests/cdk-stage-with-bundled-lambda-function.integtest.js +10 -0
  401. package/tests/cli-integ-tests/cdk-stage-with-bundled-lambda-function.integtest.ts +13 -0
  402. package/tests/cli-integ-tests/cdk-synth---quiet-can-be-specified-in-cdk.json.integtest.d.ts +1 -0
  403. package/tests/cli-integ-tests/cdk-synth---quiet-can-be-specified-in-cdk.json.integtest.js +17 -0
  404. package/tests/cli-integ-tests/cdk-synth---quiet-can-be-specified-in-cdk.json.integtest.ts +20 -0
  405. package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-can-be-suppressed.integtest.d.ts +1 -0
  406. package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-can-be-suppressed.integtest.js +12 -0
  407. package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-can-be-suppressed.integtest.ts +15 -0
  408. package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-leads-to-failure.integtest.d.ts +1 -0
  409. package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-leads-to-failure.integtest.js +14 -0
  410. package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-leads-to-failure.integtest.ts +18 -0
  411. package/tests/cli-integ-tests/cdk-templates-on-disk-contain-metadata-resource.integtest.d.ts +1 -0
  412. package/tests/cli-integ-tests/cdk-templates-on-disk-contain-metadata-resource.integtest.js +18 -0
  413. package/tests/cli-integ-tests/cdk-templates-on-disk-contain-metadata-resource.integtest.ts +25 -0
  414. package/tests/cli-integ-tests/cdk-termination-protection.integtest.d.ts +1 -0
  415. package/tests/cli-integ-tests/cdk-termination-protection.integtest.js +14 -0
  416. package/tests/cli-integ-tests/cdk-termination-protection.integtest.ts +19 -0
  417. package/tests/cli-integ-tests/cdk-test-cdk-rollback---force.integtest.d.ts +1 -0
  418. package/tests/cli-integ-tests/cdk-test-cdk-rollback---force.integtest.js +40 -0
  419. package/tests/cli-integ-tests/cdk-test-cdk-rollback---force.integtest.ts +48 -0
  420. package/tests/cli-integ-tests/cdk-test-cdk-rollback.integtest.d.ts +1 -0
  421. package/tests/cli-integ-tests/cdk-test-cdk-rollback.integtest.js +33 -0
  422. package/tests/cli-integ-tests/cdk-test-cdk-rollback.integtest.ts +38 -0
  423. package/tests/cli-integ-tests/cdk-test-migrate-deployment-for-app-with-localfile-source-in-migrate.json.integtest.d.ts +1 -0
  424. package/tests/cli-integ-tests/cdk-test-migrate-deployment-for-app-with-localfile-source-in-migrate.json.integtest.js +45 -0
  425. package/tests/cli-integ-tests/cdk-test-migrate-deployment-for-app-with-localfile-source-in-migrate.json.integtest.ts +56 -0
  426. package/tests/cli-integ-tests/cdk-test-resource-import-with-construct-that-requires-bundling.integtest.d.ts +6 -0
  427. package/tests/cli-integ-tests/cdk-test-resource-import-with-construct-that-requires-bundling.integtest.js +59 -0
  428. package/tests/cli-integ-tests/cdk-test-resource-import-with-construct-that-requires-bundling.integtest.ts +74 -0
  429. package/tests/cli-integ-tests/cdk-test-resource-import.integtest.d.ts +1 -0
  430. package/tests/cli-integ-tests/cdk-test-resource-import.integtest.js +51 -0
  431. package/tests/cli-integ-tests/cdk-test-resource-import.integtest.ts +64 -0
  432. package/tests/cli-integ-tests/cdk-two-ways-of-showing-the-version.integtest.d.ts +1 -0
  433. package/tests/cli-integ-tests/cdk-two-ways-of-showing-the-version.integtest.js +10 -0
  434. package/tests/cli-integ-tests/cdk-two-ways-of-showing-the-version.integtest.ts +14 -0
  435. 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
  436. 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
  437. 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
  438. package/tests/cli-integ-tests/cdk-vpc-lookup.integtest.d.ts +1 -0
  439. package/tests/cli-integ-tests/cdk-vpc-lookup.integtest.js +21 -0
  440. package/tests/cli-integ-tests/cdk-vpc-lookup.integtest.ts +26 -0
  441. package/tests/cli-integ-tests/proxy.integtest.js +1 -2
  442. package/tests/cli-integ-tests/proxy.integtest.ts +0 -1
  443. package/tests/cli-integ-tests/bootstrapping.integtest.js +0 -431
  444. package/tests/cli-integ-tests/bootstrapping.integtest.ts +0 -517
  445. package/tests/cli-integ-tests/cli-lib.integtest.js +0 -62
  446. package/tests/cli-integ-tests/cli-lib.integtest.ts +0 -90
  447. package/tests/cli-integ-tests/cli.integtest.js +0 -2187
  448. package/tests/cli-integ-tests/cli.integtest.ts +0 -2969
  449. package/tests/cli-integ-tests/garbage-collection.integtest.js +0 -314
  450. package/tests/cli-integ-tests/garbage-collection.integtest.ts +0 -392
  451. /package/tests/cli-integ-tests/{bootstrapping.integtest.d.ts → cdk---exclusively-selects-only-selected-stack.integtest.d.ts} +0 -0
  452. /package/tests/cli-integ-tests/{cli-lib.integtest.d.ts → cdk-assets/cdk-assets-uses-profile.integtest.d.ts} +0 -0
  453. /package/tests/cli-integ-tests/{cli.integtest.d.ts → cdk-automatic-ordering-with-concurrency.integtest.d.ts} +0 -0
  454. /package/tests/cli-integ-tests/{garbage-collection.integtest.d.ts → cdk-automatic-ordering.integtest.d.ts} +0 -0
@@ -97,6 +97,7 @@ async function main() {
97
97
  }
98
98
  console.log(`Package source: ${packageSource.description}`);
99
99
  console.log(`Test suite: ${suiteName}`);
100
+ console.log(`Test version: ${thisPackageVersion()}`);
100
101
  await packageSource.prepare();
101
102
  (0, subprocess_1.serializeForSubprocess)(packageSource);
102
103
  if (args.verbose) {
@@ -124,9 +125,13 @@ async function main() {
124
125
  await packageSource.cleanup();
125
126
  }
126
127
  }
128
+ function thisPackageVersion() {
129
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
130
+ return require('../../package.json').version;
131
+ }
127
132
  main().catch(e => {
128
133
  // eslint-disable-next-line no-console
129
134
  console.error(e);
130
135
  process.exitCode = 1;
131
136
  });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXN1aXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicnVuLXN1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLHNFQUE4RTtBQUM5RSxnRUFBc0Y7QUFFdEYsOERBQXVFO0FBRXZFLEtBQUssVUFBVSxJQUFJOztJQUNqQixNQUFNLElBQUksR0FBRyxNQUFNLEtBQUs7U0FDckIsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1NBQ3ZCLFVBQVUsQ0FBQyxXQUFXLEVBQUU7UUFDdkIsVUFBVSxFQUFFLCtCQUErQjtRQUMzQyxJQUFJLEVBQUUsUUFBUTtRQUNkLFlBQVksRUFBRSxJQUFJO0tBQ25CLENBQUM7U0FDRCxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQ2QsVUFBVSxFQUFFLHVDQUF1QztRQUNuRCxLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLElBQUk7S0FDbEIsQ0FBQztTQUNELE1BQU0sQ0FBQyxXQUFXLEVBQUU7UUFDbkIsV0FBVyxFQUFFLCtCQUErQjtRQUM1QyxJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUM7U0FDRCxNQUFNLENBQUMsWUFBWSxFQUFFO1FBQ3BCLFVBQVUsRUFBRSxzRUFBc0U7UUFDbEYsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUM7U0FDRCxNQUFNLENBQUMsaUJBQWlCLEVBQUU7UUFDekIsVUFBVSxFQUFFLDREQUE0RDtRQUN4RSxLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLElBQUk7S0FDbEIsQ0FBQztTQUNELE1BQU0sQ0FBQyxhQUFhLEVBQUU7UUFDckIsS0FBSyxFQUFFLEdBQUc7UUFDVixXQUFXLEVBQUUsdUVB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UUFBUSxHQUFHLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBqZXN0IGZyb20gJ2plc3QnO1xuaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuaW1wb3J0IHsgUmVsZWFzZVBhY2thZ2VTb3VyY2VTZXR1cCB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlcy9yZWxlYXNlLXNvdXJjZSc7XG5pbXBvcnQgeyBSZXBvUGFja2FnZVNvdXJjZVNldHVwLCBhdXRvRmluZFJvb3QgfSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZXMvcmVwby1zb3VyY2UnO1xuaW1wb3J0IHsgSVBhY2thZ2VTb3VyY2VTZXR1cCB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlcy9zb3VyY2UnO1xuaW1wb3J0IHsgc2VyaWFsaXplRm9yU3VicHJvY2VzcyB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlcy9zdWJwcm9jZXNzJztcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgYXJncyA9IGF3YWl0IHlhcmdzXG4gICAgLnVzYWdlKCckMCA8U1VJVEVOQU1FPicpXG4gICAgLnBvc2l0aW9uYWwoJ1NVSVRFTkFNRScsIHtcbiAgICAgIGRlc2NyaXB0b246ICdOYW1lIG9mIHRoZSB0ZXN0IHN1aXRlIHRvIHJ1bicsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ3Rlc3QnLCB7XG4gICAgICBkZXNjcmlwdG9uOiAnVGVzdCBwYXR0ZXJuIHRvIHNlbGVjdGl2ZWx5IHJ1biB0ZXN0cycsXG4gICAgICBhbGlhczogJ3QnLFxuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ3Rlc3QtZmlsZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIHNwZWNpZmljIHRlc3QgZmlsZSB0byBydW4nLFxuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ3VzZS1zb3VyY2UnLCB7XG4gICAgICBkZXNjcmlwdG9uOiAnVXNlIFR5cGVTY3JpcHQgcGFja2FnZXMgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIHJlcG9zaXRvcnkgKG9yIFwiYXV0b1wiKScsXG4gICAgICBhbGlhczogJ3MnLFxuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ3VzZS1jbGktcmVsZWFzZScsIHtcbiAgICAgIGRlc2NyaXB0b246ICdSdW4gdGhlIGN1cnJlbnQgdGVzdHMgYWdhaW5zdCB0aGUgQ0xJIGF0IHRoZSBnaXZlbiB2ZXJzaW9uJyxcbiAgICAgIGFsaWFzOiAndScsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbignYXV0by1zb3VyY2UnLCB7XG4gICAgICBhbGlhczogJ2EnLFxuICAgICAgZGVzY3JpcHRpb246ICdBdXRvbWF0aWNhbGx5IGZpbmQgdGhlIHNvdXJjZSB0cmVlIGZyb20gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnknLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgIH0pXG4gICAgLm9wdGlvbigncnVuSW5CYW5kJywge1xuICAgICAgZGVzY3JpcHRvbjogJ1J1biBhbGwgdGVzdHMgaW4gb25lIE5vZGUgcHJvY2VzcycsXG4gICAgICBhbGlhczogJ2knLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIH0pXG4gICAgLm9wdGlvbnMoJ2ZyYW1ld29yay12ZXJzaW9uJywge1xuICAgICAgZGVzY3JpcHRpb246ICdGcmFtZXdvcmsgdmVyc2lvbiB0byB1c2UsIGlmIGRpZmZlcmVudCB0aGFuIHRoZSBDTEkgdmVyc2lvbiAobm90IGFsbCBzdWl0ZXMgcmVzcGVjdCB0aGlzKScsXG4gICAgICBhbGlhczogJ2YnLFxuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgfSlcbiAgICAub3B0aW9ucygndmVyYm9zZScsIHtcbiAgICAgIGFsaWFzOiAndicsXG4gICAgICBkZXNjcmlwdGlvbjogJ1J1biBpbiB2ZXJib3NlIG1vZGUnLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgIH0pXG4gICAgLm9wdGlvbnMoJ3Bhc3NXaXRoTm9UZXN0cycsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWxsb3cgcGFzc2luZyBpZiB0aGUgdGVzdCBzdWl0ZSBpcyBub3QgZm91bmQgKGRlZmF1bHQgdHJ1ZSB3aGVuIElTX0NBTkFSWSBtb2RlLCBmYWxzZSBvdGhlcndpc2UpJyxcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICB9KVxuICAgIC5oZWxwKClcbiAgICAuc2hvd0hlbHBPbkZhaWwoZmFsc2UpXG4gICAgLmFyZ3Y7XG5cbiAgY29uc3Qgc3VpdGVOYW1lID0gYXJncy5fWzBdIGFzIHN0cmluZztcbiAgaWYgKCFzdWl0ZU5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VzYWdlOiBydW4tc3VpdGUgPFNVSVRFTkFNRT4nKTtcbiAgfVxuXG4gIGxldCBwYWNrYWdlU291cmNlOiB1bmRlZmluZWQgfCBJUGFja2FnZVNvdXJjZVNldHVwO1xuICBmdW5jdGlvbiB1c2VQYWNrYWdlU291cmNlKHM6IElQYWNrYWdlU291cmNlU2V0dXApIHtcbiAgICBpZiAocGFja2FnZVNvdXJjZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3BlY2lmeSB0d28gcGFja2FnZSBzb3VyY2VzJyk7XG4gICAgfVxuICAgIHBhY2thZ2VTb3VyY2UgPSBzO1xuICB9XG5cbiAgaWYgKGFyZ3NbJ3VzZS1zb3VyY2UnXSB8fCBhcmdzWydhdXRvLXNvdXJjZSddKSB7XG4gICAgaWYgKGFyZ3NbJ2ZyYW1ld29yay12ZXJzaW9uJ10pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSAtLWZyYW1ld29yay12ZXJzaW9uIHdpdGggLS11c2Utc291cmNlJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm9vdCA9IGFyZ3NbJ3VzZS1zb3VyY2UnXSAmJiBhcmdzWyd1c2Utc291cmNlJ10gIT09ICdhdXRvJ1xuICAgICAgPyBhcmdzWyd1c2Utc291cmNlJ11cbiAgICAgIDogYXdhaXQgYXV0b0ZpbmRSb290KCk7XG5cbiAgICB1c2VQYWNrYWdlU291cmNlKG5ldyBSZXBvUGFja2FnZVNvdXJjZVNldHVwKHJvb3QpKTtcbiAgfSBlbHNlIGlmIChhcmdzWyd1c2UtY2xpLXJlbGVhc2UnXSkge1xuICAgIHVzZVBhY2thZ2VTb3VyY2UobmV3IFJlbGVhc2VQYWNrYWdlU291cmNlU2V0dXAoYXJnc1sndXNlLWNsaS1yZWxlYXNlJ10sIGFyZ3NbJ2ZyYW1ld29yay12ZXJzaW9uJ10pKTtcbiAgfVxuICBpZiAoIXBhY2thZ2VTb3VyY2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NwZWNpZnkgZWl0aGVyIC0tdXNlLXNvdXJjZSBvciAtLXVzZS1jbGktcmVsZWFzZScpO1xuICB9XG5cbiAgY29uc29sZS5sb2coYFBhY2thZ2Ugc291cmNlOiAke3BhY2thZ2VTb3VyY2UuZGVzY3JpcHRpb259YCk7XG4gIGNvbnNvbGUubG9nKGBUZXN0IHN1aXRlOiAgICAgJHtzdWl0ZU5hbWV9YCk7XG5cbiAgYXdhaXQgcGFja2FnZVNvdXJjZS5wcmVwYXJlKCk7XG4gIHNlcmlhbGl6ZUZvclN1YnByb2Nlc3MocGFja2FnZVNvdXJjZSk7XG5cbiAgaWYgKGFyZ3MudmVyYm9zZSkge1xuICAgIHByb2Nlc3MuZW52LlZFUkJPU0UgPSAnMSc7XG4gIH1cblxuICAvLyBNb3RpdmF0aW9uIGJlaGluZCB0aGlzIGJlaGF2aW9yOiB3aGVuIGFkZGluZyBhIG5ldyB0ZXN0IHN1aXRlIHRvIHRoZSBwaXBlbGluZSwgYmVjYXVzZSBvZiB0aGUgd2F5IG91clxuICAvLyBQaXBlbGluZSBwYWNrYWdlIHdvcmtzLCB0aGUgc3VpdGUgd291bGQgYmUgYWRkZWQgdG8gdGhlIHBpcGVsaW5lIEFORCBhcyBhIGNhbmFyeSBpbW1lZGlhdGVseS4gVGhlIGNhbmFyeVxuICAvLyB3b3VsZCBmYWlsIHVudGlsIHRoZSBwYWNrYWdlIHdhcyBhY3R1YWxseSByZWxlYXNlZCwgc28gZm9yIGNhbmFyaWVzIHdlIG1ha2UgYW4gZXhjZXB0aW9uIHNvIHRoYXQgdGhlIGluaXRpYWxcbiAgLy8gY2FuYXJ5IHdvdWxkIHN1Y2NlZWQgZXZlbiBpZiB0aGUgc3VpdGUgd2Fzbid0IHlldCBhdmFpbGFibGUuIFRoZSBmYWN0IHRoYXQgdGhlIHN1aXRlIGlzIG5vdCBvcHRpb25hbCBpblxuICAvLyB0aGUgcGlwZWxpbmUgcHJvdGVjdHMgdXMgZnJvbSB0eXBvcy5cbiAgY29uc3QgcGFzc1dpdGhOb1Rlc3RzID0gYXJncy5wYXNzV2l0aE5vVGVzdHMgPz8gISFwcm9jZXNzLmVudi5JU19DQU5BUlk7XG5cbiAgLy8gQ29tbXVuaWNhdGUgd2l0aCB0aGUgY29uZmlnIGZpbGUgKGludGVnLmplc3QuY29uZmlnLmpzKVxuICBwcm9jZXNzLmVudi5URVNUX1NVSVRFX05BTUUgPSBzdWl0ZU5hbWU7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBqZXN0LnJ1bihbXG4gICAgICAnLS1yYW5kb21pemUnLFxuICAgICAgLi4uYXJncy5ydW5JbkJhbmQgPyBbJy1pJ10gOiBbXSxcbiAgICAgIC4uLmFyZ3MudGVzdCA/IFsnLXQnLCBhcmdzLnRlc3RdIDogW10sXG4gICAgICAuLi5hcmdzLnZlcmJvc2UgPyBbJy0tdmVyYm9zZSddIDogW10sXG4gICAgICAuLi5wYXNzV2l0aE5vVGVzdHMgPyBbJy0tcGFzc1dpdGhOb1Rlc3RzJ10gOiBbXSxcbiAgICAgIC4uLmFyZ3NbJ3Rlc3QtZmlsZSddID8gW2FyZ3NbJ3Rlc3QtZmlsZSddXSA6IFtdLFxuICAgIF0sIHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICcuLicsICdyZXNvdXJjZXMnLCAnaW50ZWcuamVzdC5jb25maWcuanMnKSk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcGFja2FnZVNvdXJjZS5jbGVhbnVwKCk7XG4gIH1cbn1cblxubWFpbigpLmNhdGNoKGUgPT4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmVycm9yKGUpO1xuICBwcm9jZXNzLmV4aXRDb2RlID0gMTtcbn0pO1xuIl19
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXN1aXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicnVuLXN1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLHNFQUE4RTtBQUM5RSxnRUFBc0Y7QUFFdEYsOERBQXVFO0FBRXZFLEtBQUssVUFBVSxJQUFJOztJQUNqQixNQUFNLElBQUksR0FBRyxNQUFNLEtBQUs7U0FDckIsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1NBQ3ZCLFVBQVUsQ0FBQyxXQUFXLEVBQUU7UUFDdkIsVUFBVSxFQUFFLCtCQUErQjtRQUMzQyxJQUFJLEVBQUUsUUFBUTtRQUNkLFlBQVksRUFBRSxJQUFJO0tBQ25CLENBQUM7U0FDRCxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQ2QsVUFBVSxFQUFFLHVDQUF1QztRQUNuRCxLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLElBQUk7S0FDbEIsQ0FBQztTQUNELE1BQU0sQ0FBQyxXQUFXLEVBQUU7UUFDbkIsV0FBVyxFQUFFLCtCQUErQjtRQUM1QyxJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUM7U0FDRCxNQUFNLENBQUMsWUFBWSxFQUFFO1FBQ3BCLFVBQVUsRUFBRSxzRUFBc0U7UUFDbEYsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUM7U0FDRCxNQUFNLENBQUMsaUJBQWlCLEVBQUU7UUFDekIsVUFBVSxFQUFFLDREQUE0RDtRQUN4RSxLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLElBQUk7S0FDbEIsQ0FBQztTQUNELE1BQU0sQ0FBQyxhQUFhLEVBQUU7UUFDckIsS0FBSyxFQUFFLEdBQUc7UUFDVixXQUFXLEVBQUUsdUVB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QW9CLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDL0MsQ0FBQztBQUVELElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNmLHNDQUFzQztJQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGplc3QgZnJvbSAnamVzdCc7XG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgeyBSZWxlYXNlUGFja2FnZVNvdXJjZVNldHVwIH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL3JlbGVhc2Utc291cmNlJztcbmltcG9ydCB7IFJlcG9QYWNrYWdlU291cmNlU2V0dXAsIGF1dG9GaW5kUm9vdCB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlcy9yZXBvLXNvdXJjZSc7XG5pbXBvcnQgeyBJUGFja2FnZVNvdXJjZVNldHVwIH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL3NvdXJjZSc7XG5pbXBvcnQgeyBzZXJpYWxpemVGb3JTdWJwcm9jZXNzIH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL3N1YnByb2Nlc3MnO1xuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICBjb25zdCBhcmdzID0gYXdhaXQgeWFyZ3NcbiAgICAudXNhZ2UoJyQwIDxTVUlURU5BTUU+JylcbiAgICAucG9zaXRpb25hbCgnU1VJVEVOQU1FJywge1xuICAgICAgZGVzY3JpcHRvbjogJ05hbWUgb2YgdGhlIHRlc3Qgc3VpdGUgdG8gcnVuJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgZGVtYW5kT3B0aW9uOiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbigndGVzdCcsIHtcbiAgICAgIGRlc2NyaXB0b246ICdUZXN0IHBhdHRlcm4gdG8gc2VsZWN0aXZlbHkgcnVuIHRlc3RzJyxcbiAgICAgIGFsaWFzOiAndCcsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbigndGVzdC1maWxlJywge1xuICAgICAgZGVzY3JpcHRpb246ICdUaGUgc3BlY2lmaWMgdGVzdCBmaWxlIHRvIHJ1bicsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbigndXNlLXNvdXJjZScsIHtcbiAgICAgIGRlc2NyaXB0b246ICdVc2UgVHlwZVNjcmlwdCBwYWNrYWdlcyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgcmVwb3NpdG9yeSAob3IgXCJhdXRvXCIpJyxcbiAgICAgIGFsaWFzOiAncycsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbigndXNlLWNsaS1yZWxlYXNlJywge1xuICAgICAgZGVzY3JpcHRvbjogJ1J1biB0aGUgY3VycmVudCB0ZXN0cyBhZ2FpbnN0IHRoZSBDTEkgYXQgdGhlIGdpdmVuIHZlcnNpb24nLFxuICAgICAgYWxpYXM6ICd1JyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgfSlcbiAgICAub3B0aW9uKCdhdXRvLXNvdXJjZScsIHtcbiAgICAgIGFsaWFzOiAnYScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0F1dG9tYXRpY2FsbHkgZmluZCB0aGUgc291cmNlIHRyZWUgZnJvbSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeScsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9uKCdydW5JbkJhbmQnLCB7XG4gICAgICBkZXNjcmlwdG9uOiAnUnVuIGFsbCB0ZXN0cyBpbiBvbmUgTm9kZSBwcm9jZXNzJyxcbiAgICAgIGFsaWFzOiAnaScsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgfSlcbiAgICAub3B0aW9ucygnZnJhbWV3b3JrLXZlcnNpb24nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0ZyYW1ld29yayB2ZXJzaW9uIHRvIHVzZSwgaWYgZGlmZmVyZW50IHRoYW4gdGhlIENMSSB2ZXJzaW9uIChub3QgYWxsIHN1aXRlcyByZXNwZWN0IHRoaXMpJyxcbiAgICAgIGFsaWFzOiAnZicsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICB9KVxuICAgIC5vcHRpb25zKCd2ZXJib3NlJywge1xuICAgICAgYWxpYXM6ICd2JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnUnVuIGluIHZlcmJvc2UgbW9kZScsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9ucygncGFzc1dpdGhOb1Rlc3RzJywge1xuICAgICAgZGVzY3JpcHRpb246ICdBbGxvdyBwYXNzaW5nIGlmIHRoZSB0ZXN0IHN1aXRlIGlzIG5vdCBmb3VuZCAoZGVmYXVsdCB0cnVlIHdoZW4gSVNfQ0FOQVJZIG1vZGUsIGZhbHNlIG90aGVyd2lzZSknLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgIH0pXG4gICAgLmhlbHAoKVxuICAgIC5zaG93SGVscE9uRmFpbChmYWxzZSlcbiAgICAuYXJndjtcblxuICBjb25zdCBzdWl0ZU5hbWUgPSBhcmdzLl9bMF0gYXMgc3RyaW5nO1xuICBpZiAoIXN1aXRlTmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVXNhZ2U6IHJ1bi1zdWl0ZSA8U1VJVEVOQU1FPicpO1xuICB9XG5cbiAgbGV0IHBhY2thZ2VTb3VyY2U6IHVuZGVmaW5lZCB8IElQYWNrYWdlU291cmNlU2V0dXA7XG4gIGZ1bmN0aW9uIHVzZVBhY2thZ2VTb3VyY2UoczogSVBhY2thZ2VTb3VyY2VTZXR1cCkge1xuICAgIGlmIChwYWNrYWdlU291cmNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzcGVjaWZ5IHR3byBwYWNrYWdlIHNvdXJjZXMnKTtcbiAgICB9XG4gICAgcGFja2FnZVNvdXJjZSA9IHM7XG4gIH1cblxuICBpZiAoYXJnc1sndXNlLXNvdXJjZSddIHx8IGFyZ3NbJ2F1dG8tc291cmNlJ10pIHtcbiAgICBpZiAoYXJnc1snZnJhbWV3b3JrLXZlcnNpb24nXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXNlIC0tZnJhbWV3b3JrLXZlcnNpb24gd2l0aCAtLXVzZS1zb3VyY2UnKTtcbiAgICB9XG5cbiAgICBjb25zdCByb290ID0gYXJnc1sndXNlLXNvdXJjZSddICYmIGFyZ3NbJ3VzZS1zb3VyY2UnXSAhPT0gJ2F1dG8nXG4gICAgICA/IGFyZ3NbJ3VzZS1zb3VyY2UnXVxuICAgICAgOiBhd2FpdCBhdXRvRmluZFJvb3QoKTtcblxuICAgIHVzZVBhY2thZ2VTb3VyY2UobmV3IFJlcG9QYWNrYWdlU291cmNlU2V0dXAocm9vdCkpO1xuICB9IGVsc2UgaWYgKGFyZ3NbJ3VzZS1jbGktcmVsZWFzZSddKSB7XG4gICAgdXNlUGFja2FnZVNvdXJjZShuZXcgUmVsZWFzZVBhY2thZ2VTb3VyY2VTZXR1cChhcmdzWyd1c2UtY2xpLXJlbGVhc2UnXSwgYXJnc1snZnJhbWV3b3JrLXZlcnNpb24nXSkpO1xuICB9XG4gIGlmICghcGFja2FnZVNvdXJjZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignU3BlY2lmeSBlaXRoZXIgLS11c2Utc291cmNlIG9yIC0tdXNlLWNsaS1yZWxlYXNlJyk7XG4gIH1cblxuICBjb25zb2xlLmxvZyhgUGFja2FnZSBzb3VyY2U6ICR7cGFja2FnZVNvdXJjZS5kZXNjcmlwdGlvbn1gKTtcbiAgY29uc29sZS5sb2coYFRlc3Qgc3VpdGU6ICAgICAke3N1aXRlTmFtZX1gKTtcbiAgY29uc29sZS5sb2coYFRlc3QgdmVyc2lvbjogICAke3RoaXNQYWNrYWdlVmVyc2lvbigpfWApO1xuXG4gIGF3YWl0IHBhY2thZ2VTb3VyY2UucHJlcGFyZSgpO1xuICBzZXJpYWxpemVGb3JTdWJwcm9jZXNzKHBhY2thZ2VTb3VyY2UpO1xuXG4gIGlmIChhcmdzLnZlcmJvc2UpIHtcbiAgICBwcm9jZXNzLmVudi5WRVJCT1NFID0gJzEnO1xuICB9XG5cbiAgLy8gTW90aXZhdGlvbiBiZWhpbmQgdGhpcyBiZWhhdmlvcjogd2hlbiBhZGRpbmcgYSBuZXcgdGVzdCBzdWl0ZSB0byB0aGUgcGlwZWxpbmUsIGJlY2F1c2Ugb2YgdGhlIHdheSBvdXJcbiAgLy8gUGlwZWxpbmUgcGFja2FnZSB3b3JrcywgdGhlIHN1aXRlIHdvdWxkIGJlIGFkZGVkIHRvIHRoZSBwaXBlbGluZSBBTkQgYXMgYSBjYW5hcnkgaW1tZWRpYXRlbHkuIFRoZSBjYW5hcnlcbiAgLy8gd291bGQgZmFpbCB1bnRpbCB0aGUgcGFja2FnZSB3YXMgYWN0dWFsbHkgcmVsZWFzZWQsIHNvIGZvciBjYW5hcmllcyB3ZSBtYWtlIGFuIGV4Y2VwdGlvbiBzbyB0aGF0IHRoZSBpbml0aWFsXG4gIC8vIGNhbmFyeSB3b3VsZCBzdWNjZWVkIGV2ZW4gaWYgdGhlIHN1aXRlIHdhc24ndCB5ZXQgYXZhaWxhYmxlLiBUaGUgZmFjdCB0aGF0IHRoZSBzdWl0ZSBpcyBub3Qgb3B0aW9uYWwgaW5cbiAgLy8gdGhlIHBpcGVsaW5lIHByb3RlY3RzIHVzIGZyb20gdHlwb3MuXG4gIGNvbnN0IHBhc3NXaXRoTm9UZXN0cyA9IGFyZ3MucGFzc1dpdGhOb1Rlc3RzID8/ICEhcHJvY2Vzcy5lbnYuSVNfQ0FOQVJZO1xuXG4gIC8vIENvbW11bmljYXRlIHdpdGggdGhlIGNvbmZpZyBmaWxlIChpbnRlZy5qZXN0LmNvbmZpZy5qcylcbiAgcHJvY2Vzcy5lbnYuVEVTVF9TVUlURV9OQU1FID0gc3VpdGVOYW1lO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgamVzdC5ydW4oW1xuICAgICAgJy0tcmFuZG9taXplJyxcbiAgICAgIC4uLmFyZ3MucnVuSW5CYW5kID8gWyctaSddIDogW10sXG4gICAgICAuLi5hcmdzLnRlc3QgPyBbJy10JywgYXJncy50ZXN0XSA6IFtdLFxuICAgICAgLi4uYXJncy52ZXJib3NlID8gWyctLXZlcmJvc2UnXSA6IFtdLFxuICAgICAgLi4ucGFzc1dpdGhOb1Rlc3RzID8gWyctLXBhc3NXaXRoTm9UZXN0cyddIDogW10sXG4gICAgICAuLi5hcmdzWyd0ZXN0LWZpbGUnXSA/IFthcmdzWyd0ZXN0LWZpbGUnXV0gOiBbXSxcbiAgICBdLCBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAncmVzb3VyY2VzJywgJ2ludGVnLmplc3QuY29uZmlnLmpzJykpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHBhY2thZ2VTb3VyY2UuY2xlYW51cCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRoaXNQYWNrYWdlVmVyc2lvbigpOiBzdHJpbmcge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICByZXR1cm4gcmVxdWlyZSgnLi4vLi4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcbn1cblxubWFpbigpLmNhdGNoKGUgPT4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmVycm9yKGUpO1xuICBwcm9jZXNzLmV4aXRDb2RlID0gMTtcbn0pO1xuIl19
@@ -101,6 +101,7 @@ async function main() {
101
101
 
102
102
  console.log(`Package source: ${packageSource.description}`);
103
103
  console.log(`Test suite: ${suiteName}`);
104
+ console.log(`Test version: ${thisPackageVersion()}`);
104
105
 
105
106
  await packageSource.prepare();
106
107
  serializeForSubprocess(packageSource);
@@ -133,6 +134,11 @@ async function main() {
133
134
  }
134
135
  }
135
136
 
137
+ function thisPackageVersion(): string {
138
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
139
+ return require('../../package.json').version;
140
+ }
141
+
136
142
  main().catch(e => {
137
143
  // eslint-disable-next-line no-console
138
144
  console.error(e);
package/lib/integ-test.js CHANGED
@@ -9,28 +9,18 @@ const SKIP_TESTS = fs.readFileSync(path.join(__dirname, '..', 'skip-tests.txt'),
9
9
  .split('\n')
10
10
  .map(x => x.trim())
11
11
  .filter(x => x && !x.startsWith('#'));
12
- if (SKIP_TESTS) {
12
+ if (SKIP_TESTS.length > 0) {
13
13
  process.stderr.write(`ℹ️ Skipping tests: ${JSON.stringify(SKIP_TESTS)}\n`);
14
14
  }
15
15
  // Whether we want to stop after the first failure, for quicker debugging (hopefully).
16
16
  const FAIL_FAST = process.env.FAIL_FAST === 'true';
17
17
  // Keep track of whether the suite has failed. If so, we stop running.
18
18
  let failed = false;
19
- if (process.env.JEST_TEST_CONCURRENT === 'true') {
20
- process.stderr.write('ℹ️ JEST_TEST_CONCURRENT is true: tests will run concurrently and filters have no effect!\n0');
21
- }
22
19
  /**
23
20
  * A wrapper for jest's 'test' which takes regression-disabled tests into account and prints a banner
24
21
  */
25
22
  function integTest(name, callback, timeoutMillis) {
26
- // Integ tests can run concurrently, and are responsible for blocking
27
- // themselves if they cannot. Because `test.concurrent` executes the test
28
- // code immediately, regardles of any `--testNamePattern`, this cannot be the
29
- // default: test filtering simply does not work with `test.concurrent`.
30
- // Instead, we make it opt-in only for the pipeline where we don't do any
31
- // selection, but execute all tests unconditionally.
32
- const testKind = process.env.JEST_TEST_CONCURRENT === 'true' ? test.concurrent : test;
33
- const runner = shouldSkip(name) ? testKind.skip : testKind;
23
+ const runner = shouldSkip(name) ? test.skip : test;
34
24
  runner(name, async () => {
35
25
  const output = new corking_1.MemoryStream();
36
26
  output.write('================================================================\n');
@@ -99,4 +89,4 @@ function randomString() {
99
89
  // Crazy
100
90
  return Math.random().toString(36).replace(/[^a-z0-9]+/g, '');
101
91
  }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWctdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVnLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQ0EsOEJBOEVDO0FBTUQsb0NBR0M7QUF4SEQseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3Qix1Q0FBeUM7QUFFekMsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztLQUNwRyxLQUFLLENBQUMsSUFBSSxDQUFDO0tBQ1gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0tBQ2xCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUV4QyxJQUFJLFVBQVUsRUFBRSxDQUFDO0lBQ2YsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFFRCxzRkFBc0Y7QUFDdEYsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDO0FBRW5ELHNFQUFzRTtBQUN0RSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFTbkIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixLQUFLLE1BQU0sRUFBRSxDQUFDO0lBQ2hELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDZGQUE2RixDQUFDLENBQUM7QUFDdEgsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsU0FBUyxDQUN2QixJQUFZLEVBQ1osUUFBaUQsRUFDakQsYUFBc0I7SUFF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Q2pCLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM5RCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGlEQUFpRDtnQkFDakQsNkRBQTZEO2dCQUM3RCxzQ0FBc0M7Z0JBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUNELE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztZQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxXQUFXLFFBQVEsU0FBUyxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUNwQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsUUFBZ0I7SUFDbEMsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxTQUFnQixZQUFZO0lBQzFCLFFBQVE7SUFDUixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IE1lbW9yeVN0cmVhbSB9IGZyb20gJy4vY29ya2luZyc7XG5cbmNvbnN0IFNLSVBfVEVTVFMgPSBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ3NraXAtdGVzdHMudHh0JyksIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSlcbiAgLnNwbGl0KCdcXG4nKVxuICAubWFwKHggPT4geC50cmltKCkpXG4gIC5maWx0ZXIoeCA9PiB4ICYmICF4LnN0YXJ0c1dpdGgoJyMnKSk7XG5cbmlmIChTS0lQX1RFU1RTKSB7XG4gIHByb2Nlc3Muc3RkZXJyLndyaXRlKGDihLnvuI8gU2tpcHBpbmcgdGVzdHM6ICR7SlNPTi5zdHJpbmdpZnkoU0tJUF9URVNUUyl9XFxuYCk7XG59XG5cbi8vIFdoZXRoZXIgd2Ugd2FudCB0byBzdG9wIGFmdGVyIHRoZSBmaXJzdCBmYWlsdXJlLCBmb3IgcXVpY2tlciBkZWJ1Z2dpbmcgKGhvcGVmdWxseSkuXG5jb25zdCBGQUlMX0ZBU1QgPSBwcm9jZXNzLmVudi5GQUlMX0ZBU1QgPT09ICd0cnVlJztcblxuLy8gS2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZSBzdWl0ZSBoYXMgZmFpbGVkLiBJZiBzbywgd2Ugc3RvcCBydW5uaW5nLlxubGV0IGZhaWxlZCA9IGZhbHNlO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RDb250ZXh0IHtcbiAgcmVhZG9ubHkgcmFuZG9tU3RyaW5nOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgb3V0cHV0OiBOb2RlSlMuV3JpdGFibGVTdHJlYW07XG4gIGxvZyhzOiBzdHJpbmcpOiB2b2lkO1xufVxuXG5pZiAocHJvY2Vzcy5lbnYuSkVTVF9URVNUX0NPTkNVUlJFTlQgPT09ICd0cnVlJykge1xuICBwcm9jZXNzLnN0ZGVyci53cml0ZSgn4oS577iPIEpFU1RfVEVTVF9DT05DVVJSRU5UIGlzIHRydWU6IHRlc3RzIHdpbGwgcnVuIGNvbmN1cnJlbnRseSBhbmQgZmlsdGVycyBoYXZlIG5vIGVmZmVjdCFcXG4wJyk7XG59XG5cbi8qKlxuICogQSB3cmFwcGVyIGZvciBqZXN0J3MgJ3Rlc3QnIHdoaWNoIHRha2VzIHJlZ3Jlc3Npb24tZGlzYWJsZWQgdGVzdHMgaW50byBhY2NvdW50IGFuZCBwcmludHMgYSBiYW5uZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludGVnVGVzdChcbiAgbmFtZTogc3RyaW5nLFxuICBjYWxsYmFjazogKGNvbnRleHQ6IFRlc3RDb250ZXh0KSA9PiBQcm9taXNlPHZvaWQ+LFxuICB0aW1lb3V0TWlsbGlzPzogbnVtYmVyLFxuKTogdm9pZCB7XG4gIC8vIEludGVnIHRlc3RzIGNhbiBydW4gY29uY3VycmVudGx5LCBhbmQgYXJlIHJlc3BvbnNpYmxlIGZvciBibG9ja2luZ1xuICAvLyB0aGVtc2VsdmVzIGlmIHRoZXkgY2Fubm90LiAgQmVjYXVzZSBgdGVzdC5jb25jdXJyZW50YCBleGVjdXRlcyB0aGUgdGVzdFxuICAvLyBjb2RlIGltbWVkaWF0ZWx5LCByZWdhcmRsZXMgb2YgYW55IGAtLXRlc3ROYW1lUGF0dGVybmAsIHRoaXMgY2Fubm90IGJlIHRoZVxuICAvLyBkZWZhdWx0OiB0ZXN0IGZpbHRlcmluZyBzaW1wbHkgZG9lcyBub3Qgd29yayB3aXRoIGB0ZXN0LmNvbmN1cnJlbnRgLlxuICAvLyBJbnN0ZWFkLCB3ZSBtYWtlIGl0IG9wdC1pbiBvbmx5IGZvciB0aGUgcGlwZWxpbmUgd2hlcmUgd2UgZG9uJ3QgZG8gYW55XG4gIC8vIHNlbGVjdGlvbiwgYnV0IGV4ZWN1dGUgYWxsIHRlc3RzIHVuY29uZGl0aW9uYWxseS5cbiAgY29uc3QgdGVzdEtpbmQgPSBwcm9jZXNzLmVudi5KRVNUX1RFU1RfQ09OQ1VSUkVOVCA9PT0gJ3RydWUnID8gdGVzdC5jb25jdXJyZW50IDogdGVzdDtcbiAgY29uc3QgcnVubmVyID0gc2hvdWxkU2tpcChuYW1lKSA/IHRlc3RLaW5kLnNraXAgOiB0ZXN0S2luZDtcblxuICBydW5uZXIobmFtZSwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG91dHB1dCA9IG5ldyBNZW1vcnlTdHJlYW0oKTtcblxuICAgIG91dHB1dC53cml0ZSgnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbicpO1xuICAgIG91dHB1dC53cml0ZShgJHtuYW1lfVxcbmApO1xuICAgIG91dHB1dC53cml0ZSgnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbicpO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgW0lOVEVHIFRFU1Q6OiR7bmFtZX1dIFN0YXJ0aW5nIChwaWQgJHtwcm9jZXNzLnBpZH0pLi4uXFxuYCk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChGQUlMX0ZBU1QgJiYgZmFpbGVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRkFJTF9GQVNUIHJlcXVlc3RlZCBhbmQgY3VycmVudGx5IGZhaWxpbmcuIFN0b3BwaW5nIHRlc3QgZWFybHkuJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhd2FpdCBjYWxsYmFjayh7XG4gICAgICAgIG91dHB1dCxcbiAgICAgICAgcmFuZG9tU3RyaW5nOiByYW5kb21TdHJpbmcoKSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgbG9nKHM6IHN0cmluZykge1xuICAgICAgICAgIG91dHB1dC53cml0ZShgJHtzfVxcbmApO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBmYWlsZWQgPSB0cnVlO1xuXG4gICAgICAvLyBQcmludCB0aGUgYnVmZmVyZWQgb3V0cHV0LCBvbmx5IGlmIHRoZSB0ZXN0IGZhaWxzLlxuICAgICAgb3V0cHV0LndyaXRlKGUubWVzc2FnZSk7XG4gICAgICBvdXRwdXQud3JpdGUoZS5zdGFjayk7XG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgW0lOVEVHIFRFU1Q6OiR7bmFtZX1dIEZhaWxlZDogJHtlfVxcbmApO1xuXG4gICAgICBjb25zdCBpc0dpdEh1YiA9ICEhcHJvY2Vzcy5lbnYuR0lUSFVCX1JVTl9JRDtcblxuICAgICAgaWYgKGlzR2l0SHViKSB7XG4gICAgICAgIC8vIEdpdEh1YiBBY3Rpb25zIGNvbXBhdGlibGUgb3V0cHV0IGZvcm1hdHRpbmdcbiAgICAgICAgLy8gaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy93cml0aW5nLXdvcmtmbG93cy9jaG9vc2luZy13aGF0LXlvdXItd29ya2Zsb3ctZG9lcy93b3JrZmxvdy1jb21tYW5kcy1mb3ItZ2l0aHViLWFjdGlvbnMjc2V0dGluZy1hbi1lcnJvci1tZXNzYWdlXG4gICAgICAgIGxldCB3cml0dGVuID0gcHJvY2Vzcy5zdGRlcnIud3JpdGUoYDo6ZXJyb3IgdGl0bGU9RmFpbGVkICR7bmFtZX06OiR7ZS5tZXNzYWdlfVxcbmApO1xuICAgICAgICBpZiAoIXdyaXR0ZW4pIHtcbiAgICAgICAgICAvLyBXYWl0IGZvciBkcmFpblxuICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChvaykgPT4gcHJvY2Vzcy5zdGRlcnIub25jZSgnZHJhaW4nLCBvaykpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJpbnQgb3V0cHV0IG9ubHkgaWYgdGhlIHRlc3QgZmFpbHMuIFVzZSAnY29uc29sZS5sb2cnIHNvIHRoZSBvdXRwdXQgaXMgYnVmZmVyZWQgYnlcbiAgICAgICAgLy8gamVzdCBhbmQgcHJpbnRzIHdpdGhvdXQgYSBzdGFjayB0cmFjZSAoaWYgdmVyYm9zZTogZmFsc2UpLlxuICAgICAgICB3cml0dGVuID0gcHJvY2Vzcy5zdGRvdXQud3JpdGUoW1xuICAgICAgICAgIGA6Omdyb3VwOjpGYWlsdXJlIGRldGFpbHM6ICR7bmFtZX0gKGNsaWNrIHRvIGV4cGFuZClcXG5gLFxuICAgICAgICAgIGAke291dHB1dC5idWZmZXIoKS50b1N0cmluZygpfVxcbmAsXG4gICAgICAgICAgJzo6ZW5kZ3JvdXA6OlxcbicsXG4gICAgICAgIF0uam9pbignJykpO1xuICAgICAgICBpZiAoIXdyaXR0ZW4pIHtcbiAgICAgICAgICAvLyBXYWl0IGZvciBkcmFpblxuICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChvaykgPT4gcHJvY2Vzcy5zdGRvdXQub25jZSgnZHJhaW4nLCBvaykpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBVc2UgJ2NvbnNvbGUubG9nJyBzbyB0aGUgb3V0cHV0IGlzIGJ1ZmZlcmVkIGJ5XG4gICAgICAgIC8vIGplc3QgYW5kIHByaW50cyB3aXRob3V0IGEgc3RhY2sgdHJhY2UgKGlmIHZlcmJvc2U6IGZhbHNlKS5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5sb2cob3V0cHV0LmJ1ZmZlcigpLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gbm93O1xuICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoYFtJTlRFRyBURVNUOjoke25hbWV9XSBEb25lICgke2R1cmF0aW9ufSBtcykuXFxuYCk7XG4gICAgfVxuICB9LCB0aW1lb3V0TWlsbGlzKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkU2tpcCh0ZXN0TmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBTS0lQX1RFU1RTLmluY2x1ZGVzKHRlc3ROYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbVN0cmluZygpIHtcbiAgLy8gQ3JhenlcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnJlcGxhY2UoL1teYS16MC05XSsvZywgJycpO1xufVxuIl19
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWctdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVnLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE2QkEsOEJBdUVDO0FBTUQsb0NBR0M7QUE3R0QseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3Qix1Q0FBeUM7QUFFekMsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztLQUNwRyxLQUFLLENBQUMsSUFBSSxDQUFDO0tBQ1gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0tBQ2xCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUV4QyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDMUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFFRCxzRkFBc0Y7QUFDdEYsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDO0FBRW5ELHNFQUFzRTtBQUN0RSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFTbkI7O0dBRUc7QUFDSCxTQUFnQixTQUFTLENBQ3ZCLElBQVksRUFDWixRQUFpRCxFQUNqRCxhQUFzQjtJQUV0QixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUVuRCxN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Q0FBQztnQkFBUyxDQUFDO1lBQ1QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztZQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxXQUFXLFFBQVEsU0FBUyxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUNwQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsUUFBZ0I7SUFDbEMsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxTQUFnQixZQUFZO0lBQzFCLFFBQVE7SUFDUixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IE1lbW9yeVN0cmVhbSB9IGZyb20gJy4vY29ya2luZyc7XG5cbmNvbnN0IFNLSVBfVEVTVFMgPSBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ3NraXAtdGVzdHMudHh0JyksIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSlcbiAgLnNwbGl0KCdcXG4nKVxuICAubWFwKHggPT4geC50cmltKCkpXG4gIC5maWx0ZXIoeCA9PiB4ICYmICF4LnN0YXJ0c1dpdGgoJyMnKSk7XG5cbmlmIChTS0lQX1RFU1RTLmxlbmd0aCA+IDApIHtcbiAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoYOKEue+4jyBTa2lwcGluZyB0ZXN0czogJHtKU09OLnN0cmluZ2lmeShTS0lQX1RFU1RTKX1cXG5gKTtcbn1cblxuLy8gV2hldGhlciB3ZSB3YW50IHRvIHN0b3AgYWZ0ZXIgdGhlIGZpcnN0IGZhaWx1cmUsIGZvciBxdWlja2VyIGRlYnVnZ2luZyAoaG9wZWZ1bGx5KS5cbmNvbnN0IEZBSUxfRkFTVCA9IHByb2Nlc3MuZW52LkZBSUxfRkFTVCA9PT0gJ3RydWUnO1xuXG4vLyBLZWVwIHRyYWNrIG9mIHdoZXRoZXIgdGhlIHN1aXRlIGhhcyBmYWlsZWQuIElmIHNvLCB3ZSBzdG9wIHJ1bm5pbmcuXG5sZXQgZmFpbGVkID0gZmFsc2U7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdENvbnRleHQge1xuICByZWFkb25seSByYW5kb21TdHJpbmc6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBvdXRwdXQ6IE5vZGVKUy5Xcml0YWJsZVN0cmVhbTtcbiAgbG9nKHM6IHN0cmluZyk6IHZvaWQ7XG59XG5cbi8qKlxuICogQSB3cmFwcGVyIGZvciBqZXN0J3MgJ3Rlc3QnIHdoaWNoIHRha2VzIHJlZ3Jlc3Npb24tZGlzYWJsZWQgdGVzdHMgaW50byBhY2NvdW50IGFuZCBwcmludHMgYSBiYW5uZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludGVnVGVzdChcbiAgbmFtZTogc3RyaW5nLFxuICBjYWxsYmFjazogKGNvbnRleHQ6IFRlc3RDb250ZXh0KSA9PiBQcm9taXNlPHZvaWQ+LFxuICB0aW1lb3V0TWlsbGlzPzogbnVtYmVyLFxuKTogdm9pZCB7XG4gIGNvbnN0IHJ1bm5lciA9IHNob3VsZFNraXAobmFtZSkgPyB0ZXN0LnNraXAgOiB0ZXN0O1xuXG4gIHJ1bm5lcihuYW1lLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0ID0gbmV3IE1lbW9yeVN0cmVhbSgpO1xuXG4gICAgb3V0cHV0LndyaXRlKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuJyk7XG4gICAgb3V0cHV0LndyaXRlKGAke25hbWV9XFxuYCk7XG4gICAgb3V0cHV0LndyaXRlKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuJyk7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBbSU5URUcgVEVTVDo6JHtuYW1lfV0gU3RhcnRpbmcgKHBpZCAke3Byb2Nlc3MucGlkfSkuLi5cXG5gKTtcbiAgICB0cnkge1xuICAgICAgaWYgKEZBSUxfRkFTVCAmJiBmYWlsZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGQUlMX0ZBU1QgcmVxdWVzdGVkIGFuZCBjdXJyZW50bHkgZmFpbGluZy4gU3RvcHBpbmcgdGVzdCBlYXJseS4nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGF3YWl0IGNhbGxiYWNrKHtcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICByYW5kb21TdHJpbmc6IHJhbmRvbVN0cmluZygpLFxuICAgICAgICBuYW1lLFxuICAgICAgICBsb2coczogc3RyaW5nKSB7XG4gICAgICAgICAgb3V0cHV0LndyaXRlKGAke3N9XFxuYCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGZhaWxlZCA9IHRydWU7XG5cbiAgICAgIC8vIFByaW50IHRoZSBidWZmZXJlZCBvdXRwdXQsIG9ubHkgaWYgdGhlIHRlc3QgZmFpbHMuXG4gICAgICBvdXRwdXQud3JpdGUoZS5tZXNzYWdlKTtcbiAgICAgIG91dHB1dC53cml0ZShlLnN0YWNrKTtcbiAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBbSU5URUcgVEVTVDo6JHtuYW1lfV0gRmFpbGVkOiAke2V9XFxuYCk7XG5cbiAgICAgIGNvbnN0IGlzR2l0SHViID0gISFwcm9jZXNzLmVudi5HSVRIVUJfUlVOX0lEO1xuXG4gICAgICBpZiAoaXNHaXRIdWIpIHtcbiAgICAgICAgLy8gR2l0SHViIEFjdGlvbnMgY29tcGF0aWJsZSBvdXRwdXQgZm9ybWF0dGluZ1xuICAgICAgICAvLyBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3dyaXRpbmctd29ya2Zsb3dzL2Nob29zaW5nLXdoYXQteW91ci13b3JrZmxvdy1kb2VzL3dvcmtmbG93LWNvbW1hbmRzLWZvci1naXRodWItYWN0aW9ucyNzZXR0aW5nLWFuLWVycm9yLW1lc3NhZ2VcbiAgICAgICAgbGV0IHdyaXR0ZW4gPSBwcm9jZXNzLnN0ZGVyci53cml0ZShgOjplcnJvciB0aXRsZT1GYWlsZWQgJHtuYW1lfTo6JHtlLm1lc3NhZ2V9XFxuYCk7XG4gICAgICAgIGlmICghd3JpdHRlbikge1xuICAgICAgICAgIC8vIFdhaXQgZm9yIGRyYWluXG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKG9rKSA9PiBwcm9jZXNzLnN0ZGVyci5vbmNlKCdkcmFpbicsIG9rKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmludCBvdXRwdXQgb25seSBpZiB0aGUgdGVzdCBmYWlscy4gVXNlICdjb25zb2xlLmxvZycgc28gdGhlIG91dHB1dCBpcyBidWZmZXJlZCBieVxuICAgICAgICAvLyBqZXN0IGFuZCBwcmludHMgd2l0aG91dCBhIHN0YWNrIHRyYWNlIChpZiB2ZXJib3NlOiBmYWxzZSkuXG4gICAgICAgIHdyaXR0ZW4gPSBwcm9jZXNzLnN0ZG91dC53cml0ZShbXG4gICAgICAgICAgYDo6Z3JvdXA6OkZhaWx1cmUgZGV0YWlsczogJHtuYW1lfSAoY2xpY2sgdG8gZXhwYW5kKVxcbmAsXG4gICAgICAgICAgYCR7b3V0cHV0LmJ1ZmZlcigpLnRvU3RyaW5nKCl9XFxuYCxcbiAgICAgICAgICAnOjplbmRncm91cDo6XFxuJyxcbiAgICAgICAgXS5qb2luKCcnKSk7XG4gICAgICAgIGlmICghd3JpdHRlbikge1xuICAgICAgICAgIC8vIFdhaXQgZm9yIGRyYWluXG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKG9rKSA9PiBwcm9jZXNzLnN0ZG91dC5vbmNlKCdkcmFpbicsIG9rKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFVzZSAnY29uc29sZS5sb2cnIHNvIHRoZSBvdXRwdXQgaXMgYnVmZmVyZWQgYnlcbiAgICAgICAgLy8gamVzdCBhbmQgcHJpbnRzIHdpdGhvdXQgYSBzdGFjayB0cmFjZSAoaWYgdmVyYm9zZTogZmFsc2UpLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmxvZyhvdXRwdXQuYnVmZmVyKCkudG9TdHJpbmcoKSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBub3c7XG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgW0lOVEVHIFRFU1Q6OiR7bmFtZX1dIERvbmUgKCR7ZHVyYXRpb259IG1zKS5cXG5gKTtcbiAgICB9XG4gIH0sIHRpbWVvdXRNaWxsaXMpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRTa2lwKHRlc3ROYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIFNLSVBfVEVTVFMuaW5jbHVkZXModGVzdE5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tU3RyaW5nKCkge1xuICAvLyBDcmF6eVxuICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikucmVwbGFjZSgvW15hLXowLTldKy9nLCAnJyk7XG59XG4iXX0=
package/lib/integ-test.ts CHANGED
@@ -7,7 +7,7 @@ const SKIP_TESTS = fs.readFileSync(path.join(__dirname, '..', 'skip-tests.txt'),
7
7
  .map(x => x.trim())
8
8
  .filter(x => x && !x.startsWith('#'));
9
9
 
10
- if (SKIP_TESTS) {
10
+ if (SKIP_TESTS.length > 0) {
11
11
  process.stderr.write(`ℹ️ Skipping tests: ${JSON.stringify(SKIP_TESTS)}\n`);
12
12
  }
13
13
 
@@ -24,10 +24,6 @@ export interface TestContext {
24
24
  log(s: string): void;
25
25
  }
26
26
 
27
- if (process.env.JEST_TEST_CONCURRENT === 'true') {
28
- process.stderr.write('ℹ️ JEST_TEST_CONCURRENT is true: tests will run concurrently and filters have no effect!\n0');
29
- }
30
-
31
27
  /**
32
28
  * A wrapper for jest's 'test' which takes regression-disabled tests into account and prints a banner
33
29
  */
@@ -36,14 +32,7 @@ export function integTest(
36
32
  callback: (context: TestContext) => Promise<void>,
37
33
  timeoutMillis?: number,
38
34
  ): void {
39
- // Integ tests can run concurrently, and are responsible for blocking
40
- // themselves if they cannot. Because `test.concurrent` executes the test
41
- // code immediately, regardles of any `--testNamePattern`, this cannot be the
42
- // default: test filtering simply does not work with `test.concurrent`.
43
- // Instead, we make it opt-in only for the pipeline where we don't do any
44
- // selection, but execute all tests unconditionally.
45
- const testKind = process.env.JEST_TEST_CONCURRENT === 'true' ? test.concurrent : test;
46
- const runner = shouldSkip(name) ? testKind.skip : testKind;
35
+ const runner = shouldSkip(name) ? test.skip : test;
47
36
 
48
37
  runner(name, async () => {
49
38
  const output = new MemoryStream();
@@ -0,0 +1,45 @@
1
+ import * as child from 'child_process';
2
+ import * as pty from 'node-pty';
3
+ /**
4
+ * IProcess provides an interface to work with a subprocess.
5
+ */
6
+ export interface IProcess {
7
+ /**
8
+ * Register a callback to be invoked when a chunk is written to stdout.
9
+ */
10
+ onStdout(callback: (chunk: Buffer) => void): void;
11
+ /**
12
+ * Register a callback to be invoked when a chunk is written to stderr.
13
+ */
14
+ onStderr(callback: (chunk: Buffer) => void): void;
15
+ /**
16
+ * Register a callback to be invoked when the process exists.
17
+ */
18
+ onExit(callback: (exitCode: number) => void): void;
19
+ /**
20
+ * Register a callback to be invoked if the process failed to start.
21
+ */
22
+ onError(callback: (error: Error) => void): void;
23
+ /**
24
+ * Write the process stdin stream.
25
+ */
26
+ writeStdin(data: string): void;
27
+ /**
28
+ * Singal that no more data will be written to stdin. In non tty process you must
29
+ * call this method to make sure the process exits.
30
+ *
31
+ * @param delay - optional delay in milliseconds before the signal is sent.
32
+ *
33
+ */
34
+ endStdin(delay?: number): void;
35
+ }
36
+ export declare class Process {
37
+ /**
38
+ * Spawn a process with a TTY attached.
39
+ */
40
+ static spawnTTY(command: string, args: string[], options?: pty.IPtyForkOptions | pty.IWindowsPtyForkOptions): IProcess;
41
+ /**
42
+ * Spawn a process without a forcing a TTY.
43
+ */
44
+ static spawn(command: string, args: string[], options?: child.SpawnOptions): IProcess;
45
+ }
package/lib/process.js ADDED
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Process = void 0;
4
+ const child = require("child_process");
5
+ const pty = require("node-pty");
6
+ ;
7
+ class Process {
8
+ /**
9
+ * Spawn a process with a TTY attached.
10
+ */
11
+ static spawnTTY(command, args, options = {}) {
12
+ const process = pty.spawn(command, args, {
13
+ name: 'xterm-color',
14
+ ...options,
15
+ });
16
+ return new PtyProcess(process);
17
+ }
18
+ /**
19
+ * Spawn a process without a forcing a TTY.
20
+ */
21
+ static spawn(command, args, options = {}) {
22
+ const process = child.spawn(command, args, {
23
+ shell: true,
24
+ stdio: ['ignore', 'pipe', 'pipe'],
25
+ ...options,
26
+ });
27
+ return new NonPtyProcess(process);
28
+ }
29
+ }
30
+ exports.Process = Process;
31
+ class PtyProcess {
32
+ constructor(process) {
33
+ this.process = process;
34
+ }
35
+ endStdin(_) {
36
+ // not needed because all streams are the same in tty.
37
+ }
38
+ onError(_) {
39
+ // not needed because the pty.spawn will simply fail in this case.
40
+ }
41
+ onStdout(callback) {
42
+ this.process.onData((e) => callback(Buffer.from(e)));
43
+ }
44
+ onStderr(callback) {
45
+ // in a pty all streams are the same
46
+ return this.onStdout(callback);
47
+ }
48
+ onExit(callback) {
49
+ this.process.onExit((e) => { callback(e.exitCode); });
50
+ }
51
+ writeStdin(data) {
52
+ // in a pty all streams are the same
53
+ this.process.write(data);
54
+ }
55
+ }
56
+ ;
57
+ class NonPtyProcess {
58
+ constructor(process) {
59
+ this.process = process;
60
+ }
61
+ onError(callback) {
62
+ this.process.once('error', callback);
63
+ }
64
+ onStdout(callback) {
65
+ this.assertDefined('stdout', this.process.stdout);
66
+ this.process.stdout.on('data', callback);
67
+ }
68
+ onStderr(callback) {
69
+ this.assertDefined('stderr', this.process.stderr);
70
+ this.process.stderr.on('data', callback);
71
+ }
72
+ onExit(callback) {
73
+ this.process.on('close', callback);
74
+ }
75
+ writeStdin(content) {
76
+ this.assertDefined('stdin', this.process.stdin);
77
+ this.process.stdin.write(content);
78
+ }
79
+ endStdin(delay) {
80
+ if (this.process.stdin == null) {
81
+ throw new Error('No stdin defined for process');
82
+ }
83
+ if (delay) {
84
+ setTimeout(() => this.process.stdin.end(), delay);
85
+ }
86
+ else {
87
+ this.process.stdin.end();
88
+ }
89
+ }
90
+ assertDefined(name, stream) {
91
+ if (stream == null) {
92
+ throw new Error(`No ${name} defined for child process`);
93
+ }
94
+ }
95
+ }
96
+ ;
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByb2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBQXVDO0FBRXZDLGdDQUFnQztBQXlDL0IsQ0FBQztBQUVGLE1BQWEsT0FBTztJQUVsQjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBZSxFQUFFLElBQWMsRUFBRSxVQUE0RCxFQUFFO1FBRXBILE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtZQUN2QyxJQUFJLEVBQUUsYUFBYTtZQUNuQixHQUFHLE9BQU87U0FDWCxDQUFDLENBQUE7UUFDRixPQUFPLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRWpDLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBZSxFQUFFLElBQWMsRUFBRSxVQUE4QixFQUFFO1FBRW5GLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtZQUN6QyxLQUFLLEVBQUUsSUFBSTtZQUNYLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO1lBQ2pDLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFcEMsQ0FBQztDQUVGO0FBN0JELDBCQTZCQztBQUVELE1BQU0sVUFBVTtJQUVkLFlBQW9DLE9BQWlCO1FBQWpCLFlBQU8sR0FBUCxPQUFPLENBQVU7SUFBRyxDQUFDO0lBRWxELFFBQVEsQ0FBQyxDQUFVO1FBQ3hCLHNEQUFzRDtJQUN4RCxDQUFDO0lBRU0sT0FBTyxDQUFDLENBQXlCO1FBQ3RDLGtFQUFrRTtJQUNwRSxDQUFDO0lBRU0sUUFBUSxDQUFDLFFBQWlDO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLFFBQVEsQ0FBQyxRQUFpQztRQUMvQyxvQ0FBb0M7UUFDcEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBb0M7UUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBR00sVUFBVSxDQUFDLElBQVk7UUFDNUIsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzFCLENBQUM7Q0FFRjtBQUFBLENBQUM7QUFFRixNQUFNLGFBQWE7SUFFakIsWUFBb0MsT0FBMkI7UUFBM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7SUFBRyxDQUFDO0lBRTVELE9BQU8sQ0FBQyxRQUFnQztRQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxRQUFpQztRQUMvQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLFFBQVEsQ0FBQyxRQUFpQztRQUMvQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLE1BQU0sQ0FBQyxRQUFvQztRQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUFlO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxRQUFRLENBQUMsS0FBYztRQUM1QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQW1DLEVBQUUsTUFBK0M7UUFDdkcsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksNEJBQTRCLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQztDQUVGO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoaWxkIGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgUmVhZGFibGUsIFdyaXRhYmxlIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCAqIGFzIHB0eSBmcm9tICdub2RlLXB0eSc7XG5cbi8qKlxuICogSVByb2Nlc3MgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIHdvcmsgd2l0aCBhIHN1YnByb2Nlc3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVByb2Nlc3Mge1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgd2hlbiBhIGNodW5rIGlzIHdyaXR0ZW4gdG8gc3Rkb3V0LlxuICAgKi9cbiAgb25TdGRvdXQoY2FsbGJhY2s6IChjaHVuazogQnVmZmVyKSA9PiB2b2lkKTogdm9pZDtcblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBjYWxsYmFjayB0byBiZSBpbnZva2VkIHdoZW4gYSBjaHVuayBpcyB3cml0dGVuIHRvIHN0ZGVyci5cbiAgICovXG4gIG9uU3RkZXJyKGNhbGxiYWNrOiAoY2h1bms6IEJ1ZmZlcikgPT4gdm9pZCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCB3aGVuIHRoZSBwcm9jZXNzIGV4aXN0cy5cbiAgICovXG4gIG9uRXhpdChjYWxsYmFjazogKGV4aXRDb2RlOiBudW1iZXIpID0+IHZvaWQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgaWYgdGhlIHByb2Nlc3MgZmFpbGVkIHRvIHN0YXJ0LlxuICAgKi9cbiAgb25FcnJvcihjYWxsYmFjazogKGVycm9yOiBFcnJvcikgPT4gdm9pZCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRoZSBwcm9jZXNzIHN0ZGluIHN0cmVhbS5cbiAgICovXG4gIHdyaXRlU3RkaW4oZGF0YTogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogU2luZ2FsIHRoYXQgbm8gbW9yZSBkYXRhIHdpbGwgYmUgd3JpdHRlbiB0byBzdGRpbi4gSW4gbm9uIHR0eSBwcm9jZXNzIHlvdSBtdXN0XG4gICAqIGNhbGwgdGhpcyBtZXRob2QgdG8gbWFrZSBzdXJlIHRoZSBwcm9jZXNzIGV4aXRzLlxuICAgKlxuICAgKiBAcGFyYW0gZGVsYXkgLSBvcHRpb25hbCBkZWxheSBpbiBtaWxsaXNlY29uZHMgYmVmb3JlIHRoZSBzaWduYWwgaXMgc2VudC5cbiAgICpcbiAgICovXG4gIGVuZFN0ZGluKGRlbGF5PzogbnVtYmVyKTogdm9pZDtcblxufTtcblxuZXhwb3J0IGNsYXNzIFByb2Nlc3Mge1xuXG4gIC8qKlxuICAgKiBTcGF3biBhIHByb2Nlc3Mgd2l0aCBhIFRUWSBhdHRhY2hlZC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3Bhd25UVFkoY29tbWFuZDogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogcHR5LklQdHlGb3JrT3B0aW9ucyB8IHB0eS5JV2luZG93c1B0eUZvcmtPcHRpb25zID0ge30pOiBJUHJvY2VzcyB7XG5cbiAgICBjb25zdCBwcm9jZXNzID0gcHR5LnNwYXduKGNvbW1hbmQsIGFyZ3MsIHtcbiAgICAgIG5hbWU6ICd4dGVybS1jb2xvcicsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pXG4gICAgcmV0dXJuIG5ldyBQdHlQcm9jZXNzKHByb2Nlc3MpO1xuXG4gIH1cblxuICAvKipcbiAgICogU3Bhd24gYSBwcm9jZXNzIHdpdGhvdXQgYSBmb3JjaW5nIGEgVFRZLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzcGF3bihjb21tYW5kOiBzdHJpbmcsIGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBjaGlsZC5TcGF3bk9wdGlvbnMgPSB7fSk6IElQcm9jZXNzIHtcblxuICAgIGNvbnN0IHByb2Nlc3MgPSBjaGlsZC5zcGF3bihjb21tYW5kLCBhcmdzLCB7XG4gICAgICBzaGVsbDogdHJ1ZSxcbiAgICAgIHN0ZGlvOiBbJ2lnbm9yZScsICdwaXBlJywgJ3BpcGUnXSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBOb25QdHlQcm9jZXNzKHByb2Nlc3MpO1xuXG4gIH1cblxufVxuXG5jbGFzcyBQdHlQcm9jZXNzIGltcGxlbWVudHMgSVByb2Nlc3Mge1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb2Nlc3M6IHB0eS5JUHR5KSB7fVxuXG4gIHB1YmxpYyBlbmRTdGRpbihfPzogbnVtYmVyKTogdm9pZCB7XG4gICAgLy8gbm90IG5lZWRlZCBiZWNhdXNlIGFsbCBzdHJlYW1zIGFyZSB0aGUgc2FtZSBpbiB0dHkuXG4gIH1cblxuICBwdWJsaWMgb25FcnJvcihfOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgLy8gbm90IG5lZWRlZCBiZWNhdXNlIHRoZSBwdHkuc3Bhd24gd2lsbCBzaW1wbHkgZmFpbCBpbiB0aGlzIGNhc2UuXG4gIH1cblxuICBwdWJsaWMgb25TdGRvdXQoY2FsbGJhY2s6IChjaHVuazogQnVmZmVyKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5wcm9jZXNzLm9uRGF0YSgoZSkgPT4gY2FsbGJhY2soQnVmZmVyLmZyb20oZSkpKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZGVycihjYWxsYmFjazogKGNodW5rOiBCdWZmZXIpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAvLyBpbiBhIHB0eSBhbGwgc3RyZWFtcyBhcmUgdGhlIHNhbWVcbiAgICByZXR1cm4gdGhpcy5vblN0ZG91dChjYWxsYmFjayk7XG4gIH1cblxuICBwdWJsaWMgb25FeGl0KGNhbGxiYWNrOiAoZXhpdENvZGU6IG51bWJlcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMucHJvY2Vzcy5vbkV4aXQoKGUpID0+IHsgY2FsbGJhY2soZS5leGl0Q29kZSkgfSk7XG4gIH1cblxuXG4gIHB1YmxpYyB3cml0ZVN0ZGluKGRhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIGluIGEgcHR5IGFsbCBzdHJlYW1zIGFyZSB0aGUgc2FtZVxuICAgIHRoaXMucHJvY2Vzcy53cml0ZShkYXRhKVxuICB9XG5cbn07XG5cbmNsYXNzIE5vblB0eVByb2Nlc3MgaW1wbGVtZW50cyBJUHJvY2VzcyB7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvY2VzczogY2hpbGQuQ2hpbGRQcm9jZXNzKSB7fVxuXG4gIHB1YmxpYyBvbkVycm9yKGNhbGxiYWNrOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5wcm9jZXNzLm9uY2UoJ2Vycm9yJywgY2FsbGJhY2spO1xuICB9XG5cbiAgcHVibGljIG9uU3Rkb3V0KGNhbGxiYWNrOiAoY2h1bms6IEJ1ZmZlcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuYXNzZXJ0RGVmaW5lZCgnc3Rkb3V0JywgdGhpcy5wcm9jZXNzLnN0ZG91dCk7XG4gICAgdGhpcy5wcm9jZXNzLnN0ZG91dC5vbignZGF0YScsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZGVycihjYWxsYmFjazogKGNodW5rOiBCdWZmZXIpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLmFzc2VydERlZmluZWQoJ3N0ZGVycicsIHRoaXMucHJvY2Vzcy5zdGRlcnIpO1xuICAgIHRoaXMucHJvY2Vzcy5zdGRlcnIub24oJ2RhdGEnLCBjYWxsYmFjayk7XG4gIH1cblxuICBwdWJsaWMgb25FeGl0KGNhbGxiYWNrOiAoZXhpdENvZGU6IG51bWJlcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMucHJvY2Vzcy5vbignY2xvc2UnLCBjYWxsYmFjayk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVTdGRpbihjb250ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFzc2VydERlZmluZWQoJ3N0ZGluJywgdGhpcy5wcm9jZXNzLnN0ZGluKTtcbiAgICB0aGlzLnByb2Nlc3Muc3RkaW4ud3JpdGUoY29udGVudCk7XG4gIH1cblxuICBwdWJsaWMgZW5kU3RkaW4oZGVsYXk/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9jZXNzLnN0ZGluID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gc3RkaW4gZGVmaW5lZCBmb3IgcHJvY2VzcycpO1xuICAgIH1cbiAgICBpZiAoZGVsYXkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wcm9jZXNzLnN0ZGluIS5lbmQoKSwgZGVsYXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb2Nlc3Muc3RkaW4hLmVuZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3NlcnREZWZpbmVkKG5hbWU6ICdzdGRpbicgfCAnc3Rkb3V0JyB8ICdzdGRlcnInLCBzdHJlYW0/OiBSZWFkYWJsZSB8IFdyaXRhYmxlIHwgdW5kZWZpbmVkIHwgbnVsbCk6IGFzc2VydHMgc3RyZWFtIHtcbiAgICBpZiAoc3RyZWFtID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gJHtuYW1lfSBkZWZpbmVkIGZvciBjaGlsZCBwcm9jZXNzYCk7XG4gICAgfVxuICB9XG5cbn07Il19
package/lib/process.ts ADDED
@@ -0,0 +1,154 @@
1
+ import * as child from 'child_process';
2
+ import { Readable, Writable } from 'stream';
3
+ import * as pty from 'node-pty';
4
+
5
+ /**
6
+ * IProcess provides an interface to work with a subprocess.
7
+ */
8
+ export interface IProcess {
9
+
10
+ /**
11
+ * Register a callback to be invoked when a chunk is written to stdout.
12
+ */
13
+ onStdout(callback: (chunk: Buffer) => void): void;
14
+
15
+ /**
16
+ * Register a callback to be invoked when a chunk is written to stderr.
17
+ */
18
+ onStderr(callback: (chunk: Buffer) => void): void;
19
+
20
+ /**
21
+ * Register a callback to be invoked when the process exists.
22
+ */
23
+ onExit(callback: (exitCode: number) => void): void;
24
+
25
+ /**
26
+ * Register a callback to be invoked if the process failed to start.
27
+ */
28
+ onError(callback: (error: Error) => void): void;
29
+
30
+ /**
31
+ * Write the process stdin stream.
32
+ */
33
+ writeStdin(data: string): void;
34
+
35
+ /**
36
+ * Singal that no more data will be written to stdin. In non tty process you must
37
+ * call this method to make sure the process exits.
38
+ *
39
+ * @param delay - optional delay in milliseconds before the signal is sent.
40
+ *
41
+ */
42
+ endStdin(delay?: number): void;
43
+
44
+ };
45
+
46
+ export class Process {
47
+
48
+ /**
49
+ * Spawn a process with a TTY attached.
50
+ */
51
+ public static spawnTTY(command: string, args: string[], options: pty.IPtyForkOptions | pty.IWindowsPtyForkOptions = {}): IProcess {
52
+
53
+ const process = pty.spawn(command, args, {
54
+ name: 'xterm-color',
55
+ ...options,
56
+ })
57
+ return new PtyProcess(process);
58
+
59
+ }
60
+
61
+ /**
62
+ * Spawn a process without a forcing a TTY.
63
+ */
64
+ public static spawn(command: string, args: string[], options: child.SpawnOptions = {}): IProcess {
65
+
66
+ const process = child.spawn(command, args, {
67
+ shell: true,
68
+ stdio: ['ignore', 'pipe', 'pipe'],
69
+ ...options,
70
+ });
71
+ return new NonPtyProcess(process);
72
+
73
+ }
74
+
75
+ }
76
+
77
+ class PtyProcess implements IProcess {
78
+
79
+ public constructor(private readonly process: pty.IPty) {}
80
+
81
+ public endStdin(_?: number): void {
82
+ // not needed because all streams are the same in tty.
83
+ }
84
+
85
+ public onError(_: (error: Error) => void): void {
86
+ // not needed because the pty.spawn will simply fail in this case.
87
+ }
88
+
89
+ public onStdout(callback: (chunk: Buffer) => void): void {
90
+ this.process.onData((e) => callback(Buffer.from(e)));
91
+ }
92
+
93
+ public onStderr(callback: (chunk: Buffer) => void): void {
94
+ // in a pty all streams are the same
95
+ return this.onStdout(callback);
96
+ }
97
+
98
+ public onExit(callback: (exitCode: number) => void): void {
99
+ this.process.onExit((e) => { callback(e.exitCode) });
100
+ }
101
+
102
+
103
+ public writeStdin(data: string): void {
104
+ // in a pty all streams are the same
105
+ this.process.write(data)
106
+ }
107
+
108
+ };
109
+
110
+ class NonPtyProcess implements IProcess {
111
+
112
+ public constructor(private readonly process: child.ChildProcess) {}
113
+
114
+ public onError(callback: (error: Error) => void): void {
115
+ this.process.once('error', callback);
116
+ }
117
+
118
+ public onStdout(callback: (chunk: Buffer) => void): void {
119
+ this.assertDefined('stdout', this.process.stdout);
120
+ this.process.stdout.on('data', callback);
121
+ }
122
+
123
+ public onStderr(callback: (chunk: Buffer) => void): void {
124
+ this.assertDefined('stderr', this.process.stderr);
125
+ this.process.stderr.on('data', callback);
126
+ }
127
+
128
+ public onExit(callback: (exitCode: number) => void): void {
129
+ this.process.on('close', callback);
130
+ }
131
+
132
+ public writeStdin(content: string): void {
133
+ this.assertDefined('stdin', this.process.stdin);
134
+ this.process.stdin.write(content);
135
+ }
136
+
137
+ public endStdin(delay?: number): void {
138
+ if (this.process.stdin == null) {
139
+ throw new Error('No stdin defined for process');
140
+ }
141
+ if (delay) {
142
+ setTimeout(() => this.process.stdin!.end(), delay);
143
+ } else {
144
+ this.process.stdin!.end();
145
+ }
146
+ }
147
+
148
+ public assertDefined(name: 'stdin' | 'stdout' | 'stderr', stream?: Readable | Writable | undefined | null): asserts stream {
149
+ if (stream == null) {
150
+ throw new Error(`No ${name} defined for child process`);
151
+ }
152
+ }
153
+
154
+ };
package/lib/shell.d.ts CHANGED
@@ -7,6 +7,51 @@ import { TemporaryDirectoryContext } from './with-temporary-directory';
7
7
  * Is platform-aware, handles errors nicely.
8
8
  */
9
9
  export declare function shell(command: string[], options?: ShellOptions): Promise<string>;
10
+ /**
11
+ * Models a single user interaction with the shell.
12
+ */
13
+ export interface UserInteraction {
14
+ /**
15
+ * The prompt to expect. Regex matched against the last line in
16
+ * the output before the prompt is displayed.
17
+ *
18
+ * Most commonly this would be a simple string to match for inclusion.
19
+ *
20
+ * Examples:
21
+ *
22
+ * - Process Output: "Hey there! Are you sure?"
23
+ * Prompt: /Are you sure?/
24
+ * Match (Yes/No): Yes
25
+ * Reason: "Hey there! Are you sure?" ~ /Are you sure?/
26
+ *
27
+ * - Process Output: "Hey there!\nAre you sure?"
28
+ * Prompt: /Are you sure?/
29
+ * Match (Yes/No): Yes
30
+ * Reason: "Are you sure?" ~ /Are you sure?/
31
+ *
32
+ * - Process Output: "Are you sure?\n(remember this is destructive)"
33
+ * Prompt: /Are you sure?/
34
+ * Match (Yes/No): No
35
+ * Reason: "(remember this is destructive)" ≄ /Are you sure?/
36
+ *
37
+ * - Process Output: "Are you sure?\n(remember this is destructive)"
38
+ * Prompt: /remember this is destructive/
39
+ * Match (Yes/No): Yes
40
+ * Reason: "(remember this is destructive)" ~ /remember this is destructive/
41
+ *
42
+ */
43
+ readonly prompt: RegExp;
44
+ /**
45
+ * The input to provide.
46
+ */
47
+ readonly input: string;
48
+ /**
49
+ * The string to signal the end of input.
50
+ *
51
+ * @default os.EOL
52
+ */
53
+ readonly end?: string;
54
+ }
10
55
  export interface ShellOptions extends child_process.SpawnOptions {
11
56
  /**
12
57
  * Properties to add to 'env'
@@ -41,6 +86,12 @@ export interface ShellOptions extends child_process.SpawnOptions {
41
86
  * @default always
42
87
  */
43
88
  readonly show?: 'always' | 'never' | 'error';
89
+ /**
90
+ * Provide user interaction to respond to shell prompts.
91
+ *
92
+ * Order and count should correspond to the expected prompts issued by the subprocess.
93
+ */
94
+ readonly interact?: UserInteraction[];
44
95
  }
45
96
  export declare class ShellHelper {
46
97
  private readonly _cwd;