diff --git a/packages/@aws-cdk-testing/cli-integ/tests/init-typescript-app/init-typescript-app.integtest.ts b/packages/@aws-cdk-testing/cli-integ/tests/init-typescript-app/init-typescript-app.integtest.ts index e2b5e7465..cac6ad7cc 100644 --- a/packages/@aws-cdk-testing/cli-integ/tests/init-typescript-app/init-typescript-app.integtest.ts +++ b/packages/@aws-cdk-testing/cli-integ/tests/init-typescript-app/init-typescript-app.integtest.ts @@ -11,6 +11,8 @@ import { typescriptVersionsSync, typescriptVersionsYoungerThanDaysSync } from '. await shell.shell(['cdk', 'init', '--lib-version', context.library.requestedVersion(), '-l', 'typescript', template]); + await shell.shell(['npm', 'ci']); // this will fail if we have bundled dependencies that introduce version conflicts + await shell.shell(['npm', 'prune']); await shell.shell(['npm', 'ls']); // this will fail if we have unmet peer dependencies await shell.shell(['npm', 'run', 'build']); @@ -48,6 +50,7 @@ TYPESCRIPT_VERSIONS.forEach(tsVersion => { await shell.shell(['npm', 'install', '--save-dev', 'ts-node@^10']); await shell.shell(['npm', 'install']); // Older versions of npm require this to be a separate step from the one above + await shell.shell(['npx', 'tsc', '--version']); await shell.shell(['npm', 'prune']); await shell.shell(['npm', 'ls']); // this will fail if we have unmet peer dependencies diff --git a/packages/@aws-cdk-testing/cli-integ/tests/init-typescript-lib/use-lib-as-bundled-dependency.integtest.ts b/packages/@aws-cdk-testing/cli-integ/tests/init-typescript-lib/use-lib-as-bundled-dependency.integtest.ts new file mode 100644 index 000000000..55dd4b255 --- /dev/null +++ b/packages/@aws-cdk-testing/cli-integ/tests/init-typescript-lib/use-lib-as-bundled-dependency.integtest.ts @@ -0,0 +1,23 @@ +import * as fs from 'fs/promises'; +import { integTest, withTemporaryDirectory, ShellHelper, withPackages } from '../../lib'; + +// Sometimes, due to our own use of bundled dependencies, NPM will fail if a customer declares +// aws-cdk-lib as a bundled dependency. Test whether that still works. +integTest('using aws-cdk-lib as a bundled dependency', withTemporaryDirectory(withPackages(async (context) => { + const shell = ShellHelper.fromContext(context); + await context.cli.makeCliAvailable(); + + await shell.shell(['npm', 'init', '-y']); + + const packageJson = JSON.parse(await fs.readFile('package.json', 'utf-8')); + + packageJson.dependencies = { + ...packageJson.dependencies, + 'aws-cdk-lib': context.library.requestedVersion(), + }; + packageJson.bundleDependencies = ['aws-cdk-lib']; + + await fs.writeFile('package.json', JSON.stringify(packageJson, undefined, 2), 'utf-8'); + + await shell.shell(['npm', 'install']); +})));