UNPKG

jsii

Version:

[![Join the chat at https://cdk.Dev](https://img.shields.io/static/v1?label=Slack&message=cdk.dev&color=brightgreen&logo=slack)](https://cdk.dev) [![All Contributors](https://img.shields.io/github/all-contributors/aws/jsii/main?label=%E2%9C%A8%20All%20Con

58 lines (48 loc) 1.9 kB
/** * Check that the imports from 'aws-cdk-lib' we expect to work, work, and those we have shielded off don't work. */ import * as os from 'os'; import * as path from 'path'; import * as fs from 'fs-extra'; async function main() { // First make a tempdir and symlink `aws-cdk-lib` into it so we can refer to it // as if it was an installed module. await withTemporaryDirectory(async (tmpDir) => { await fs.mkdirp(path.join(tmpDir, 'node_modules')); await fs.symlink(path.resolve(__dirname, '..'), path.join(tmpDir, 'node_modules', 'aws-cdk-lib')); assertImportSucceeds('aws-cdk-lib'); assertImportFails('aws-cdk-lib/LICENSE', 'ERR_PACKAGE_PATH_NOT_EXPORTED'); assertImportFails('aws-cdk-lib/aws-s3/lib/bucket', 'ERR_PACKAGE_PATH_NOT_EXPORTED'); assertImportSucceeds('aws-cdk-lib/aws-s3'); function assertImportSucceeds(name: string) { require.resolve(name, { paths: [tmpDir] }); } function assertImportFails(name: string, code: string) { try { require.resolve(name, { paths: [tmpDir] }); // eslint-disable-next-line no-console console.error(`Import of '${name}' should have produced an error, but didn't.`); process.exitCode = 1; } catch (e: any) { if (e.code !== code) { // eslint-disable-next-line no-console console.error(`Import of '${name}' should have produced error ${code}, but got ${(e as any).code}.`); process.exitCode = 1; } } } }); } export async function withTemporaryDirectory<T>(callback: (dir: string) => Promise<T>): Promise<T> { const tmpdir = await fs.mkdtemp(path.join(os.tmpdir(), path.basename(__filename))); try { return await callback(tmpdir); } finally { await fs.remove(tmpdir); } } main().catch((e) => { // eslint-disable-next-line no-console console.error(e); process.exitCode = 1; });