From 09bfaf8bf58a6137e28c0005e6674b1dd6070ec7 Mon Sep 17 00:00:00 2001 From: Kaizen Conroy Date: Tue, 8 Jul 2025 16:06:10 -0400 Subject: [PATCH 01/15] feat(cli): cli-telemetry status command --- ...-telemetry-adds-context-value.integtest.ts | 2 +- ...-cli-telemetry-reports-status.integtest.ts | 33 ++++++++++++++ packages/aws-cdk/lib/cli/cdk-toolkit.ts | 10 +++++ packages/aws-cdk/lib/cli/cli-config.ts | 5 +++ .../aws-cdk/lib/cli/cli-type-registry.json | 8 ++++ packages/aws-cdk/lib/cli/cli.ts | 13 +++--- .../aws-cdk/lib/cli/convert-to-user-input.ts | 2 + .../lib/cli/parse-command-line-arguments.ts | 6 +++ packages/aws-cdk/lib/cli/user-input.ts | 7 +++ .../aws-cdk/test/cli/cli-commands.test.ts | 4 +- .../aws-cdk/test/commands/telemetry.test.ts | 45 +++++++++++++++++++ 11 files changed, 127 insertions(+), 8 deletions(-) create mode 100644 packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts diff --git a/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-adds-context-value.integtest.ts b/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-adds-context-value.integtest.ts index 74e039bc2..deed4212e 100644 --- a/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-adds-context-value.integtest.ts +++ b/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-adds-context-value.integtest.ts @@ -45,7 +45,7 @@ integTest( ['cli-telemetry']: false, }); } finally { - await fs.unlink(path.join(fixture.integTestDir, 'cdk.context.json')); + await fs.unlink(contextFile); } }), ); diff --git a/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts b/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts new file mode 100644 index 000000000..14b3ff391 --- /dev/null +++ b/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts @@ -0,0 +1,33 @@ +import { promises as fs } from 'fs'; +import * as path from 'path'; +import { integTest, withDefaultFixture } from '../../../lib'; + +jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime + +integTest( + 'CLI Telemetry reports status', + withDefaultFixture(async (fixture) => { + const contextFile = path.join(fixture.integTestDir, 'cdk.context.json'); + const userContextFile = path.join(fixture.integTestDir, 'cdk.json'); + const context = { + existedBefore: 'this was here', + }; + await fs.writeFile( + contextFile, + JSON.stringify(context), + ); + try { + // default status is enabled + const output1 = await fixture.cdk(['cli-telemetry', '--status']); + expect(output1).toContain('Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable.'); + + // disable status + await fs.writeFile(userContextFile, JSON.stringify({ context: { 'cli-telemetry': false }})); + const output2 = await fixture.cdk(['cli-telemetry', '--status']); + expect(output2).toContain('Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable.'); + } finally { + await fs.unlink(contextFile); + await fs.unlink(userContextFile); + } + }), +); diff --git a/packages/aws-cdk/lib/cli/cdk-toolkit.ts b/packages/aws-cdk/lib/cli/cdk-toolkit.ts index 4b900b1df..3bd5aca1e 100644 --- a/packages/aws-cdk/lib/cli/cdk-toolkit.ts +++ b/packages/aws-cdk/lib/cli/cdk-toolkit.ts @@ -52,6 +52,7 @@ import { serializeStructure, validateSnsTopicArn, } from '../util'; +import { canCollectTelemetry } from './telemetry/collect-telemetry'; // Must use a require() otherwise esbuild complains about calling a namespace // eslint-disable-next-line @typescript-eslint/no-require-imports,@typescript-eslint/consistent-type-imports @@ -195,6 +196,15 @@ export class CdkToolkit { await this.props.configuration.saveContext(); } + public async cliTelemetryStatus() { + const currentStatus = canCollectTelemetry(this.props.configuration.context); + if (currentStatus) { + info('Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable.'); + } else { + info('Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable.'); + } + } + public async cliTelemetry(enable: boolean) { this.props.configuration.context.set('cli-telemetry', enable); await this.props.configuration.saveContext(); diff --git a/packages/aws-cdk/lib/cli/cli-config.ts b/packages/aws-cdk/lib/cli/cli-config.ts index 9c48126b0..84dde5efc 100644 --- a/packages/aws-cdk/lib/cli/cli-config.ts +++ b/packages/aws-cdk/lib/cli/cli-config.ts @@ -476,6 +476,11 @@ export async function makeConfig(): Promise { desc: 'Disable anonymous telemetry', conflicts: 'enable', }, + status: { + type: 'boolean', + desc: 'Report telemetry opt-in/out status', + conflicts: ['enable', 'disable'], + }, }, }, }, diff --git a/packages/aws-cdk/lib/cli/cli-type-registry.json b/packages/aws-cdk/lib/cli/cli-type-registry.json index 8d397ac86..debd4dc9c 100644 --- a/packages/aws-cdk/lib/cli/cli-type-registry.json +++ b/packages/aws-cdk/lib/cli/cli-type-registry.json @@ -935,6 +935,14 @@ "type": "boolean", "desc": "Disable anonymous telemetry", "conflicts": "enable" + }, + "status": { + "type": "boolean", + "desc": "Report telemetry opt-in/out status", + "conflicts": [ + "enable", + "disable" + ] } } } diff --git a/packages/aws-cdk/lib/cli/cli.ts b/packages/aws-cdk/lib/cli/cli.ts index e5648b94d..1d223b914 100644 --- a/packages/aws-cdk/lib/cli/cli.ts +++ b/packages/aws-cdk/lib/cli/cli.ts @@ -456,13 +456,16 @@ export async function exec(args: string[], synthesizer?: Synthesizer): Promise): any { type: 'boolean', desc: 'Disable anonymous telemetry', conflicts: 'enable', + }) + .option('status', { + default: undefined, + type: 'boolean', + desc: 'Report telemetry opt-in/out status', + conflicts: ['enable', 'disable'], }), ) .version(helpers.cliVersion()) diff --git a/packages/aws-cdk/lib/cli/user-input.ts b/packages/aws-cdk/lib/cli/user-input.ts index 068bc6c4b..d4048f0bd 100644 --- a/packages/aws-cdk/lib/cli/user-input.ts +++ b/packages/aws-cdk/lib/cli/user-input.ts @@ -1477,4 +1477,11 @@ export interface CliTelemetryOptions { * @default - undefined */ readonly disable?: boolean; + + /** + * Report telemetry opt-in/out status + * + * @default - undefined + */ + readonly status?: boolean; } diff --git a/packages/aws-cdk/test/cli/cli-commands.test.ts b/packages/aws-cdk/test/cli/cli-commands.test.ts index 9107343d2..9e8f93081 100644 --- a/packages/aws-cdk/test/cli/cli-commands.test.ts +++ b/packages/aws-cdk/test/cli/cli-commands.test.ts @@ -46,9 +46,9 @@ describe('context', () => { }); describe('cli-telemetry', () => { - test('requires either --enable or --disable flag', async () => { + test('requires a flag to be set', async () => { await expect(exec(['cli-telemetry'])) .rejects - .toThrow("Must specify either '--enable' or '--disable'"); + .toThrow("Must specify '--enable', '--disable', or '--status'"); }); }); diff --git a/packages/aws-cdk/test/commands/telemetry.test.ts b/packages/aws-cdk/test/commands/telemetry.test.ts index 722f4f63d..6760d2286 100644 --- a/packages/aws-cdk/test/commands/telemetry.test.ts +++ b/packages/aws-cdk/test/commands/telemetry.test.ts @@ -9,8 +9,12 @@ jest.mock('../../lib/logging', () => ({ describe('telemetry command', () => { let configuration: Configuration; let toolkit: CdkToolkit; + const CLI_TELEMETRY = process.env.CLI_TELEMETRY; beforeEach(() => { + // TODO: delete after telemetry is launched + process.env.CLI_TELEMETRY = 'true'; + configuration = new Configuration(); toolkit = new CdkToolkit({ configuration, @@ -21,6 +25,10 @@ describe('telemetry command', () => { jest.clearAllMocks(); }); + afterEach(() => { + process.env.CLI_TELEMETRY = CLI_TELEMETRY; + }) + test('enable telemetry saves setting and displays message', async () => { // WHEN await toolkit.cliTelemetry(true); @@ -38,4 +46,41 @@ describe('telemetry command', () => { expect(configuration.context.get('cli-telemetry')).toBe(false); expect(info).toHaveBeenCalledWith('Telemetry disabled'); }); + + test('status reports current telemetry status -- enabled by default', async () => { + // WHEN + await toolkit.cliTelemetryStatus(); + + // THEN + expect(info).toHaveBeenCalledWith('Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable.'); + }); + + test('status reports current telemetry status -- enabled intentionally', async () => { + // WHEN + configuration.context.set('cli-telemetry', true); + await toolkit.cliTelemetryStatus(); + + // THEN + expect(info).toHaveBeenCalledWith('Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable.'); + }); + + test('status reports current telemetry status -- disabled via context', async () => { + // WHEN + configuration.context.set('cli-telemetry', false); + await toolkit.cliTelemetryStatus(); + + // THEN + expect(info).toHaveBeenCalledWith('Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable.'); + }); + + test('status reports current telemetry status -- disabled via env var', async () => { + // WHEN + const CDK_CLI_DISABLE_TELEMETRY = process.env.CDK_CLI_DISABLE_TELEMETRY; + process.env.CDK_CLI_DISABLE_TELEMETRY = 'true'; + await toolkit.cliTelemetryStatus(); + + // THEN + expect(info).toHaveBeenCalledWith('Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable.'); + process.env.CDK_CLI_DISABLE_TELEMETRY = CDK_CLI_DISABLE_TELEMETRY; + }); }); From dc20dcc735dbdc92799ba6d5327c30bb3e6ac30c Mon Sep 17 00:00:00 2001 From: Kaizen Conroy Date: Tue, 8 Jul 2025 16:16:01 -0400 Subject: [PATCH 02/15] add readme for cli-telemetry command --- packages/aws-cdk/README.md | 63 ++++++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/packages/aws-cdk/README.md b/packages/aws-cdk/README.md index b1dcf95b3..46022eec2 100644 --- a/packages/aws-cdk/README.md +++ b/packages/aws-cdk/README.md @@ -11,26 +11,27 @@ The AWS CDK Toolkit provides the `cdk` command-line interface that can be used to work with AWS CDK applications. This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. -| Command | Description | -| ------------------------------------- | --------------------------------------------------------------------------------- | -| [`cdk docs`](#cdk-docs) | Access the online documentation | -| [`cdk init`](#cdk-init) | Start a new CDK project (app or library) | -| [`cdk list`](#cdk-list) | List stacks and their dependencies in an application | -| [`cdk synth`](#cdk-synth) | Synthesize a CDK app to CloudFormation template(s) | -| [`cdk diff`](#cdk-diff) | Diff stacks against current state | -| [`cdk deploy`](#cdk-deploy) | Deploy a stack into an AWS account | -| [`cdk rollback`](#cdk-rollback) | Roll back a failed deployment | -| [`cdk import`](#cdk-import) | Import existing AWS resources into a CDK stack | -| [`cdk migrate`](#cdk-migrate) | Migrate AWS resources, CloudFormation stacks, and CloudFormation templates to CDK | -| [`cdk watch`](#cdk-watch) | Watches a CDK app for deployable and hotswappable changes | -| [`cdk destroy`](#cdk-destroy) | Deletes a stack from an AWS account | -| [`cdk bootstrap`](#cdk-bootstrap) | Deploy a toolkit stack to support deploying large stacks & artifacts | -| [`cdk gc`](#cdk-gc) | Garbage collect assets associated with the bootstrapped stack | -| [`cdk doctor`](#cdk-doctor) | Inspect the environment and produce information useful for troubleshooting | -| [`cdk acknowledge`](#cdk-acknowledge) | Acknowledge (and hide) a notice by issue number | -| [`cdk notices`](#cdk-notices) | List all relevant notices for the application | -| [`cdk refactor`](#cdk-refactor) | Moves resources between stacks or within the same stack | -| [`cdk drift`](#cdk-drift) | Detect drifts in the given CloudFormation stack(s) | +| Command | Description | +| ---------------------------------------- | --------------------------------------------------------------------------------- | +| [`cdk docs`](#cdk-docs) | Access the online documentation | +| [`cdk init`](#cdk-init) | Start a new CDK project (app or library) | +| [`cdk list`](#cdk-list) | List stacks and their dependencies in an application | +| [`cdk synth`](#cdk-synth) | Synthesize a CDK app to CloudFormation template(s) | +| [`cdk diff`](#cdk-diff) | Diff stacks against current state | +| [`cdk deploy`](#cdk-deploy) | Deploy a stack into an AWS account | +| [`cdk rollback`](#cdk-rollback) | Roll back a failed deployment | +| [`cdk import`](#cdk-import) | Import existing AWS resources into a CDK stack | +| [`cdk migrate`](#cdk-migrate) | Migrate AWS resources, CloudFormation stacks, and CloudFormation templates to CDK | +| [`cdk watch`](#cdk-watch) | Watches a CDK app for deployable and hotswappable changes | +| [`cdk destroy`](#cdk-destroy) | Deletes a stack from an AWS account | +| [`cdk bootstrap`](#cdk-bootstrap) | Deploy a toolkit stack to support deploying large stacks & artifacts | +| [`cdk gc`](#cdk-gc) | Garbage collect assets associated with the bootstrapped stack | +| [`cdk doctor`](#cdk-doctor) | Inspect the environment and produce information useful for troubleshooting | +| [`cdk acknowledge`](#cdk-acknowledge) | Acknowledge (and hide) a notice by issue number | +| [`cdk notices`](#cdk-notices) | List all relevant notices for the application | +| [`cdk refactor`](#cdk-refactor) | Moves resources between stacks or within the same stack | +| [`cdk drift`](#cdk-drift) | Detect drifts in the given CloudFormation stack(s) | +| [`cdk cli-telemetry](#cdk-cli-telemetry) | Enable or disable cli telemetry collection | ## Common topics @@ -1208,6 +1209,28 @@ $ # Detect drift against the currently-deployed stack with the verbose flag enab $ cdk drift --verbose ``` +### `cdk cli-telemetry` + +Enables or disables cli telemetry collection for your local CDK App. Records your +choice in `cdk.context.json`. + +```bash +$ # Disable telemetry +$ cdk cli-telemetry --disable + +$ # Enable telemetry +$ cdk cli-telemetry --enable +``` + +You can also check the current status on whether your CDK App is opted in or out of +cli telemetry collection. Note that this takes into account all methods of disabling +cli telemetry, including environment variables and preferences set globally in `~/.cdk.json`. + +```bash +$ # Check the current status of telemetry +$ cdk cli-telemetry -status +``` + ## Global Options ### `unstable` From 4b7a6c280bff495971780cba40ba3e81f624d6f2 Mon Sep 17 00:00:00 2001 From: Kaizen Conroy Date: Tue, 8 Jul 2025 16:19:55 -0400 Subject: [PATCH 03/15] add collect telemetry --- .../lib/cli/telemetry/collect-telemetry.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 packages/aws-cdk/lib/cli/telemetry/collect-telemetry.ts diff --git a/packages/aws-cdk/lib/cli/telemetry/collect-telemetry.ts b/packages/aws-cdk/lib/cli/telemetry/collect-telemetry.ts new file mode 100644 index 000000000..d359d5b89 --- /dev/null +++ b/packages/aws-cdk/lib/cli/telemetry/collect-telemetry.ts @@ -0,0 +1,17 @@ +import type { Context } from '../../api/context'; + +/** + * Whether or not we collect telemetry + */ +export function canCollectTelemetry(context: Context): boolean { + // TODO: remove this at launch. for now, this is an opt-in + if (process.env.CLI_TELEMETRY !== 'true') { + return false; + } + + if ((['true', '1'].includes(process.env.CDK_CLI_DISABLE_TELEMETRY ?? '')) || ['false', false].includes(context.get('cli-telemetry'))) { + return false; + } + + return true; +} From 0059d1b5bedc1c63759647a7db80be56f33a816b Mon Sep 17 00:00:00 2001 From: Kaizen Conroy Date: Tue, 8 Jul 2025 16:24:43 -0400 Subject: [PATCH 04/15] add collect-tleemetry --- packages/aws-cdk/lib/cli/cdk-toolkit.ts | 4 +-- .../lib/cli/telemetry/collect-telemetry.ts | 5 --- .../cli/telemetry/collect-telemetry.test.ts | 35 +++++++++++++++++++ .../aws-cdk/test/commands/telemetry.test.ts | 16 +++------ 4 files changed, 41 insertions(+), 19 deletions(-) create mode 100644 packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts diff --git a/packages/aws-cdk/lib/cli/cdk-toolkit.ts b/packages/aws-cdk/lib/cli/cdk-toolkit.ts index 3bd5aca1e..c3cdc467f 100644 --- a/packages/aws-cdk/lib/cli/cdk-toolkit.ts +++ b/packages/aws-cdk/lib/cli/cdk-toolkit.ts @@ -199,9 +199,9 @@ export class CdkToolkit { public async cliTelemetryStatus() { const currentStatus = canCollectTelemetry(this.props.configuration.context); if (currentStatus) { - info('Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable.'); + info('CLI Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable for this CDK App.'); } else { - info('Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable.'); + info('CLI Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable for this CDK App.'); } } diff --git a/packages/aws-cdk/lib/cli/telemetry/collect-telemetry.ts b/packages/aws-cdk/lib/cli/telemetry/collect-telemetry.ts index d359d5b89..82461c2e8 100644 --- a/packages/aws-cdk/lib/cli/telemetry/collect-telemetry.ts +++ b/packages/aws-cdk/lib/cli/telemetry/collect-telemetry.ts @@ -4,11 +4,6 @@ import type { Context } from '../../api/context'; * Whether or not we collect telemetry */ export function canCollectTelemetry(context: Context): boolean { - // TODO: remove this at launch. for now, this is an opt-in - if (process.env.CLI_TELEMETRY !== 'true') { - return false; - } - if ((['true', '1'].includes(process.env.CDK_CLI_DISABLE_TELEMETRY ?? '')) || ['false', false].includes(context.get('cli-telemetry'))) { return false; } diff --git a/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts b/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts new file mode 100644 index 000000000..0da4a256c --- /dev/null +++ b/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts @@ -0,0 +1,35 @@ +import { Context } from '../../../lib/api/context'; +import { canCollectTelemetry } from '../../../lib/cli/telemetry/collect-telemetry'; + +describe(canCollectTelemetry, () => { + let context: Context; + + beforeEach(() => { + context = new Context(); + }); + + test('returns true by default', async () => { + expect(canCollectTelemetry(context)).toBeTruthy(); + }); + + test('returns false if env variable is set', async () => { + process.env.DISABLE_CLI_TELEMETRY = 'true'; + expect(canCollectTelemetry(context)).toBeTruthy(); + }); + + test('returns false if context is set to false', async () => { + context.set('cli-telemetry', false); + expect(canCollectTelemetry(context)).toBeFalsy(); + + context.set('cli-telemetry', 'false'); + expect(canCollectTelemetry(context)).toBeFalsy(); + }); + + test('returns true if context is set to true', async () => { + context.set('cli-telemetry', true); + expect(canCollectTelemetry(context)).toBeTruthy(); + + context.set('cli-telemetry', 'true'); + expect(canCollectTelemetry(context)).toBeTruthy(); + }); +}); diff --git a/packages/aws-cdk/test/commands/telemetry.test.ts b/packages/aws-cdk/test/commands/telemetry.test.ts index 6760d2286..eece0adb3 100644 --- a/packages/aws-cdk/test/commands/telemetry.test.ts +++ b/packages/aws-cdk/test/commands/telemetry.test.ts @@ -9,12 +9,8 @@ jest.mock('../../lib/logging', () => ({ describe('telemetry command', () => { let configuration: Configuration; let toolkit: CdkToolkit; - const CLI_TELEMETRY = process.env.CLI_TELEMETRY; beforeEach(() => { - // TODO: delete after telemetry is launched - process.env.CLI_TELEMETRY = 'true'; - configuration = new Configuration(); toolkit = new CdkToolkit({ configuration, @@ -25,10 +21,6 @@ describe('telemetry command', () => { jest.clearAllMocks(); }); - afterEach(() => { - process.env.CLI_TELEMETRY = CLI_TELEMETRY; - }) - test('enable telemetry saves setting and displays message', async () => { // WHEN await toolkit.cliTelemetry(true); @@ -52,7 +44,7 @@ describe('telemetry command', () => { await toolkit.cliTelemetryStatus(); // THEN - expect(info).toHaveBeenCalledWith('Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable.'); + expect(info).toHaveBeenCalledWith('CLI Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable for this CDK App.'); }); test('status reports current telemetry status -- enabled intentionally', async () => { @@ -61,7 +53,7 @@ describe('telemetry command', () => { await toolkit.cliTelemetryStatus(); // THEN - expect(info).toHaveBeenCalledWith('Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable.'); + expect(info).toHaveBeenCalledWith('CLI Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable for this CDK App.'); }); test('status reports current telemetry status -- disabled via context', async () => { @@ -70,7 +62,7 @@ describe('telemetry command', () => { await toolkit.cliTelemetryStatus(); // THEN - expect(info).toHaveBeenCalledWith('Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable.'); + expect(info).toHaveBeenCalledWith('CLI Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable for this CDK App.'); }); test('status reports current telemetry status -- disabled via env var', async () => { @@ -80,7 +72,7 @@ describe('telemetry command', () => { await toolkit.cliTelemetryStatus(); // THEN - expect(info).toHaveBeenCalledWith('Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable.'); + expect(info).toHaveBeenCalledWith('CLI Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable for this CDK App.'); process.env.CDK_CLI_DISABLE_TELEMETRY = CDK_CLI_DISABLE_TELEMETRY; }); }); From f959644023f45147947c2b73517d1c387234030c Mon Sep 17 00:00:00 2001 From: Kaizen Conroy <36202692+kaizencc@users.noreply.github.com> Date: Tue, 8 Jul 2025 16:25:10 -0400 Subject: [PATCH 05/15] Update packages/aws-cdk/README.md --- packages/aws-cdk/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/aws-cdk/README.md b/packages/aws-cdk/README.md index 46022eec2..64937f98f 100644 --- a/packages/aws-cdk/README.md +++ b/packages/aws-cdk/README.md @@ -1228,7 +1228,7 @@ cli telemetry, including environment variables and preferences set globally in ` ```bash $ # Check the current status of telemetry -$ cdk cli-telemetry -status +$ cdk cli-telemetry --status ``` ## Global Options From db89333030b51ecd07dc9e7026d51c28e3a2e405 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 8 Jul 2025 20:31:28 +0000 Subject: [PATCH 06/15] chore: self mutation Signed-off-by: github-actions --- .../cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts b/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts index 14b3ff391..a3a20e6e8 100644 --- a/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts +++ b/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts @@ -22,7 +22,7 @@ integTest( expect(output1).toContain('Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable.'); // disable status - await fs.writeFile(userContextFile, JSON.stringify({ context: { 'cli-telemetry': false }})); + await fs.writeFile(userContextFile, JSON.stringify({ context: { 'cli-telemetry': false } })); const output2 = await fixture.cdk(['cli-telemetry', '--status']); expect(output2).toContain('Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable.'); } finally { From 750b54870e7f23098798c5bede484a484db86687 Mon Sep 17 00:00:00 2001 From: Kaizen Conroy <36202692+kaizencc@users.noreply.github.com> Date: Tue, 8 Jul 2025 17:00:54 -0400 Subject: [PATCH 07/15] Apply suggestions from code review --- .../cdk-cli-telemetry-reports-status.integtest.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts b/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts index a3a20e6e8..1561feea6 100644 --- a/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts +++ b/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts @@ -19,12 +19,12 @@ integTest( try { // default status is enabled const output1 = await fixture.cdk(['cli-telemetry', '--status']); - expect(output1).toContain('Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable.'); + expect(output1).toContain('CLI Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable for this CDK App.'); // disable status await fs.writeFile(userContextFile, JSON.stringify({ context: { 'cli-telemetry': false } })); const output2 = await fixture.cdk(['cli-telemetry', '--status']); - expect(output2).toContain('Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable.'); + expect(output2).toContain('CLI Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable for this CDK App.'); } finally { await fs.unlink(contextFile); await fs.unlink(userContextFile); From 106ce2de537eeeb7eed9bad11c22dfba9c435a37 Mon Sep 17 00:00:00 2001 From: Kaizen Conroy Date: Fri, 11 Jul 2025 12:59:11 -0400 Subject: [PATCH 08/15] fix from merge --- packages/aws-cdk/lib/cli/cdk-toolkit.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/aws-cdk/lib/cli/cdk-toolkit.ts b/packages/aws-cdk/lib/cli/cdk-toolkit.ts index bd1b0833b..fd5190366 100644 --- a/packages/aws-cdk/lib/cli/cdk-toolkit.ts +++ b/packages/aws-cdk/lib/cli/cdk-toolkit.ts @@ -210,9 +210,9 @@ export class CdkToolkit { public async cliTelemetryStatus() { const currentStatus = canCollectTelemetry(this.props.configuration.context); if (currentStatus) { - info('CLI Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable for this CDK App.'); + await this.ioHost.asIoHelper().defaults.info('CLI Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable for this CDK App.'); } else { - info('CLI Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable for this CDK App.'); + await this.ioHost.asIoHelper().defaults.info('CLI Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable for this CDK App.'); } } From 60356b7a2bc25e56e622214afa0e2aa447d9f619 Mon Sep 17 00:00:00 2001 From: Kaizen Conroy Date: Wed, 16 Jul 2025 15:09:17 -0400 Subject: [PATCH 09/15] pr feedback --- .../cdk-cli-telemetry-reports-status.integtest.ts | 13 ++----------- packages/aws-cdk/README.md | 7 +++++-- packages/aws-cdk/lib/cli/cdk-toolkit.ts | 8 ++++---- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts b/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts index 1561feea6..f22b6b8a9 100644 --- a/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts +++ b/packages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.ts @@ -7,26 +7,17 @@ jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-c integTest( 'CLI Telemetry reports status', withDefaultFixture(async (fixture) => { - const contextFile = path.join(fixture.integTestDir, 'cdk.context.json'); const userContextFile = path.join(fixture.integTestDir, 'cdk.json'); - const context = { - existedBefore: 'this was here', - }; - await fs.writeFile( - contextFile, - JSON.stringify(context), - ); try { // default status is enabled const output1 = await fixture.cdk(['cli-telemetry', '--status']); - expect(output1).toContain('CLI Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable for this CDK App.'); + expect(output1).toContain('CLI Telemetry is enabled. See https://github.com/aws/aws-cdk-cli/tree/main/packages/aws-cdk#cdk-cli-telemetry for ways to disable.'); // disable status await fs.writeFile(userContextFile, JSON.stringify({ context: { 'cli-telemetry': false } })); const output2 = await fixture.cdk(['cli-telemetry', '--status']); - expect(output2).toContain('CLI Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable for this CDK App.'); + expect(output2).toContain('CLI Telemetry is disabled. See https://github.com/aws/aws-cdk-cli/tree/main/packages/aws-cdk#cdk-cli-telemetry for ways to enable.'); } finally { - await fs.unlink(contextFile); await fs.unlink(userContextFile); } }), diff --git a/packages/aws-cdk/README.md b/packages/aws-cdk/README.md index b2e8ce107..06583732c 100644 --- a/packages/aws-cdk/README.md +++ b/packages/aws-cdk/README.md @@ -1217,7 +1217,8 @@ $ cdk drift --verbose ### `cdk cli-telemetry` Enables or disables cli telemetry collection for your local CDK App. Records your -choice in `cdk.context.json`. +choice in `cdk.context.json`. You can also set your preference manually in your +`~/.cdk.json` file or `/cdk.json` file. ```bash $ # Disable telemetry @@ -1229,7 +1230,9 @@ $ cdk cli-telemetry --enable You can also check the current status on whether your CDK App is opted in or out of cli telemetry collection. Note that this takes into account all methods of disabling -cli telemetry, including environment variables and preferences set globally in `~/.cdk.json`. +cli telemetry, including environment variables and +[context values](https://docs.aws.amazon.com/cdk/v2/guide/context.html) +that can be set in many different ways (such as `~/.cdk.json`). ```bash $ # Check the current status of telemetry diff --git a/packages/aws-cdk/lib/cli/cdk-toolkit.ts b/packages/aws-cdk/lib/cli/cdk-toolkit.ts index fd5190366..184a8aeb9 100644 --- a/packages/aws-cdk/lib/cli/cdk-toolkit.ts +++ b/packages/aws-cdk/lib/cli/cdk-toolkit.ts @@ -208,11 +208,11 @@ export class CdkToolkit { } public async cliTelemetryStatus() { - const currentStatus = canCollectTelemetry(this.props.configuration.context); - if (currentStatus) { - await this.ioHost.asIoHelper().defaults.info('CLI Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable for this CDK App.'); + const canCollect = canCollectTelemetry(this.props.configuration.context); + if (canCollect) { + await this.ioHost.asIoHelper().defaults.info('CLI Telemetry is enabled. See https://github.com/aws/aws-cdk-cli/tree/main/packages/aws-cdk#cdk-cli-telemetry for ways to disable.'); } else { - await this.ioHost.asIoHelper().defaults.info('CLI Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable for this CDK App.'); + await this.ioHost.asIoHelper().defaults.info('CLI Telemetry is disabled. See https://github.com/aws/aws-cdk-cli/tree/main/packages/aws-cdk#cdk-cli-telemetry for ways to enable.'); } } From 29cff309c5ac5d978b4538a420d0575520ed6eb9 Mon Sep 17 00:00:00 2001 From: Kaizen Conroy Date: Wed, 16 Jul 2025 15:25:28 -0400 Subject: [PATCH 10/15] update tests --- packages/aws-cdk/test/_helpers/with-env.ts | 16 +++++++++++++ .../cli/telemetry/collect-telemetry.test.ts | 8 +++++-- .../aws-cdk/test/commands/telemetry.test.ts | 23 +++++++++++-------- 3 files changed, 35 insertions(+), 12 deletions(-) create mode 100644 packages/aws-cdk/test/_helpers/with-env.ts diff --git a/packages/aws-cdk/test/_helpers/with-env.ts b/packages/aws-cdk/test/_helpers/with-env.ts new file mode 100644 index 000000000..bd552a93f --- /dev/null +++ b/packages/aws-cdk/test/_helpers/with-env.ts @@ -0,0 +1,16 @@ +/** + * Run code with additional environment variables + */ +export async function withEnv(block: () => Promise, env: Record = {}) { + const originalEnv = process.env; + try { + process.env = { + ...originalEnv, + ...env, + }; + + return await block(); + } finally { + process.env = originalEnv; + } +} diff --git a/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts b/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts index 0da4a256c..f2546aac3 100644 --- a/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts +++ b/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts @@ -1,5 +1,6 @@ import { Context } from '../../../lib/api/context'; import { canCollectTelemetry } from '../../../lib/cli/telemetry/collect-telemetry'; +import { withEnv } from '../../_helpers/with-env'; describe(canCollectTelemetry, () => { let context: Context; @@ -13,8 +14,11 @@ describe(canCollectTelemetry, () => { }); test('returns false if env variable is set', async () => { - process.env.DISABLE_CLI_TELEMETRY = 'true'; - expect(canCollectTelemetry(context)).toBeTruthy(); + withEnv(async () => { + expect(canCollectTelemetry(context)).toBeTruthy(); + }, { + DISABLE_CLI_TELEMETRY: 'true', + }); }); test('returns false if context is set to false', async () => { diff --git a/packages/aws-cdk/test/commands/telemetry.test.ts b/packages/aws-cdk/test/commands/telemetry.test.ts index c24440d81..c5afdc6c4 100644 --- a/packages/aws-cdk/test/commands/telemetry.test.ts +++ b/packages/aws-cdk/test/commands/telemetry.test.ts @@ -1,6 +1,7 @@ import { CdkToolkit } from '../../lib/cli/cdk-toolkit'; import { CliIoHost } from '../../lib/cli/io-host'; import { Configuration } from '../../lib/cli/user-configuration'; +import { withEnv } from '../_helpers/with-env'; const ioHost = CliIoHost.instance({}, true); const ioHelper = ioHost.asIoHelper(); @@ -45,7 +46,7 @@ describe('telemetry command', () => { await toolkit.cliTelemetryStatus(); // THEN - expect(info).toHaveBeenCalledWith('CLI Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable for this CDK App.'); + expect(notifySpy).toHaveBeenCalledWith(expect.objectContaining({ level: 'info', message: 'CLI Telemetry is enabled. See https://github.com/aws/aws-cdk-cli/tree/main/packages/aws-cdk#cdk-cli-telemetry for ways to disable.' })); }); test('status reports current telemetry status -- enabled intentionally', async () => { @@ -54,7 +55,7 @@ describe('telemetry command', () => { await toolkit.cliTelemetryStatus(); // THEN - expect(info).toHaveBeenCalledWith('CLI Telemetry is enabled. Run \'cdk cli-telemetry --disable\' to disable for this CDK App.'); + expect(notifySpy).toHaveBeenCalledWith(expect.objectContaining({ level: 'info', message: 'CLI Telemetry is enabled. See https://github.com/aws/aws-cdk-cli/tree/main/packages/aws-cdk#cdk-cli-telemetry for ways to disable.' })); }); test('status reports current telemetry status -- disabled via context', async () => { @@ -63,17 +64,19 @@ describe('telemetry command', () => { await toolkit.cliTelemetryStatus(); // THEN - expect(info).toHaveBeenCalledWith('CLI Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable for this CDK App.'); + expect(notifySpy).toHaveBeenCalledWith(expect.objectContaining({ level: 'info', message: 'CLI Telemetry is disabled. See https://github.com/aws/aws-cdk-cli/tree/main/packages/aws-cdk#cdk-cli-telemetry for ways to enable.' })); }); test('status reports current telemetry status -- disabled via env var', async () => { - // WHEN - const CDK_CLI_DISABLE_TELEMETRY = process.env.CDK_CLI_DISABLE_TELEMETRY; - process.env.CDK_CLI_DISABLE_TELEMETRY = 'true'; - await toolkit.cliTelemetryStatus(); + withEnv(async () => { + // WHEN + process.env.CDK_CLI_DISABLE_TELEMETRY = 'true'; + await toolkit.cliTelemetryStatus(); - // THEN - expect(info).toHaveBeenCalledWith('CLI Telemetry is disabled. Run \'cdk cli-telemetry --enable\' to enable for this CDK App.'); - process.env.CDK_CLI_DISABLE_TELEMETRY = CDK_CLI_DISABLE_TELEMETRY; + // THEN + expect(notifySpy).toHaveBeenCalledWith(expect.objectContaining({ level: 'info', message: 'CLI Telemetry is disabled. See https://github.com/aws/aws-cdk-cli/tree/main/packages/aws-cdk#cdk-cli-telemetry for ways to enable.' })); + }, { + CDK_CLI_DISABLE_TELEMETRY: 'true', + }); }); }); From 66a93eac0b2387056c5353e0deb49bcc1012e371 Mon Sep 17 00:00:00 2001 From: Kaizen Conroy Date: Wed, 16 Jul 2025 16:05:23 -0400 Subject: [PATCH 11/15] await --- packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts | 2 +- packages/aws-cdk/test/commands/telemetry.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts b/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts index f2546aac3..82b8dbdb6 100644 --- a/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts +++ b/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts @@ -14,7 +14,7 @@ describe(canCollectTelemetry, () => { }); test('returns false if env variable is set', async () => { - withEnv(async () => { + await withEnv(async () => { expect(canCollectTelemetry(context)).toBeTruthy(); }, { DISABLE_CLI_TELEMETRY: 'true', diff --git a/packages/aws-cdk/test/commands/telemetry.test.ts b/packages/aws-cdk/test/commands/telemetry.test.ts index c5afdc6c4..f032f36a5 100644 --- a/packages/aws-cdk/test/commands/telemetry.test.ts +++ b/packages/aws-cdk/test/commands/telemetry.test.ts @@ -68,7 +68,7 @@ describe('telemetry command', () => { }); test('status reports current telemetry status -- disabled via env var', async () => { - withEnv(async () => { + await withEnv(async () => { // WHEN process.env.CDK_CLI_DISABLE_TELEMETRY = 'true'; await toolkit.cliTelemetryStatus(); From d205edf6c012a5cb6ff1f28d25718dc7258b9ac1 Mon Sep 17 00:00:00 2001 From: Eli Polonsky Date: Thu, 17 Jul 2025 00:46:07 -0400 Subject: [PATCH 12/15] Update packages/aws-cdk/README.md --- packages/aws-cdk/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/aws-cdk/README.md b/packages/aws-cdk/README.md index 06583732c..daca89cb6 100644 --- a/packages/aws-cdk/README.md +++ b/packages/aws-cdk/README.md @@ -1217,7 +1217,7 @@ $ cdk drift --verbose ### `cdk cli-telemetry` Enables or disables cli telemetry collection for your local CDK App. Records your -choice in `cdk.context.json`. You can also set your preference manually in your +choice in `cdk.context.json`. You can also set your preference manually under the `context` key in your `~/.cdk.json` file or `/cdk.json` file. ```bash From 6871bdc26e93bf74881429ef0c5a166a7b293c7f Mon Sep 17 00:00:00 2001 From: Kaizen Conroy Date: Thu, 17 Jul 2025 09:08:35 -0400 Subject: [PATCH 13/15] fix tests --- .../test/cli/telemetry/collect-telemetry.test.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts b/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts index 82b8dbdb6..1dd2666f3 100644 --- a/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts +++ b/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts @@ -13,11 +13,19 @@ describe(canCollectTelemetry, () => { expect(canCollectTelemetry(context)).toBeTruthy(); }); - test('returns false if env variable is set', async () => { + test('returns false if env variable is set to true', async () => { await withEnv(async () => { - expect(canCollectTelemetry(context)).toBeTruthy(); + expect(canCollectTelemetry(context)).toBeFalsy(); }, { - DISABLE_CLI_TELEMETRY: 'true', + CDK_CLI_DISABLE_TELEMETRY: 'true', + }); + }); + + test('returns false if env variable is set to 1', async () => { + await withEnv(async () => { + expect(canCollectTelemetry(context)).toBeFalsy(); + }, { + CDK_CLI_DISABLE_TELEMETRY: '1', }); }); From aa714c58c914eb3fbacf533013c549bb73c8e62e Mon Sep 17 00:00:00 2001 From: Kaizen Conroy Date: Fri, 18 Jul 2025 00:20:37 -0400 Subject: [PATCH 14/15] rename env var --- packages/aws-cdk/lib/cli/telemetry/collect-telemetry.ts | 2 +- packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/aws-cdk/lib/cli/telemetry/collect-telemetry.ts b/packages/aws-cdk/lib/cli/telemetry/collect-telemetry.ts index 82461c2e8..fa629f2df 100644 --- a/packages/aws-cdk/lib/cli/telemetry/collect-telemetry.ts +++ b/packages/aws-cdk/lib/cli/telemetry/collect-telemetry.ts @@ -4,7 +4,7 @@ import type { Context } from '../../api/context'; * Whether or not we collect telemetry */ export function canCollectTelemetry(context: Context): boolean { - if ((['true', '1'].includes(process.env.CDK_CLI_DISABLE_TELEMETRY ?? '')) || ['false', false].includes(context.get('cli-telemetry'))) { + if ((['true', '1'].includes(process.env.CDK_DISABLE_CLI_TELEMETRY ?? '')) || ['false', false].includes(context.get('cli-telemetry'))) { return false; } diff --git a/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts b/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts index 1dd2666f3..a5d79842a 100644 --- a/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts +++ b/packages/aws-cdk/test/cli/telemetry/collect-telemetry.test.ts @@ -17,7 +17,7 @@ describe(canCollectTelemetry, () => { await withEnv(async () => { expect(canCollectTelemetry(context)).toBeFalsy(); }, { - CDK_CLI_DISABLE_TELEMETRY: 'true', + CDK_DISABLE_CLI_TELEMETRY: 'true', }); }); @@ -25,7 +25,7 @@ describe(canCollectTelemetry, () => { await withEnv(async () => { expect(canCollectTelemetry(context)).toBeFalsy(); }, { - CDK_CLI_DISABLE_TELEMETRY: '1', + CDK_DISABLE_CLI_TELEMETRY: '1', }); }); From ec249195bbd81158d00aa2e868a0c36d29788d7d Mon Sep 17 00:00:00 2001 From: Kaizen Conroy Date: Fri, 18 Jul 2025 17:33:39 -0400 Subject: [PATCH 15/15] another place --- packages/aws-cdk/test/commands/telemetry.test.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/aws-cdk/test/commands/telemetry.test.ts b/packages/aws-cdk/test/commands/telemetry.test.ts index f032f36a5..04e4d2d14 100644 --- a/packages/aws-cdk/test/commands/telemetry.test.ts +++ b/packages/aws-cdk/test/commands/telemetry.test.ts @@ -70,13 +70,12 @@ describe('telemetry command', () => { test('status reports current telemetry status -- disabled via env var', async () => { await withEnv(async () => { // WHEN - process.env.CDK_CLI_DISABLE_TELEMETRY = 'true'; await toolkit.cliTelemetryStatus(); // THEN expect(notifySpy).toHaveBeenCalledWith(expect.objectContaining({ level: 'info', message: 'CLI Telemetry is disabled. See https://github.com/aws/aws-cdk-cli/tree/main/packages/aws-cdk#cdk-cli-telemetry for ways to enable.' })); }, { - CDK_CLI_DISABLE_TELEMETRY: 'true', + CDK_DISABLE_CLI_TELEMETRY: 'true', }); }); });