@aws-cdk-testing/cli-integ 3.22.3 → 3.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/lib/cli/run-suite.js +7 -1
  2. package/lib/cli/stage-distribution.js +6 -6
  3. package/npm-shrinkwrap.json +1668 -3333
  4. package/package.json +24 -24
  5. package/resources/cdk-apps/app/app.js +23 -0
  6. package/resources/cdk-apps/app/docker-concurrent/image1/Dockerfile +2 -0
  7. package/resources/cdk-apps/app/docker-concurrent/image2/Dockerfile +2 -0
  8. package/resources/cdk-apps/app/docker-concurrent/image3/Dockerfile +2 -0
  9. package/tests/cli-integ-tests/deploy/cdk-automatic-rollback-if-paused-and---no-rollback-is-removed-from-flags.integtest.js +17 -22
  10. package/tests/cli-integ-tests/deploy/cdk-automatic-rollback-if-paused-and-change-contains-a-replacement.integtest.js +17 -22
  11. package/tests/cli-integ-tests/deploy/cdk-automatic-rollback-if-replacement-and---no-rollback-is-removed-from-flags.integtest.js +8 -13
  12. package/tests/cli-integ-tests/deploy/cdk-construct-with-builtin-lambda-function.integtest.js +1 -2
  13. package/tests/cli-integ-tests/deploy/cdk-deploy-stack-with-multiple-docker-assets.integtest.js +10 -0
  14. package/tests/cli-integ-tests/deploy/cdk-stage-with-bundled-lambda-function.integtest.js +1 -2
  15. package/tests/cli-integ-tests/deploy/cdk-termination-protection.integtest.js +2 -2
  16. package/tests/cli-integ-tests/hotswap/cdk-hotswap-deployment-supports-ecs-service.integtest.js +5 -4
  17. package/tests/cli-integ-tests/hotswap/cdk-hotswap-ecs-deployment-respects-properties-override.integtest.js +5 -4
  18. package/tests/cli-integ-tests/import/cdk-test-resource-import-with-construct-that-requires-bundling.integtest.js +31 -37
  19. package/tests/cli-integ-tests/import/cdk-test-resource-import.integtest.js +26 -32
  20. package/tests/cli-integ-tests/lookup/cdk-vpc-lookup.integtest.js +1 -3
  21. package/tests/cli-integ-tests/migrate/cdk-migrate-generates-migrate.json.integtest.js +1 -2
  22. package/tests/cli-integ-tests/migrate/cdk-test-migrate-deployment-for-app-with-localfile-source-in-migrate.json.integtest.js +3 -9
  23. package/tests/cli-integ-tests/migrate/testcase.js +21 -27
  24. package/tests/cli-integ-tests/refactor/cdk-refactor-dry-run-detect-changes.integtest.js +28 -0
  25. package/tests/cli-integ-tests/refactor/cdk-refactor-dry-run-filter-by-patterns.integtest.js +30 -0
  26. package/tests/cli-integ-tests/refactor/cdk-refactor-dry-run-no-changes.integtest.d.ts +1 -0
  27. package/tests/cli-integ-tests/refactor/cdk-refactor-dry-run-no-changes.integtest.js +19 -0
  28. package/tests/cli-integ-tests/rollback/cdk-test-cdk-rollback---force.integtest.js +22 -27
  29. package/tests/cli-integ-tests/rollback/cdk-test-cdk-rollback.integtest.js +15 -20
  30. package/tests/cli-integ-tests/watch/cdk-watch-detects-file-changes-with-glob-patterns-negative.integtest.d.ts +1 -0
  31. package/tests/cli-integ-tests/watch/cdk-watch-detects-file-changes-with-glob-patterns-negative.integtest.js +72 -0
  32. package/tests/cli-integ-tests/watch/cdk-watch-detects-file-changes-with-glob-patterns.integtest.d.ts +1 -0
  33. package/tests/cli-integ-tests/watch/cdk-watch-detects-file-changes-with-glob-patterns.integtest.js +59 -0
  34. package/tests/cli-integ-tests/watch/watch-helpers.d.ts +11 -0
  35. package/tests/cli-integ-tests/watch/watch-helpers.js +33 -0
  36. package/tests/telemetry-integ-tests/cli-telemetry/cdk-cli-telemetry-adds-context-value.integtest.d.ts +1 -0
  37. package/tests/telemetry-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.d.ts +1 -0
  38. package/tests/toolkit-lib-integ-tests/toolkit-deploy-stack-with-multiple-docker-assets.integtest.d.ts +1 -0
  39. package/tests/toolkit-lib-integ-tests/toolkit-deploy-stack-with-multiple-docker-assets.integtest.js +22 -0
  40. package/tests/toolkit-lib-integ-tests/toolkit-watch-glob-negative.integtest.d.ts +1 -0
  41. package/tests/toolkit-lib-integ-tests/toolkit-watch-glob-negative.integtest.js +52 -0
  42. package/tests/toolkit-lib-integ-tests/toolkit-watch-glob.integtest.d.ts +1 -0
  43. package/tests/toolkit-lib-integ-tests/toolkit-watch-glob.integtest.js +68 -0
  44. package/tests/cli-integ-tests/refactor/cdk-refactor-dry-run.integtest.js +0 -69
  45. /package/tests/cli-integ-tests/{cli-telemetry/cdk-cli-telemetry-adds-context-value.integtest.d.ts → deploy/cdk-deploy-stack-with-multiple-docker-assets.integtest.d.ts} +0 -0
  46. /package/tests/cli-integ-tests/{cli-telemetry/cdk-cli-telemetry-reports-status.integtest.d.ts → refactor/cdk-refactor-dry-run-detect-changes.integtest.d.ts} +0 -0
  47. /package/tests/cli-integ-tests/refactor/{cdk-refactor-dry-run.integtest.d.ts → cdk-refactor-dry-run-filter-by-patterns.integtest.d.ts} +0 -0
  48. /package/tests/{cli-integ-tests → telemetry-integ-tests}/cli-telemetry/cdk-cli-telemetry-adds-context-value.integtest.js +0 -0
  49. /package/tests/{cli-integ-tests → telemetry-integ-tests}/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.js +0 -0
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const child_process = require("child_process");
4
+ const fs = require("fs");
5
+ const path = require("path");
6
+ const watch_helpers_1 = require("./watch-helpers");
7
+ const lib_1 = require("../../../lib");
8
+ jest.setTimeout(3 * 60 * 1000); // 3 minutes for watch tests
9
+ (0, lib_1.integTest)('cdk watch detects file changes with glob patterns', (0, lib_1.withDefaultFixture)(async (fixture) => {
10
+ // Create a test file that will be watched
11
+ const testFile = path.join(fixture.integTestDir, 'watch-test-file.ts');
12
+ fs.writeFileSync(testFile, 'export const initial = true;');
13
+ // Update cdk.json to include watch configuration
14
+ const cdkJsonPath = path.join(fixture.integTestDir, 'cdk.json');
15
+ const cdkJson = JSON.parse(fs.readFileSync(cdkJsonPath, 'utf-8'));
16
+ cdkJson.watch = {
17
+ include: ['**/*.ts'],
18
+ };
19
+ fs.writeFileSync(cdkJsonPath, JSON.stringify(cdkJson, null, 2));
20
+ await fixture.cli.makeCliAvailable();
21
+ let output = '';
22
+ // Start cdk watch with detached process group for clean termination
23
+ const watchProcess = child_process.spawn('cdk', [
24
+ 'watch', '--hotswap', '-v', fixture.fullStackName('test-1'),
25
+ ], {
26
+ cwd: fixture.integTestDir,
27
+ shell: true,
28
+ detached: true,
29
+ env: { ...process.env, ...fixture.cdkShellEnv() },
30
+ });
31
+ try {
32
+ watchProcess.stdout?.on('data', (data) => {
33
+ output += data.toString();
34
+ fixture.log(data.toString());
35
+ });
36
+ watchProcess.stderr?.on('data', (data) => {
37
+ output += data.toString();
38
+ fixture.log(data.toString());
39
+ });
40
+ await (0, watch_helpers_1.waitForOutput)(() => output, "Triggering initial 'cdk deploy'");
41
+ fixture.log('✓ Watch start detected');
42
+ await (0, watch_helpers_1.waitForOutput)(() => output, 'deployment time');
43
+ fixture.log('✓ Initial deployment completed');
44
+ // Update the test file timestamp to trigger a watch event
45
+ child_process.spawn('touch', [testFile]);
46
+ await (0, watch_helpers_1.waitForOutput)(() => output, 'Detected change to');
47
+ fixture.log('✓ Watch detected file change');
48
+ // Wait for the second deployment to complete (2 occurrences of 'deployment time')
49
+ await (0, watch_helpers_1.waitForCondition)(() => (output.match(/deployment time/g) || []).length >= 2);
50
+ fixture.log('✓ Second deployment completed');
51
+ }
52
+ finally {
53
+ // Kill the entire process group (negative PID)
54
+ if (watchProcess.pid) {
55
+ process.kill(-watchProcess.pid, 'SIGTERM');
56
+ }
57
+ }
58
+ }));
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXdhdGNoLWRldGVjdHMtZmlsZS1jaGFuZ2VzLXdpdGgtZ2xvYi1wYXR0ZXJucy5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstd2F0Y2gtZGV0ZWN0cy1maWxlLWNoYW5nZXMtd2l0aC1nbG9iLXBhdHRlcm5zLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtDQUErQztBQUMvQyx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLG1EQUFrRTtBQUNsRSxzQ0FBNkQ7QUFFN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsNEJBQTRCO0FBRTVELElBQUEsZUFBUyxFQUNQLG1EQUFtRCxFQUNuRCxJQUFBLHdCQUFrQixFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNuQywwQ0FBMEM7SUFDMUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDdkUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsOEJBQThCLENBQUMsQ0FBQztJQUUzRCxpREFBaUQ7SUFDakQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNsRSxPQUFPLENBQUMsS0FBSyxHQUFHO1FBQ2QsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDO0tBQ3JCLENBQUM7SUFDRixFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVoRSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUVyQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFFaEIsb0VBQW9FO0lBQ3BFLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO0tBQzVELEVBQUU7UUFDRCxHQUFHLEVBQUUsT0FBTyxDQUFDLFlBQVk7UUFDekIsS0FBSyxFQUFFLElBQUk7UUFDWCxRQUFRLEVBQUUsSUFBSTtRQUNkLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRTtLQUNsRCxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUM7UUFDSCxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2QyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2QyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLElBQUEsNkJBQWEsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsaUNBQWlDLENBQUMsQ0FBQztRQUNyRSxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFdEMsTUFBTSxJQUFBLDZCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDckQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBRTlDLDBEQUEwRDtRQUMxRCxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFekMsTUFBTSxJQUFBLDZCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBRTVDLGtGQUFrRjtRQUNsRixNQUFNLElBQUEsZ0NBQWdCLEVBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ25GLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUMvQyxDQUFDO1lBQVMsQ0FBQztRQUNULCtDQUErQztRQUMvQyxJQUFJLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQyxDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjaGlsZF9wcm9jZXNzIGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHdhaXRGb3JPdXRwdXQsIHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICcuL3dhdGNoLWhlbHBlcnMnO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoRGVmYXVsdEZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5qZXN0LnNldFRpbWVvdXQoMyAqIDYwICogMTAwMCk7IC8vIDMgbWludXRlcyBmb3Igd2F0Y2ggdGVzdHNcblxuaW50ZWdUZXN0KFxuICAnY2RrIHdhdGNoIGRldGVjdHMgZmlsZSBjaGFuZ2VzIHdpdGggZ2xvYiBwYXR0ZXJucycsXG4gIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIC8vIENyZWF0ZSBhIHRlc3QgZmlsZSB0aGF0IHdpbGwgYmUgd2F0Y2hlZFxuICAgIGNvbnN0IHRlc3RGaWxlID0gcGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCAnd2F0Y2gtdGVzdC1maWxlLnRzJyk7XG4gICAgZnMud3JpdGVGaWxlU3luYyh0ZXN0RmlsZSwgJ2V4cG9ydCBjb25zdCBpbml0aWFsID0gdHJ1ZTsnKTtcblxuICAgIC8vIFVwZGF0ZSBjZGsuanNvbiB0byBpbmNsdWRlIHdhdGNoIGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBjZGtKc29uUGF0aCA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ2Nkay5qc29uJyk7XG4gICAgY29uc3QgY2RrSnNvbiA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGNka0pzb25QYXRoLCAndXRmLTgnKSk7XG4gICAgY2RrSnNvbi53YXRjaCA9IHtcbiAgICAgIGluY2x1ZGU6IFsnKiovKi50cyddLFxuICAgIH07XG4gICAgZnMud3JpdGVGaWxlU3luYyhjZGtKc29uUGF0aCwgSlNPTi5zdHJpbmdpZnkoY2RrSnNvbiwgbnVsbCwgMikpO1xuXG4gICAgYXdhaXQgZml4dHVyZS5jbGkubWFrZUNsaUF2YWlsYWJsZSgpO1xuXG4gICAgbGV0IG91dHB1dCA9ICcnO1xuXG4gICAgLy8gU3RhcnQgY2RrIHdhdGNoIHdpdGggZGV0YWNoZWQgcHJvY2VzcyBncm91cCBmb3IgY2xlYW4gdGVybWluYXRpb25cbiAgICBjb25zdCB3YXRjaFByb2Nlc3MgPSBjaGlsZF9wcm9jZXNzLnNwYXduKCdjZGsnLCBbXG4gICAgICAnd2F0Y2gnLCAnLS1ob3Rzd2FwJywgJy12JywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTEnKSxcbiAgICBdLCB7XG4gICAgICBjd2Q6IGZpeHR1cmUuaW50ZWdUZXN0RGlyLFxuICAgICAgc2hlbGw6IHRydWUsXG4gICAgICBkZXRhY2hlZDogdHJ1ZSxcbiAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgLi4uZml4dHVyZS5jZGtTaGVsbEVudigpIH0sXG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgd2F0Y2hQcm9jZXNzLnN0ZG91dD8ub24oJ2RhdGEnLCAoZGF0YSkgPT4ge1xuICAgICAgICBvdXRwdXQgKz0gZGF0YS50b1N0cmluZygpO1xuICAgICAgICBmaXh0dXJlLmxvZyhkYXRhLnRvU3RyaW5nKCkpO1xuICAgICAgfSk7XG4gICAgICB3YXRjaFByb2Nlc3Muc3RkZXJyPy5vbignZGF0YScsIChkYXRhKSA9PiB7XG4gICAgICAgIG91dHB1dCArPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICAgIGZpeHR1cmUubG9nKGRhdGEudG9TdHJpbmcoKSk7XG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgd2FpdEZvck91dHB1dCgoKSA9PiBvdXRwdXQsIFwiVHJpZ2dlcmluZyBpbml0aWFsICdjZGsgZGVwbG95J1wiKTtcbiAgICAgIGZpeHR1cmUubG9nKCfinJMgV2F0Y2ggc3RhcnQgZGV0ZWN0ZWQnKTtcblxuICAgICAgYXdhaXQgd2FpdEZvck91dHB1dCgoKSA9PiBvdXRwdXQsICdkZXBsb3ltZW50IHRpbWUnKTtcbiAgICAgIGZpeHR1cmUubG9nKCfinJMgSW5pdGlhbCBkZXBsb3ltZW50IGNvbXBsZXRlZCcpO1xuXG4gICAgICAvLyBVcGRhdGUgdGhlIHRlc3QgZmlsZSB0aW1lc3RhbXAgdG8gdHJpZ2dlciBhIHdhdGNoIGV2ZW50XG4gICAgICBjaGlsZF9wcm9jZXNzLnNwYXduKCd0b3VjaCcsIFt0ZXN0RmlsZV0pO1xuXG4gICAgICBhd2FpdCB3YWl0Rm9yT3V0cHV0KCgpID0+IG91dHB1dCwgJ0RldGVjdGVkIGNoYW5nZSB0bycpO1xuICAgICAgZml4dHVyZS5sb2coJ+KckyBXYXRjaCBkZXRlY3RlZCBmaWxlIGNoYW5nZScpO1xuXG4gICAgICAvLyBXYWl0IGZvciB0aGUgc2Vjb25kIGRlcGxveW1lbnQgdG8gY29tcGxldGUgKDIgb2NjdXJyZW5jZXMgb2YgJ2RlcGxveW1lbnQgdGltZScpXG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKCgpID0+IChvdXRwdXQubWF0Y2goL2RlcGxveW1lbnQgdGltZS9nKSB8fCBbXSkubGVuZ3RoID49IDIpO1xuICAgICAgZml4dHVyZS5sb2coJ+KckyBTZWNvbmQgZGVwbG95bWVudCBjb21wbGV0ZWQnKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gS2lsbCB0aGUgZW50aXJlIHByb2Nlc3MgZ3JvdXAgKG5lZ2F0aXZlIFBJRClcbiAgICAgIGlmICh3YXRjaFByb2Nlc3MucGlkKSB7XG4gICAgICAgIHByb2Nlc3Mua2lsbCgtd2F0Y2hQcm9jZXNzLnBpZCwgJ1NJR1RFUk0nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pLFxuKTtcbiJdfQ==
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Shared helper functions for watch integration tests.
3
+ */
4
+ /**
5
+ * Wait for a specific string to appear in the output.
6
+ */
7
+ export declare function waitForOutput(getOutput: () => string, searchString: string): Promise<void>;
8
+ /**
9
+ * Wait for a condition to become true.
10
+ */
11
+ export declare function waitForCondition(condition: () => boolean): Promise<void>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ /**
3
+ * Shared helper functions for watch integration tests.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.waitForOutput = waitForOutput;
7
+ exports.waitForCondition = waitForCondition;
8
+ /**
9
+ * Poll a condition until we see it.
10
+ */
11
+ async function poll(condition) {
12
+ return new Promise((resolve) => {
13
+ const check = () => {
14
+ if (condition())
15
+ return resolve();
16
+ setTimeout(check, 1000);
17
+ };
18
+ check();
19
+ });
20
+ }
21
+ /**
22
+ * Wait for a specific string to appear in the output.
23
+ */
24
+ async function waitForOutput(getOutput, searchString) {
25
+ return poll(() => getOutput().includes(searchString));
26
+ }
27
+ /**
28
+ * Wait for a condition to become true.
29
+ */
30
+ async function waitForCondition(condition) {
31
+ return poll(condition);
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2gtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIndhdGNoLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOztBQWtCSCxzQ0FFQztBQUtELDRDQUVDO0FBekJEOztHQUVHO0FBQ0gsS0FBSyxVQUFVLElBQUksQ0FBQyxTQUF3QjtJQUMxQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDN0IsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ2pCLElBQUksU0FBUyxFQUFFO2dCQUFFLE9BQU8sT0FBTyxFQUFFLENBQUM7WUFDbEMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUM7UUFDRixLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOztHQUVHO0FBQ0ksS0FBSyxVQUFVLGFBQWEsQ0FBQyxTQUF1QixFQUFFLFlBQW9CO0lBQy9FLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRDs7R0FFRztBQUNJLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxTQUF3QjtJQUM3RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaGFyZWQgaGVscGVyIGZ1bmN0aW9ucyBmb3Igd2F0Y2ggaW50ZWdyYXRpb24gdGVzdHMuXG4gKi9cblxuLyoqXG4gKiBQb2xsIGEgY29uZGl0aW9uIHVudGlsIHdlIHNlZSBpdC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcG9sbChjb25kaXRpb246ICgpID0+IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgY2hlY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoY29uZGl0aW9uKCkpIHJldHVybiByZXNvbHZlKCk7XG4gICAgICBzZXRUaW1lb3V0KGNoZWNrLCAxMDAwKTtcbiAgICB9O1xuICAgIGNoZWNrKCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFdhaXQgZm9yIGEgc3BlY2lmaWMgc3RyaW5nIHRvIGFwcGVhciBpbiB0aGUgb3V0cHV0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2FpdEZvck91dHB1dChnZXRPdXRwdXQ6ICgpID0+IHN0cmluZywgc2VhcmNoU3RyaW5nOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIHBvbGwoKCkgPT4gZ2V0T3V0cHV0KCkuaW5jbHVkZXMoc2VhcmNoU3RyaW5nKSk7XG59XG5cbi8qKlxuICogV2FpdCBmb3IgYSBjb25kaXRpb24gdG8gYmVjb21lIHRydWUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yQ29uZGl0aW9uKGNvbmRpdGlvbjogKCkgPT4gYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gcG9sbChjb25kaXRpb24pO1xufVxuIl19
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable import/no-extraneous-dependencies */
4
+ const toolkit = require("@aws-cdk/toolkit-lib");
5
+ const toolkit_helpers_1 = require("./toolkit-helpers");
6
+ const lib_1 = require("../../lib");
7
+ jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
8
+ (0, lib_1.integTest)('toolkit deploy stack with multiple docker assets', (0, lib_1.withDefaultFixture)(async (fixture) => {
9
+ const tk = (0, toolkit_helpers_1.toolkitFromFixture)(fixture);
10
+ const assembly = await (0, toolkit_helpers_1.assemblyFromCdkAppDir)(tk, fixture);
11
+ const stacks = {
12
+ strategy: toolkit.StackSelectionStrategy.PATTERN_MUST_MATCH_SINGLE,
13
+ patterns: [fixture.fullStackName('multiple-docker-assets')],
14
+ };
15
+ await tk.deploy(assembly, {
16
+ stacks,
17
+ assetParallelism: true,
18
+ assetBuildConcurrency: 3,
19
+ });
20
+ await tk.destroy(assembly, { stacks });
21
+ }));
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGtpdC1kZXBsb3ktc3RhY2std2l0aC1tdWx0aXBsZS1kb2NrZXItYXNzZXRzLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRvb2xraXQtZGVwbG95LXN0YWNrLXdpdGgtbXVsdGlwbGUtZG9ja2VyLWFzc2V0cy5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzREFBc0Q7QUFDdEQsZ0RBQWdEO0FBQ2hELHVEQUE4RTtBQUM5RSxtQ0FBMEQ7QUFFMUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMseUVBQXlFO0FBRTNHLElBQUEsZUFBUyxFQUNQLGtEQUFrRCxFQUNsRCxJQUFBLHdCQUFrQixFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNuQyxNQUFNLEVBQUUsR0FBRyxJQUFBLG9DQUFrQixFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXZDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSx1Q0FBcUIsRUFBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFMUQsTUFBTSxNQUFNLEdBQTBCO1FBQ3BDLFFBQVEsRUFBRSxPQUFPLENBQUMsc0JBQXNCLENBQUMseUJBQXlCO1FBQ2xFLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsQ0FBQztLQUM1RCxDQUFDO0lBRUYsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUN4QixNQUFNO1FBQ04sZ0JBQWdCLEVBQUUsSUFBSTtRQUN0QixxQkFBcUIsRUFBRSxDQUFDO0tBQ3pCLENBQUMsQ0FBQztJQUNILE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDLENBQUMsQ0FBQyxDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCAqIGFzIHRvb2xraXQgZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHsgYXNzZW1ibHlGcm9tQ2RrQXBwRGlyLCB0b29sa2l0RnJvbUZpeHR1cmUgfSBmcm9tICcuL3Rvb2xraXQtaGVscGVycyc7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhEZWZhdWx0Rml4dHVyZSB9IGZyb20gJy4uLy4uL2xpYic7XG5cbmplc3Quc2V0VGltZW91dCgyICogNjAgKiA2MF8wMDApOyAvLyBJbmNsdWRlcyB0aGUgdGltZSB0byBhY3F1aXJlIGxvY2tzLCB3b3JzdC1jYXNlIHNpbmdsZS10aHJlYWRlZCBydW50aW1lXG5cbmludGVnVGVzdChcbiAgJ3Rvb2xraXQgZGVwbG95IHN0YWNrIHdpdGggbXVsdGlwbGUgZG9ja2VyIGFzc2V0cycsXG4gIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGNvbnN0IHRrID0gdG9vbGtpdEZyb21GaXh0dXJlKGZpeHR1cmUpO1xuXG4gICAgY29uc3QgYXNzZW1ibHkgPSBhd2FpdCBhc3NlbWJseUZyb21DZGtBcHBEaXIodGssIGZpeHR1cmUpO1xuXG4gICAgY29uc3Qgc3RhY2tzOiB0b29sa2l0LlN0YWNrU2VsZWN0b3IgPSB7XG4gICAgICBzdHJhdGVneTogdG9vbGtpdC5TdGFja1NlbGVjdGlvblN0cmF0ZWd5LlBBVFRFUk5fTVVTVF9NQVRDSF9TSU5HTEUsXG4gICAgICBwYXR0ZXJuczogW2ZpeHR1cmUuZnVsbFN0YWNrTmFtZSgnbXVsdGlwbGUtZG9ja2VyLWFzc2V0cycpXSxcbiAgICB9O1xuXG4gICAgYXdhaXQgdGsuZGVwbG95KGFzc2VtYmx5LCB7XG4gICAgICBzdGFja3MsXG4gICAgICBhc3NldFBhcmFsbGVsaXNtOiB0cnVlLFxuICAgICAgYXNzZXRCdWlsZENvbmN1cnJlbmN5OiAzLFxuICAgIH0pO1xuICAgIGF3YWl0IHRrLmRlc3Ryb3koYXNzZW1ibHksIHsgc3RhY2tzIH0pO1xuICB9KSxcbik7XG4iXX0=
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable import/no-extraneous-dependencies */
4
+ const toolkit = require("@aws-cdk/toolkit-lib");
5
+ const toolkit_helpers_1 = require("./toolkit-helpers");
6
+ const lib_1 = require("../../lib");
7
+ /**
8
+ * Integration test for toolkit-lib watch with glob pattern matching.
9
+ *
10
+ * These tests verify that the chokidar v4 glob pattern fix does not
11
+ * detects file changes on files that are excluded via config.
12
+ */
13
+ (0, lib_1.integTest)('toolkit watch excludes node_modules and dotfiles by default', (0, lib_1.withDefaultFixture)(async (fixture) => {
14
+ const tk = (0, toolkit_helpers_1.toolkitFromFixture)(fixture);
15
+ const assembly = await (0, toolkit_helpers_1.assemblyFromCdkAppDir)(tk, fixture);
16
+ // Track the exclude patterns that were configured
17
+ const configMessages = [];
18
+ // Create a custom IoHost to capture configuration messages
19
+ const customTk = new toolkit.Toolkit({
20
+ ioHost: {
21
+ notify: async (msg) => {
22
+ if (msg.code === 'CDK_TOOLKIT_I5310') {
23
+ configMessages.push(msg.message);
24
+ }
25
+ },
26
+ requestResponse: async () => undefined,
27
+ },
28
+ });
29
+ // Start watching with default exclude patterns
30
+ const watcher = await customTk.watch(assembly, {
31
+ include: ['**'],
32
+ watchDir: fixture.integTestDir,
33
+ deploymentMethod: { method: 'hotswap' },
34
+ });
35
+ try {
36
+ // Wait for initialization
37
+ await new Promise(resolve => setTimeout(resolve, 500));
38
+ // Verify that default excludes are applied
39
+ const configMsg = configMessages.find(m => m.includes("'exclude' patterns"));
40
+ expect(configMsg).toBeDefined();
41
+ // Check that default excludes are present
42
+ expect(configMsg).toContain('node_modules');
43
+ expect(configMsg).toContain('.*');
44
+ fixture.log('✓ Toolkit watch applies default exclude patterns correctly');
45
+ fixture.log(` Config: ${configMsg.substring(0, 200)}...`);
46
+ }
47
+ finally {
48
+ await watcher.dispose();
49
+ await new Promise(resolve => setTimeout(resolve, 1000)); // Allow async operations to complete
50
+ }
51
+ }));
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGtpdC13YXRjaC1nbG9iLW5lZ2F0aXZlLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRvb2xraXQtd2F0Y2gtZ2xvYi1uZWdhdGl2ZS5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzREFBc0Q7QUFDdEQsZ0RBQWdEO0FBQ2hELHVEQUE4RTtBQUM5RSxtQ0FBMEQ7QUFFMUQ7Ozs7O0dBS0c7QUFFSCxJQUFBLGVBQVMsRUFDUCw2REFBNkQsRUFDN0QsSUFBQSx3QkFBa0IsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDbkMsTUFBTSxFQUFFLEdBQUcsSUFBQSxvQ0FBa0IsRUFBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsdUNBQXFCLEVBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTFELGtEQUFrRDtJQUNsRCxNQUFNLGNBQWMsR0FBYSxFQUFFLENBQUM7SUFFcEMsMkRBQTJEO0lBQzNELE1BQU0sUUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNuQyxNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUNwQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLEVBQUUsQ0FBQztvQkFDckMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25DLENBQUM7WUFDSCxDQUFDO1lBQ0QsZUFBZSxFQUFFLEtBQUssSUFBbUIsRUFBRSxDQUFDLFNBQXlCO1NBQ3RFO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsK0NBQStDO0lBQy9DLE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7UUFDN0MsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ2YsUUFBUSxFQUFFLE9BQU8sQ0FBQyxZQUFZO1FBQzlCLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRTtLQUN4QyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUM7UUFDSCwwQkFBMEI7UUFDMUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUV2RCwyQ0FBMkM7UUFDM0MsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVoQywwQ0FBMEM7UUFDMUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxDLE9BQU8sQ0FBQyxHQUFHLENBQUMsNERBQTRELENBQUMsQ0FBQztRQUMxRSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsU0FBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7WUFBUyxDQUFDO1FBQ1QsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLHFDQUFxQztJQUNoRyxDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0ICogYXMgdG9vbGtpdCBmcm9tICdAYXdzLWNkay90b29sa2l0LWxpYic7XG5pbXBvcnQgeyBhc3NlbWJseUZyb21DZGtBcHBEaXIsIHRvb2xraXRGcm9tRml4dHVyZSB9IGZyb20gJy4vdG9vbGtpdC1oZWxwZXJzJztcbmltcG9ydCB7IGludGVnVGVzdCwgd2l0aERlZmF1bHRGaXh0dXJlIH0gZnJvbSAnLi4vLi4vbGliJztcblxuLyoqXG4gKiBJbnRlZ3JhdGlvbiB0ZXN0IGZvciB0b29sa2l0LWxpYiB3YXRjaCB3aXRoIGdsb2IgcGF0dGVybiBtYXRjaGluZy5cbiAqXG4gKiBUaGVzZSB0ZXN0cyB2ZXJpZnkgdGhhdCB0aGUgY2hva2lkYXIgdjQgZ2xvYiBwYXR0ZXJuIGZpeCBkb2VzIG5vdFxuICogZGV0ZWN0cyBmaWxlIGNoYW5nZXMgb24gZmlsZXMgdGhhdCBhcmUgZXhjbHVkZWQgdmlhIGNvbmZpZy5cbiAqL1xuXG5pbnRlZ1Rlc3QoXG4gICd0b29sa2l0IHdhdGNoIGV4Y2x1ZGVzIG5vZGVfbW9kdWxlcyBhbmQgZG90ZmlsZXMgYnkgZGVmYXVsdCcsXG4gIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGNvbnN0IHRrID0gdG9vbGtpdEZyb21GaXh0dXJlKGZpeHR1cmUpO1xuICAgIGNvbnN0IGFzc2VtYmx5ID0gYXdhaXQgYXNzZW1ibHlGcm9tQ2RrQXBwRGlyKHRrLCBmaXh0dXJlKTtcblxuICAgIC8vIFRyYWNrIHRoZSBleGNsdWRlIHBhdHRlcm5zIHRoYXQgd2VyZSBjb25maWd1cmVkXG4gICAgY29uc3QgY29uZmlnTWVzc2FnZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBDcmVhdGUgYSBjdXN0b20gSW9Ib3N0IHRvIGNhcHR1cmUgY29uZmlndXJhdGlvbiBtZXNzYWdlc1xuICAgIGNvbnN0IGN1c3RvbVRrID0gbmV3IHRvb2xraXQuVG9vbGtpdCh7XG4gICAgICBpb0hvc3Q6IHtcbiAgICAgICAgbm90aWZ5OiBhc3luYyAobXNnKSA9PiB7XG4gICAgICAgICAgaWYgKG1zZy5jb2RlID09PSAnQ0RLX1RPT0xLSVRfSTUzMTAnKSB7XG4gICAgICAgICAgICBjb25maWdNZXNzYWdlcy5wdXNoKG1zZy5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVlc3RSZXNwb25zZTogYXN5bmMgPFQ+KCk6IFByb21pc2U8VD4gPT4gdW5kZWZpbmVkIGFzIHVua25vd24gYXMgVCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBTdGFydCB3YXRjaGluZyB3aXRoIGRlZmF1bHQgZXhjbHVkZSBwYXR0ZXJuc1xuICAgIGNvbnN0IHdhdGNoZXIgPSBhd2FpdCBjdXN0b21Uay53YXRjaChhc3NlbWJseSwge1xuICAgICAgaW5jbHVkZTogWycqKiddLFxuICAgICAgd2F0Y2hEaXI6IGZpeHR1cmUuaW50ZWdUZXN0RGlyLFxuICAgICAgZGVwbG95bWVudE1ldGhvZDogeyBtZXRob2Q6ICdob3Rzd2FwJyB9LFxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFdhaXQgZm9yIGluaXRpYWxpemF0aW9uXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgNTAwKSk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGF0IGRlZmF1bHQgZXhjbHVkZXMgYXJlIGFwcGxpZWRcbiAgICAgIGNvbnN0IGNvbmZpZ01zZyA9IGNvbmZpZ01lc3NhZ2VzLmZpbmQobSA9PiBtLmluY2x1ZGVzKFwiJ2V4Y2x1ZGUnIHBhdHRlcm5zXCIpKTtcbiAgICAgIGV4cGVjdChjb25maWdNc2cpLnRvQmVEZWZpbmVkKCk7XG5cbiAgICAgIC8vIENoZWNrIHRoYXQgZGVmYXVsdCBleGNsdWRlcyBhcmUgcHJlc2VudFxuICAgICAgZXhwZWN0KGNvbmZpZ01zZykudG9Db250YWluKCdub2RlX21vZHVsZXMnKTtcbiAgICAgIGV4cGVjdChjb25maWdNc2cpLnRvQ29udGFpbignLionKTtcblxuICAgICAgZml4dHVyZS5sb2coJ+KckyBUb29sa2l0IHdhdGNoIGFwcGxpZXMgZGVmYXVsdCBleGNsdWRlIHBhdHRlcm5zIGNvcnJlY3RseScpO1xuICAgICAgZml4dHVyZS5sb2coYCAgQ29uZmlnOiAke2NvbmZpZ01zZyEuc3Vic3RyaW5nKDAsIDIwMCl9Li4uYCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHdhdGNoZXIuZGlzcG9zZSgpO1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTsgLy8gQWxsb3cgYXN5bmMgb3BlcmF0aW9ucyB0byBjb21wbGV0ZVxuICAgIH1cbiAgfSksXG4pO1xuIl19
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable import/no-extraneous-dependencies */
4
+ const fs = require("fs");
5
+ const path = require("path");
6
+ const toolkit = require("@aws-cdk/toolkit-lib");
7
+ const toolkit_helpers_1 = require("./toolkit-helpers");
8
+ const lib_1 = require("../../lib");
9
+ /**
10
+ * Integration test for toolkit-lib watch with glob pattern matching.
11
+ *
12
+ * These tests verify that the chokidar v4 glob pattern fix detects file changes.
13
+ */
14
+ (0, lib_1.integTest)('toolkit watch detects file changes with glob patterns', (0, lib_1.withDefaultFixture)(async (fixture) => {
15
+ const tk = (0, toolkit_helpers_1.toolkitFromFixture)(fixture);
16
+ const assembly = await (0, toolkit_helpers_1.assemblyFromCdkAppDir)(tk, fixture);
17
+ // Track events received from the watcher
18
+ const receivedEvents = [];
19
+ // Create a custom IoHost to capture watch events
20
+ const customTk = new toolkit.Toolkit({
21
+ ioHost: {
22
+ notify: async (msg) => {
23
+ receivedEvents.push({ code: msg.code, message: msg.message });
24
+ },
25
+ requestResponse: async () => undefined,
26
+ },
27
+ });
28
+ // Create a test file in the watch directory
29
+ const testFile = path.join(fixture.integTestDir, 'watch-test-file.ts');
30
+ // Start watching with specific include patterns
31
+ const watcher = await customTk.watch(assembly, {
32
+ include: ['**/*.ts'],
33
+ exclude: ['**/node_modules/**', '**/*.test.ts'],
34
+ watchDir: fixture.integTestDir,
35
+ // Use a deployment method that won't actually deploy (we just want to test file watching)
36
+ deploymentMethod: { method: 'hotswap' },
37
+ });
38
+ try {
39
+ // Wait a bit for the watcher to initialize
40
+ await (0, lib_1.sleep)(1000);
41
+ // Create a new .ts file - this should be detected
42
+ fs.writeFileSync(testFile, 'export const watchTest = true;');
43
+ // Wait for the file change to be detected
44
+ await (0, lib_1.sleep)(2000);
45
+ // Verify that the watcher detected the file
46
+ const observingEvents = receivedEvents.filter(e => e.code === 'CDK_TOOLKIT_I5311' || // observing file
47
+ e.code === 'CDK_TOOLKIT_I5312' || // detected change
48
+ e.code === 'CDK_TOOLKIT_I5314');
49
+ fixture.log(`Received ${observingEvents.length} watch-related events`);
50
+ for (const event of observingEvents) {
51
+ fixture.log(` ${event.code}: ${event.message.substring(0, 100)}...`);
52
+ }
53
+ // The watcher should have received the ready event and started observing
54
+ const hasReadyOrObserving = receivedEvents.some(e => e.code === 'CDK_TOOLKIT_I5314' || // triggering initial deploy
55
+ e.code === 'CDK_TOOLKIT_I5311');
56
+ expect(hasReadyOrObserving).toBe(true);
57
+ fixture.log('✓ Toolkit watch successfully initialized and detected files');
58
+ }
59
+ finally {
60
+ // Clean up - dispose and wait for async operations to settle
61
+ await watcher.dispose();
62
+ await (0, lib_1.sleep)(1000); // Allow async operations to complete
63
+ if (fs.existsSync(testFile)) {
64
+ fs.unlinkSync(testFile);
65
+ }
66
+ }
67
+ }));
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGtpdC13YXRjaC1nbG9iLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRvb2xraXQtd2F0Y2gtZ2xvYi5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzREFBc0Q7QUFDdEQseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixnREFBZ0Q7QUFDaEQsdURBQThFO0FBQzlFLG1DQUFpRTtBQUVqRTs7OztHQUlHO0FBRUgsSUFBQSxlQUFTLEVBQ1AsdURBQXVELEVBQ3ZELElBQUEsd0JBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25DLE1BQU0sRUFBRSxHQUFHLElBQUEsb0NBQWtCLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLHVDQUFxQixFQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUUxRCx5Q0FBeUM7SUFDekMsTUFBTSxjQUFjLEdBQXlELEVBQUUsQ0FBQztJQUVoRixpREFBaUQ7SUFDakQsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ25DLE1BQU0sRUFBRTtZQUNOLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQ3BCLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDaEUsQ0FBQztZQUNELGVBQWUsRUFBRSxLQUFLLElBQW1CLEVBQUUsQ0FBQyxTQUF5QjtTQUN0RTtLQUNGLENBQUMsQ0FBQztJQUVILDRDQUE0QztJQUM1QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUV2RSxnREFBZ0Q7SUFDaEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtRQUM3QyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDcEIsT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsY0FBYyxDQUFDO1FBQy9DLFFBQVEsRUFBRSxPQUFPLENBQUMsWUFBWTtRQUM5QiwwRkFBMEY7UUFDMUYsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO0tBQ3hDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQztRQUNILDJDQUEyQztRQUMzQyxNQUFNLElBQUEsV0FBSyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxCLGtEQUFrRDtRQUNsRCxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxnQ0FBZ0MsQ0FBQyxDQUFDO1FBRTdELDBDQUEwQztRQUMxQyxNQUFNLElBQUEsV0FBSyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxCLDRDQUE0QztRQUM1QyxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2hELENBQUMsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLElBQUksaUJBQWlCO1lBQ25ELENBQUMsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLElBQUksa0JBQWtCO1lBQ3BELENBQUMsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQy9CLENBQUM7UUFFRixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksZUFBZSxDQUFDLE1BQU0sdUJBQXVCLENBQUMsQ0FBQztRQUN2RSxLQUFLLE1BQU0sS0FBSyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELHlFQUF5RTtRQUN6RSxNQUFNLG1CQUFtQixHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDbEQsQ0FBQyxDQUFDLElBQUksS0FBSyxtQkFBbUIsSUFBSSw0QkFBNEI7WUFDOUQsQ0FBQyxDQUFDLElBQUksS0FBSyxtQkFBbUIsQ0FDL0IsQ0FBQztRQUNGLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2QyxPQUFPLENBQUMsR0FBRyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7SUFDN0UsQ0FBQztZQUFTLENBQUM7UUFDVCw2REFBNkQ7UUFDN0QsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEIsTUFBTSxJQUFBLFdBQUssRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHFDQUFxQztRQUN4RCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM1QixFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHRvb2xraXQgZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHsgYXNzZW1ibHlGcm9tQ2RrQXBwRGlyLCB0b29sa2l0RnJvbUZpeHR1cmUgfSBmcm9tICcuL3Rvb2xraXQtaGVscGVycyc7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhEZWZhdWx0Rml4dHVyZSwgc2xlZXAgfSBmcm9tICcuLi8uLi9saWInO1xuXG4vKipcbiAqIEludGVncmF0aW9uIHRlc3QgZm9yIHRvb2xraXQtbGliIHdhdGNoIHdpdGggZ2xvYiBwYXR0ZXJuIG1hdGNoaW5nLlxuICpcbiAqIFRoZXNlIHRlc3RzIHZlcmlmeSB0aGF0IHRoZSBjaG9raWRhciB2NCBnbG9iIHBhdHRlcm4gZml4IGRldGVjdHMgZmlsZSBjaGFuZ2VzLlxuICovXG5cbmludGVnVGVzdChcbiAgJ3Rvb2xraXQgd2F0Y2ggZGV0ZWN0cyBmaWxlIGNoYW5nZXMgd2l0aCBnbG9iIHBhdHRlcm5zJyxcbiAgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgY29uc3QgdGsgPSB0b29sa2l0RnJvbUZpeHR1cmUoZml4dHVyZSk7XG4gICAgY29uc3QgYXNzZW1ibHkgPSBhd2FpdCBhc3NlbWJseUZyb21DZGtBcHBEaXIodGssIGZpeHR1cmUpO1xuXG4gICAgLy8gVHJhY2sgZXZlbnRzIHJlY2VpdmVkIGZyb20gdGhlIHdhdGNoZXJcbiAgICBjb25zdCByZWNlaXZlZEV2ZW50czogQXJyYXk8eyBjb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQ7IG1lc3NhZ2U6IHN0cmluZyB9PiA9IFtdO1xuXG4gICAgLy8gQ3JlYXRlIGEgY3VzdG9tIElvSG9zdCB0byBjYXB0dXJlIHdhdGNoIGV2ZW50c1xuICAgIGNvbnN0IGN1c3RvbVRrID0gbmV3IHRvb2xraXQuVG9vbGtpdCh7XG4gICAgICBpb0hvc3Q6IHtcbiAgICAgICAgbm90aWZ5OiBhc3luYyAobXNnKSA9PiB7XG4gICAgICAgICAgcmVjZWl2ZWRFdmVudHMucHVzaCh7IGNvZGU6IG1zZy5jb2RlLCBtZXNzYWdlOiBtc2cubWVzc2FnZSB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWVzdFJlc3BvbnNlOiBhc3luYyA8VD4oKTogUHJvbWlzZTxUPiA9PiB1bmRlZmluZWQgYXMgdW5rbm93biBhcyBULFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBhIHRlc3QgZmlsZSBpbiB0aGUgd2F0Y2ggZGlyZWN0b3J5XG4gICAgY29uc3QgdGVzdEZpbGUgPSBwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICd3YXRjaC10ZXN0LWZpbGUudHMnKTtcblxuICAgIC8vIFN0YXJ0IHdhdGNoaW5nIHdpdGggc3BlY2lmaWMgaW5jbHVkZSBwYXR0ZXJuc1xuICAgIGNvbnN0IHdhdGNoZXIgPSBhd2FpdCBjdXN0b21Uay53YXRjaChhc3NlbWJseSwge1xuICAgICAgaW5jbHVkZTogWycqKi8qLnRzJ10sXG4gICAgICBleGNsdWRlOiBbJyoqL25vZGVfbW9kdWxlcy8qKicsICcqKi8qLnRlc3QudHMnXSxcbiAgICAgIHdhdGNoRGlyOiBmaXh0dXJlLmludGVnVGVzdERpcixcbiAgICAgIC8vIFVzZSBhIGRlcGxveW1lbnQgbWV0aG9kIHRoYXQgd29uJ3QgYWN0dWFsbHkgZGVwbG95ICh3ZSBqdXN0IHdhbnQgdG8gdGVzdCBmaWxlIHdhdGNoaW5nKVxuICAgICAgZGVwbG95bWVudE1ldGhvZDogeyBtZXRob2Q6ICdob3Rzd2FwJyB9LFxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFdhaXQgYSBiaXQgZm9yIHRoZSB3YXRjaGVyIHRvIGluaXRpYWxpemVcbiAgICAgIGF3YWl0IHNsZWVwKDEwMDApO1xuXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgLnRzIGZpbGUgLSB0aGlzIHNob3VsZCBiZSBkZXRlY3RlZFxuICAgICAgZnMud3JpdGVGaWxlU3luYyh0ZXN0RmlsZSwgJ2V4cG9ydCBjb25zdCB3YXRjaFRlc3QgPSB0cnVlOycpO1xuXG4gICAgICAvLyBXYWl0IGZvciB0aGUgZmlsZSBjaGFuZ2UgdG8gYmUgZGV0ZWN0ZWRcbiAgICAgIGF3YWl0IHNsZWVwKDIwMDApO1xuXG4gICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgd2F0Y2hlciBkZXRlY3RlZCB0aGUgZmlsZVxuICAgICAgY29uc3Qgb2JzZXJ2aW5nRXZlbnRzID0gcmVjZWl2ZWRFdmVudHMuZmlsdGVyKGUgPT5cbiAgICAgICAgZS5jb2RlID09PSAnQ0RLX1RPT0xLSVRfSTUzMTEnIHx8IC8vIG9ic2VydmluZyBmaWxlXG4gICAgICAgIGUuY29kZSA9PT0gJ0NES19UT09MS0lUX0k1MzEyJyB8fCAvLyBkZXRlY3RlZCBjaGFuZ2VcbiAgICAgICAgZS5jb2RlID09PSAnQ0RLX1RPT0xLSVRfSTUzMTQnLCAvLyB0cmlnZ2VyaW5nIGRlcGxveVxuICAgICAgKTtcblxuICAgICAgZml4dHVyZS5sb2coYFJlY2VpdmVkICR7b2JzZXJ2aW5nRXZlbnRzLmxlbmd0aH0gd2F0Y2gtcmVsYXRlZCBldmVudHNgKTtcbiAgICAgIGZvciAoY29uc3QgZXZlbnQgb2Ygb2JzZXJ2aW5nRXZlbnRzKSB7XG4gICAgICAgIGZpeHR1cmUubG9nKGAgICR7ZXZlbnQuY29kZX06ICR7ZXZlbnQubWVzc2FnZS5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKTtcbiAgICAgIH1cblxuICAgICAgLy8gVGhlIHdhdGNoZXIgc2hvdWxkIGhhdmUgcmVjZWl2ZWQgdGhlIHJlYWR5IGV2ZW50IGFuZCBzdGFydGVkIG9ic2VydmluZ1xuICAgICAgY29uc3QgaGFzUmVhZHlPck9ic2VydmluZyA9IHJlY2VpdmVkRXZlbnRzLnNvbWUoZSA9PlxuICAgICAgICBlLmNvZGUgPT09ICdDREtfVE9PTEtJVF9JNTMxNCcgfHwgLy8gdHJpZ2dlcmluZyBpbml0aWFsIGRlcGxveVxuICAgICAgICBlLmNvZGUgPT09ICdDREtfVE9PTEtJVF9JNTMxMScsIC8vIG9ic2VydmluZyBmaWxlc1xuICAgICAgKTtcbiAgICAgIGV4cGVjdChoYXNSZWFkeU9yT2JzZXJ2aW5nKS50b0JlKHRydWUpO1xuXG4gICAgICBmaXh0dXJlLmxvZygn4pyTIFRvb2xraXQgd2F0Y2ggc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIGFuZCBkZXRlY3RlZCBmaWxlcycpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBDbGVhbiB1cCAtIGRpc3Bvc2UgYW5kIHdhaXQgZm9yIGFzeW5jIG9wZXJhdGlvbnMgdG8gc2V0dGxlXG4gICAgICBhd2FpdCB3YXRjaGVyLmRpc3Bvc2UoKTtcbiAgICAgIGF3YWl0IHNsZWVwKDEwMDApOyAvLyBBbGxvdyBhc3luYyBvcGVyYXRpb25zIHRvIGNvbXBsZXRlXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyh0ZXN0RmlsZSkpIHtcbiAgICAgICAgZnMudW5saW5rU3luYyh0ZXN0RmlsZSk7XG4gICAgICB9XG4gICAgfVxuICB9KSxcbik7XG4iXX0=
@@ -1,69 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const lib_1 = require("../../../lib");
4
- (0, lib_1.integTest)('cdk refactor - detects refactoring changes and prints the result', (0, lib_1.withSpecificFixture)('refactoring', async (fixture) => {
5
- // First, deploy the stacks
6
- await fixture.cdkDeploy('bucket-stack');
7
- await fixture.cdkDeploy('basic', {
8
- modEnv: {
9
- BASIC_QUEUE_LOGICAL_ID: 'OldName',
10
- },
11
- });
12
- // Then see if the refactoring tool detects the change
13
- const stdErr = await fixture.cdkRefactor({
14
- options: ['--dry-run', '--unstable=refactor'],
15
- allowErrExit: true,
16
- // Making sure the synthesized stack has a queue with
17
- // the new name so that a refactor is detected
18
- modEnv: {
19
- BASIC_QUEUE_LOGICAL_ID: 'NewName',
20
- },
21
- });
22
- expect(stdErr).toContain('The following resources were moved or renamed:');
23
- expect(removeColor(stdErr)).toMatch(/│ AWS::SQS::Queue │ .*\/OldName\/Resource │ .*\/NewName\/Resource │/);
24
- }));
25
- (0, lib_1.integTest)('cdk refactor - no refactoring changes detected', (0, lib_1.withSpecificFixture)('refactoring', async (fixture) => {
26
- const modEnv = {
27
- BASIC_QUEUE_LOGICAL_ID: 'OldName',
28
- };
29
- // First, deploy the stacks
30
- await fixture.cdkDeploy('bucket-stack');
31
- await fixture.cdkDeploy('basic', { modEnv });
32
- // Then see if the refactoring tool detects the change
33
- const stdErr = await fixture.cdkRefactor({
34
- options: ['--dry-run', '--unstable=refactor'],
35
- allowErrExit: true,
36
- modEnv,
37
- });
38
- expect(stdErr).toContain('Nothing to refactor');
39
- }));
40
- (0, lib_1.integTest)('cdk refactor - filters stacks by pattern', (0, lib_1.withSpecificFixture)('refactoring-multiple-envs', async (fixture) => {
41
- // First, deploy the stacks
42
- await fixture.cdkDeploy('gamma-stack', {
43
- modEnv: {
44
- BUCKET_ID: 'OldName',
45
- },
46
- });
47
- await fixture.cdkDeploy('prod-stack', {
48
- modEnv: {
49
- BUCKET_ID: 'OldName',
50
- },
51
- });
52
- // Then see if the refactoring tool detects the change
53
- const stdErr = await fixture.cdkRefactor({
54
- options: ['*-gamma-stack', '--dry-run', '--unstable=refactor'],
55
- allowErrExit: true,
56
- captureStderr: true,
57
- // Making sure the synthesized stack has a queue with
58
- // the new name so that a refactor is detected
59
- modEnv: {
60
- BUCKET_ID: 'NewName',
61
- },
62
- });
63
- const numberOfEnvironments = (stdErr.match(/Resource Type/g) || []).length;
64
- expect(numberOfEnvironments).toEqual(1);
65
- }));
66
- function removeColor(str) {
67
- return str.replace(/\x1B[[(?);]{0,2}(;?\d)*./g, '');
68
- }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXJlZmFjdG9yLWRyeS1ydW4uaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLXJlZmFjdG9yLWRyeS1ydW4uaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0NBQThEO0FBRTlELElBQUEsZUFBUyxFQUNQLGtFQUFrRSxFQUNsRSxJQUFBLHlCQUFtQixFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDbkQsMkJBQTJCO0lBQzNCLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFO1FBQy9CLE1BQU0sRUFBRTtZQUNOLHNCQUFzQixFQUFFLFNBQVM7U0FDbEM7S0FDRixDQUFDLENBQUM7SUFFSCxzREFBc0Q7SUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxxQkFBcUIsQ0FBQztRQUM3QyxZQUFZLEVBQUUsSUFBSTtRQUNsQixxREFBcUQ7UUFDckQsOENBQThDO1FBQzlDLE1BQU0sRUFBRTtZQUNOLHNCQUFzQixFQUFFLFNBQVM7U0FDbEM7S0FDRixDQUFDLENBQUM7SUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFDM0UsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0FBQzdHLENBQUMsQ0FBQyxDQUNILENBQUM7QUFFRixJQUFBLGVBQVMsRUFDUCxnREFBZ0QsRUFDaEQsSUFBQSx5QkFBbUIsRUFBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25ELE1BQU0sTUFBTSxHQUFHO1FBQ2Isc0JBQXNCLEVBQUUsU0FBUztLQUNsQyxDQUFDO0lBRUYsMkJBQTJCO0lBQzNCLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUU3QyxzREFBc0Q7SUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxxQkFBcUIsQ0FBQztRQUM3QyxZQUFZLEVBQUUsSUFBSTtRQUNsQixNQUFNO0tBQ1AsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ2xELENBQUMsQ0FBQyxDQUNILENBQUM7QUFFRixJQUFBLGVBQVMsRUFDUCwwQ0FBMEMsRUFDMUMsSUFBQSx5QkFBbUIsRUFBQywyQkFBMkIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDakUsMkJBQTJCO0lBQzNCLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUU7UUFDckMsTUFBTSxFQUFFO1lBQ04sU0FBUyxFQUFFLFNBQVM7U0FDckI7S0FDRixDQUFDLENBQUM7SUFDSCxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFO1FBQ3BDLE1BQU0sRUFBRTtZQUNOLFNBQVMsRUFBRSxTQUFTO1NBQ3JCO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsc0RBQXNEO0lBQ3RELE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2QyxPQUFPLEVBQUUsQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixDQUFDO1FBQzlELFlBQVksRUFBRSxJQUFJO1FBQ2xCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLHFEQUFxRDtRQUNyRCw4Q0FBOEM7UUFDOUMsTUFBTSxFQUFFO1lBQ04sU0FBUyxFQUFFLFNBQVM7U0FDckI7S0FDRixDQUFDLENBQUM7SUFFSCxNQUFNLG9CQUFvQixHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMzRSxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUVGLFNBQVMsV0FBVyxDQUFDLEdBQVc7SUFDOUIsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLDJCQUEyQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhTcGVjaWZpY0ZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5pbnRlZ1Rlc3QoXG4gICdjZGsgcmVmYWN0b3IgLSBkZXRlY3RzIHJlZmFjdG9yaW5nIGNoYW5nZXMgYW5kIHByaW50cyB0aGUgcmVzdWx0JyxcbiAgd2l0aFNwZWNpZmljRml4dHVyZSgncmVmYWN0b3JpbmcnLCBhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIC8vIEZpcnN0LCBkZXBsb3kgdGhlIHN0YWNrc1xuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdidWNrZXQtc3RhY2snKTtcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnYmFzaWMnLCB7XG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgQkFTSUNfUVVFVUVfTE9HSUNBTF9JRDogJ09sZE5hbWUnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFRoZW4gc2VlIGlmIHRoZSByZWZhY3RvcmluZyB0b29sIGRldGVjdHMgdGhlIGNoYW5nZVxuICAgIGNvbnN0IHN0ZEVyciA9IGF3YWl0IGZpeHR1cmUuY2RrUmVmYWN0b3Ioe1xuICAgICAgb3B0aW9uczogWyctLWRyeS1ydW4nLCAnLS11bnN0YWJsZT1yZWZhY3RvciddLFxuICAgICAgYWxsb3dFcnJFeGl0OiB0cnVlLFxuICAgICAgLy8gTWFraW5nIHN1cmUgdGhlIHN5bnRoZXNpemVkIHN0YWNrIGhhcyBhIHF1ZXVlIHdpdGhcbiAgICAgIC8vIHRoZSBuZXcgbmFtZSBzbyB0aGF0IGEgcmVmYWN0b3IgaXMgZGV0ZWN0ZWRcbiAgICAgIG1vZEVudjoge1xuICAgICAgICBCQVNJQ19RVUVVRV9MT0dJQ0FMX0lEOiAnTmV3TmFtZScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0ZEVycikudG9Db250YWluKCdUaGUgZm9sbG93aW5nIHJlc291cmNlcyB3ZXJlIG1vdmVkIG9yIHJlbmFtZWQ6Jyk7XG4gICAgZXhwZWN0KHJlbW92ZUNvbG9yKHN0ZEVycikpLnRvTWF0Y2goL+KUgiBBV1M6OlNRUzo6UXVldWUg4pSCIC4qXFwvT2xkTmFtZVxcL1Jlc291cmNlIOKUgiAuKlxcL05ld05hbWVcXC9SZXNvdXJjZSDilIIvKTtcbiAgfSksXG4pO1xuXG5pbnRlZ1Rlc3QoXG4gICdjZGsgcmVmYWN0b3IgLSBubyByZWZhY3RvcmluZyBjaGFuZ2VzIGRldGVjdGVkJyxcbiAgd2l0aFNwZWNpZmljRml4dHVyZSgncmVmYWN0b3JpbmcnLCBhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGNvbnN0IG1vZEVudiA9IHtcbiAgICAgIEJBU0lDX1FVRVVFX0xPR0lDQUxfSUQ6ICdPbGROYW1lJyxcbiAgICB9O1xuXG4gICAgLy8gRmlyc3QsIGRlcGxveSB0aGUgc3RhY2tzXG4gICAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ2J1Y2tldC1zdGFjaycpO1xuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdiYXNpYycsIHsgbW9kRW52IH0pO1xuXG4gICAgLy8gVGhlbiBzZWUgaWYgdGhlIHJlZmFjdG9yaW5nIHRvb2wgZGV0ZWN0cyB0aGUgY2hhbmdlXG4gICAgY29uc3Qgc3RkRXJyID0gYXdhaXQgZml4dHVyZS5jZGtSZWZhY3Rvcih7XG4gICAgICBvcHRpb25zOiBbJy0tZHJ5LXJ1bicsICctLXVuc3RhYmxlPXJlZmFjdG9yJ10sXG4gICAgICBhbGxvd0VyckV4aXQ6IHRydWUsXG4gICAgICBtb2RFbnYsXG4gICAgfSk7XG5cbiAgICBleHBlY3Qoc3RkRXJyKS50b0NvbnRhaW4oJ05vdGhpbmcgdG8gcmVmYWN0b3InKTtcbiAgfSksXG4pO1xuXG5pbnRlZ1Rlc3QoXG4gICdjZGsgcmVmYWN0b3IgLSBmaWx0ZXJzIHN0YWNrcyBieSBwYXR0ZXJuJyxcbiAgd2l0aFNwZWNpZmljRml4dHVyZSgncmVmYWN0b3JpbmctbXVsdGlwbGUtZW52cycsIGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgLy8gRmlyc3QsIGRlcGxveSB0aGUgc3RhY2tzXG4gICAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ2dhbW1hLXN0YWNrJywge1xuICAgICAgbW9kRW52OiB7XG4gICAgICAgIEJVQ0tFVF9JRDogJ09sZE5hbWUnLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgncHJvZC1zdGFjaycsIHtcbiAgICAgIG1vZEVudjoge1xuICAgICAgICBCVUNLRVRfSUQ6ICdPbGROYW1lJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBUaGVuIHNlZSBpZiB0aGUgcmVmYWN0b3JpbmcgdG9vbCBkZXRlY3RzIHRoZSBjaGFuZ2VcbiAgICBjb25zdCBzdGRFcnIgPSBhd2FpdCBmaXh0dXJlLmNka1JlZmFjdG9yKHtcbiAgICAgIG9wdGlvbnM6IFsnKi1nYW1tYS1zdGFjaycsICctLWRyeS1ydW4nLCAnLS11bnN0YWJsZT1yZWZhY3RvciddLFxuICAgICAgYWxsb3dFcnJFeGl0OiB0cnVlLFxuICAgICAgY2FwdHVyZVN0ZGVycjogdHJ1ZSxcbiAgICAgIC8vIE1ha2luZyBzdXJlIHRoZSBzeW50aGVzaXplZCBzdGFjayBoYXMgYSBxdWV1ZSB3aXRoXG4gICAgICAvLyB0aGUgbmV3IG5hbWUgc28gdGhhdCBhIHJlZmFjdG9yIGlzIGRldGVjdGVkXG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgQlVDS0VUX0lEOiAnTmV3TmFtZScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgbnVtYmVyT2ZFbnZpcm9ubWVudHMgPSAoc3RkRXJyLm1hdGNoKC9SZXNvdXJjZSBUeXBlL2cpIHx8IFtdKS5sZW5ndGg7XG4gICAgZXhwZWN0KG51bWJlck9mRW52aXJvbm1lbnRzKS50b0VxdWFsKDEpO1xuICB9KSxcbik7XG5cbmZ1bmN0aW9uIHJlbW92ZUNvbG9yKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9cXHgxQltbKD8pO117MCwyfSg7P1xcZCkqLi9nLCAnJyk7XG59XG5cbiJdfQ==