UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

68 lines 10.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable import/no-extraneous-dependencies */ const fs = require("fs"); const path = require("path"); const toolkit = require("@aws-cdk/toolkit-lib"); const toolkit_helpers_1 = require("./toolkit-helpers"); const lib_1 = require("../../lib"); /** * Integration test for toolkit-lib watch with glob pattern matching. * * These tests verify that the chokidar v4 glob pattern fix detects file changes. */ (0, lib_1.integTest)('toolkit watch detects file changes with glob patterns', (0, lib_1.withDefaultFixture)(async (fixture) => { const tk = (0, toolkit_helpers_1.toolkitFromFixture)(fixture); const assembly = await (0, toolkit_helpers_1.assemblyFromCdkAppDir)(tk, fixture); // Track events received from the watcher const receivedEvents = []; // Create a custom IoHost to capture watch events const customTk = new toolkit.Toolkit({ ioHost: { notify: async (msg) => { receivedEvents.push({ code: msg.code, message: msg.message }); }, requestResponse: async () => undefined, }, }); // Create a test file in the watch directory const testFile = path.join(fixture.integTestDir, 'watch-test-file.ts'); // Start watching with specific include patterns const watcher = await customTk.watch(assembly, { include: ['**/*.ts'], exclude: ['**/node_modules/**', '**/*.test.ts'], watchDir: fixture.integTestDir, // Use a deployment method that won't actually deploy (we just want to test file watching) deploymentMethod: { method: 'hotswap' }, }); try { // Wait a bit for the watcher to initialize await (0, lib_1.sleep)(1000); // Create a new .ts file - this should be detected fs.writeFileSync(testFile, 'export const watchTest = true;'); // Wait for the file change to be detected await (0, lib_1.sleep)(2000); // Verify that the watcher detected the file const observingEvents = receivedEvents.filter(e => e.code === 'CDK_TOOLKIT_I5311' || // observing file e.code === 'CDK_TOOLKIT_I5312' || // detected change e.code === 'CDK_TOOLKIT_I5314'); fixture.log(`Received ${observingEvents.length} watch-related events`); for (const event of observingEvents) { fixture.log(` ${event.code}: ${event.message.substring(0, 100)}...`); } // The watcher should have received the ready event and started observing const hasReadyOrObserving = receivedEvents.some(e => e.code === 'CDK_TOOLKIT_I5314' || // triggering initial deploy e.code === 'CDK_TOOLKIT_I5311'); expect(hasReadyOrObserving).toBe(true); fixture.log('✓ Toolkit watch successfully initialized and detected files'); } finally { // Clean up - dispose and wait for async operations to settle await watcher.dispose(); await (0, lib_1.sleep)(1000); // Allow async operations to complete if (fs.existsSync(testFile)) { fs.unlinkSync(testFile); } } })); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGtpdC13YXRjaC1nbG9iLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRvb2xraXQtd2F0Y2gtZ2xvYi5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzREFBc0Q7QUFDdEQseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixnREFBZ0Q7QUFDaEQsdURBQThFO0FBQzlFLG1DQUFpRTtBQUVqRTs7OztHQUlHO0FBRUgsSUFBQSxlQUFTLEVBQ1AsdURBQXVELEVBQ3ZELElBQUEsd0JBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25DLE1BQU0sRUFBRSxHQUFHLElBQUEsb0NBQWtCLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLHVDQUFxQixFQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUUxRCx5Q0FBeUM7SUFDekMsTUFBTSxjQUFjLEdBQXlELEVBQUUsQ0FBQztJQUVoRixpREFBaUQ7SUFDakQsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ25DLE1BQU0sRUFBRTtZQUNOLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQ3BCLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDaEUsQ0FBQztZQUNELGVBQWUsRUFBRSxLQUFLLElBQW1CLEVBQUUsQ0FBQyxTQUF5QjtTQUN0RTtLQUNGLENBQUMsQ0FBQztJQUVILDRDQUE0QztJQUM1QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUV2RSxnREFBZ0Q7SUFDaEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtRQUM3QyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDcEIsT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsY0FBYyxDQUFDO1FBQy9DLFFBQVEsRUFBRSxPQUFPLENBQUMsWUFBWTtRQUM5QiwwRkFBMEY7UUFDMUYsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO0tBQ3hDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQztRQUNILDJDQUEyQztRQUMzQyxNQUFNLElBQUEsV0FBSyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxCLGtEQUFrRDtRQUNsRCxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxnQ0FBZ0MsQ0FBQyxDQUFDO1FBRTdELDBDQUEwQztRQUMxQyxNQUFNLElBQUEsV0FBSyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxCLDRDQUE0QztRQUM1QyxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2hELENBQUMsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLElBQUksaUJBQWlCO1lBQ25ELENBQUMsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLElBQUksa0JBQWtCO1lBQ3BELENBQUMsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQy9CLENBQUM7UUFFRixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksZUFBZSxDQUFDLE1BQU0sdUJBQXVCLENBQUMsQ0FBQztRQUN2RSxLQUFLLE1BQU0sS0FBSyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELHlFQUF5RTtRQUN6RSxNQUFNLG1CQUFtQixHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDbEQsQ0FBQyxDQUFDLElBQUksS0FBSyxtQkFBbUIsSUFBSSw0QkFBNEI7WUFDOUQsQ0FBQyxDQUFDLElBQUksS0FBSyxtQkFBbUIsQ0FDL0IsQ0FBQztRQUNGLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2QyxPQUFPLENBQUMsR0FBRyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7SUFDN0UsQ0FBQztZQUFTLENBQUM7UUFDVCw2REFBNkQ7UUFDN0QsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEIsTUFBTSxJQUFBLFdBQUssRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHFDQUFxQztRQUN4RCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM1QixFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHRvb2xraXQgZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHsgYXNzZW1ibHlGcm9tQ2RrQXBwRGlyLCB0b29sa2l0RnJvbUZpeHR1cmUgfSBmcm9tICcuL3Rvb2xraXQtaGVscGVycyc7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhEZWZhdWx0Rml4dHVyZSwgc2xlZXAgfSBmcm9tICcuLi8uLi9saWInO1xuXG4vKipcbiAqIEludGVncmF0aW9uIHRlc3QgZm9yIHRvb2xraXQtbGliIHdhdGNoIHdpdGggZ2xvYiBwYXR0ZXJuIG1hdGNoaW5nLlxuICpcbiAqIFRoZXNlIHRlc3RzIHZlcmlmeSB0aGF0IHRoZSBjaG9raWRhciB2NCBnbG9iIHBhdHRlcm4gZml4IGRldGVjdHMgZmlsZSBjaGFuZ2VzLlxuICovXG5cbmludGVnVGVzdChcbiAgJ3Rvb2xraXQgd2F0Y2ggZGV0ZWN0cyBmaWxlIGNoYW5nZXMgd2l0aCBnbG9iIHBhdHRlcm5zJyxcbiAgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgY29uc3QgdGsgPSB0b29sa2l0RnJvbUZpeHR1cmUoZml4dHVyZSk7XG4gICAgY29uc3QgYXNzZW1ibHkgPSBhd2FpdCBhc3NlbWJseUZyb21DZGtBcHBEaXIodGssIGZpeHR1cmUpO1xuXG4gICAgLy8gVHJhY2sgZXZlbnRzIHJlY2VpdmVkIGZyb20gdGhlIHdhdGNoZXJcbiAgICBjb25zdCByZWNlaXZlZEV2ZW50czogQXJyYXk8eyBjb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQ7IG1lc3NhZ2U6IHN0cmluZyB9PiA9IFtdO1xuXG4gICAgLy8gQ3JlYXRlIGEgY3VzdG9tIElvSG9zdCB0byBjYXB0dXJlIHdhdGNoIGV2ZW50c1xuICAgIGNvbnN0IGN1c3RvbVRrID0gbmV3IHRvb2xraXQuVG9vbGtpdCh7XG4gICAgICBpb0hvc3Q6IHtcbiAgICAgICAgbm90aWZ5OiBhc3luYyAobXNnKSA9PiB7XG4gICAgICAgICAgcmVjZWl2ZWRFdmVudHMucHVzaCh7IGNvZGU6IG1zZy5jb2RlLCBtZXNzYWdlOiBtc2cubWVzc2FnZSB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWVzdFJlc3BvbnNlOiBhc3luYyA8VD4oKTogUHJvbWlzZTxUPiA9PiB1bmRlZmluZWQgYXMgdW5rbm93biBhcyBULFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBhIHRlc3QgZmlsZSBpbiB0aGUgd2F0Y2ggZGlyZWN0b3J5XG4gICAgY29uc3QgdGVzdEZpbGUgPSBwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICd3YXRjaC10ZXN0LWZpbGUudHMnKTtcblxuICAgIC8vIFN0YXJ0IHdhdGNoaW5nIHdpdGggc3BlY2lmaWMgaW5jbHVkZSBwYXR0ZXJuc1xuICAgIGNvbnN0IHdhdGNoZXIgPSBhd2FpdCBjdXN0b21Uay53YXRjaChhc3NlbWJseSwge1xuICAgICAgaW5jbHVkZTogWycqKi8qLnRzJ10sXG4gICAgICBleGNsdWRlOiBbJyoqL25vZGVfbW9kdWxlcy8qKicsICcqKi8qLnRlc3QudHMnXSxcbiAgICAgIHdhdGNoRGlyOiBmaXh0dXJlLmludGVnVGVzdERpcixcbiAgICAgIC8vIFVzZSBhIGRlcGxveW1lbnQgbWV0aG9kIHRoYXQgd29uJ3QgYWN0dWFsbHkgZGVwbG95ICh3ZSBqdXN0IHdhbnQgdG8gdGVzdCBmaWxlIHdhdGNoaW5nKVxuICAgICAgZGVwbG95bWVudE1ldGhvZDogeyBtZXRob2Q6ICdob3Rzd2FwJyB9LFxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFdhaXQgYSBiaXQgZm9yIHRoZSB3YXRjaGVyIHRvIGluaXRpYWxpemVcbiAgICAgIGF3YWl0IHNsZWVwKDEwMDApO1xuXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgLnRzIGZpbGUgLSB0aGlzIHNob3VsZCBiZSBkZXRlY3RlZFxuICAgICAgZnMud3JpdGVGaWxlU3luYyh0ZXN0RmlsZSwgJ2V4cG9ydCBjb25zdCB3YXRjaFRlc3QgPSB0cnVlOycpO1xuXG4gICAgICAvLyBXYWl0IGZvciB0aGUgZmlsZSBjaGFuZ2UgdG8gYmUgZGV0ZWN0ZWRcbiAgICAgIGF3YWl0IHNsZWVwKDIwMDApO1xuXG4gICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgd2F0Y2hlciBkZXRlY3RlZCB0aGUgZmlsZVxuICAgICAgY29uc3Qgb2JzZXJ2aW5nRXZlbnRzID0gcmVjZWl2ZWRFdmVudHMuZmlsdGVyKGUgPT5cbiAgICAgICAgZS5jb2RlID09PSAnQ0RLX1RPT0xLSVRfSTUzMTEnIHx8IC8vIG9ic2VydmluZyBmaWxlXG4gICAgICAgIGUuY29kZSA9PT0gJ0NES19UT09MS0lUX0k1MzEyJyB8fCAvLyBkZXRlY3RlZCBjaGFuZ2VcbiAgICAgICAgZS5jb2RlID09PSAnQ0RLX1RPT0xLSVRfSTUzMTQnLCAvLyB0cmlnZ2VyaW5nIGRlcGxveVxuICAgICAgKTtcblxuICAgICAgZml4dHVyZS5sb2coYFJlY2VpdmVkICR7b2JzZXJ2aW5nRXZlbnRzLmxlbmd0aH0gd2F0Y2gtcmVsYXRlZCBldmVudHNgKTtcbiAgICAgIGZvciAoY29uc3QgZXZlbnQgb2Ygb2JzZXJ2aW5nRXZlbnRzKSB7XG4gICAgICAgIGZpeHR1cmUubG9nKGAgICR7ZXZlbnQuY29kZX06ICR7ZXZlbnQubWVzc2FnZS5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKTtcbiAgICAgIH1cblxuICAgICAgLy8gVGhlIHdhdGNoZXIgc2hvdWxkIGhhdmUgcmVjZWl2ZWQgdGhlIHJlYWR5IGV2ZW50IGFuZCBzdGFydGVkIG9ic2VydmluZ1xuICAgICAgY29uc3QgaGFzUmVhZHlPck9ic2VydmluZyA9IHJlY2VpdmVkRXZlbnRzLnNvbWUoZSA9PlxuICAgICAgICBlLmNvZGUgPT09ICdDREtfVE9PTEtJVF9JNTMxNCcgfHwgLy8gdHJpZ2dlcmluZyBpbml0aWFsIGRlcGxveVxuICAgICAgICBlLmNvZGUgPT09ICdDREtfVE9PTEtJVF9JNTMxMScsIC8vIG9ic2VydmluZyBmaWxlc1xuICAgICAgKTtcbiAgICAgIGV4cGVjdChoYXNSZWFkeU9yT2JzZXJ2aW5nKS50b0JlKHRydWUpO1xuXG4gICAgICBmaXh0dXJlLmxvZygn4pyTIFRvb2xraXQgd2F0Y2ggc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIGFuZCBkZXRlY3RlZCBmaWxlcycpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBDbGVhbiB1cCAtIGRpc3Bvc2UgYW5kIHdhaXQgZm9yIGFzeW5jIG9wZXJhdGlvbnMgdG8gc2V0dGxlXG4gICAgICBhd2FpdCB3YXRjaGVyLmRpc3Bvc2UoKTtcbiAgICAgIGF3YWl0IHNsZWVwKDEwMDApOyAvLyBBbGxvdyBhc3luYyBvcGVyYXRpb25zIHRvIGNvbXBsZXRlXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyh0ZXN0RmlsZSkpIHtcbiAgICAgICAgZnMudW5saW5rU3luYyh0ZXN0RmlsZSk7XG4gICAgICB9XG4gICAgfVxuICB9KSxcbik7XG4iXX0=