Skip to content

Commit 6b72343

Browse files
committed
add test
1 parent d6a1e55 commit 6b72343

File tree

1 file changed

+75
-13
lines changed

1 file changed

+75
-13
lines changed

packages/aws-cdk/test/commands/init.test.ts

Lines changed: 75 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as path from 'path';
44
import * as cxapi from '@aws-cdk/cx-api';
55
import * as fs from 'fs-extra';
66
import { availableInitLanguages, availableInitTemplates, cliInit, currentlyRecommendedAwsCdkLibFlags, expandPlaceholders, printAvailableTemplates } from '../../lib/commands/init';
7-
import type { JsPackageManager } from '../../lib/commands/init/package-manager';
7+
import { type JsPackageManager } from '../../lib/commands/init/package-manager';
88
import { createSingleLanguageTemplate, createMultiLanguageTemplate, createMultiTemplateRepository } from '../_fixtures/init-templates/template-helpers';
99
import { TestIoHost } from '../_helpers/io-host';
1010

@@ -1370,15 +1370,15 @@ describe('constructs version', () => {
13701370
});
13711371

13721372
test.each([
1373-
{ language: 'typescript', packageManager: 'npm' },
1374-
{ language: 'typescript', packageManager: 'yarn' },
1375-
{ language: 'typescript', packageManager: 'pnpm' },
1376-
{ language: 'typescript', packageManager: 'bun' },
1377-
{ language: 'javascript', packageManager: 'npm' },
1378-
{ language: 'javascript', packageManager: 'yarn' },
1379-
{ language: 'javascript', packageManager: 'pnpm' },
1380-
{ language: 'javascript', packageManager: 'bun' },
1381-
])('uses $packageManager for $language project', async ({ language, packageManager }) => {
1373+
{ language: 'typescript', packageManager: 'npm', pmCmdPrefix: 'npm run' },
1374+
{ language: 'typescript', packageManager: 'yarn', pmCmdPrefix: 'yarn' },
1375+
{ language: 'typescript', packageManager: 'pnpm', pmCmdPrefix: 'pnpm' },
1376+
{ language: 'typescript', packageManager: 'bun', pmCmdPrefix: 'bun run' },
1377+
{ language: 'javascript', packageManager: 'npm', pmCmdPrefix: 'npm run' },
1378+
{ language: 'javascript', packageManager: 'yarn', pmCmdPrefix: 'yarn' },
1379+
{ language: 'javascript', packageManager: 'pnpm', pmCmdPrefix: 'pnpm' },
1380+
{ language: 'javascript', packageManager: 'bun', pmCmdPrefix: 'bun run' },
1381+
])('uses $packageManager for $language project', async ({ language, packageManager, pmCmdPrefix }) => {
13821382
await withTempDir(async (workDir) => {
13831383
await cliInit({
13841384
ioHelper,
@@ -1388,39 +1388,101 @@ describe('constructs version', () => {
13881388
workDir,
13891389
});
13901390

1391+
const readme = await fs.readFile(path.join(workDir, 'README.md'), 'utf-8');
13911392
const installCalls = spawnSpy.mock.calls.filter(
13921393
([cmd, args]) => cmd === packageManager && args.includes('install'),
13931394
);
1395+
1396+
expect(installCalls.length).toBeGreaterThan(0);
1397+
expect(readme).toContain(pmCmdPrefix);
1398+
});
1399+
});
1400+
1401+
cliTest('init type `lib` also respects package manager option', async () => {
1402+
const packageManager = 'pnpm';
1403+
const pmCmdPrefix = 'pnpm';
1404+
1405+
await withTempDir(async (workDir) => {
1406+
await cliInit({
1407+
ioHelper,
1408+
type: 'app',
1409+
language: 'typescript',
1410+
packageManager: packageManager as JsPackageManager,
1411+
workDir,
1412+
});
1413+
1414+
const readme = await fs.readFile(path.join(workDir, 'README.md'), 'utf-8');
1415+
const installCalls = spawnSpy.mock.calls.filter(
1416+
([cmd, args]) => cmd === packageManager && args.includes('install'),
1417+
);
1418+
1419+
expect(installCalls.length).toBeGreaterThan(0);
1420+
expect(readme).toContain(pmCmdPrefix);
1421+
});
1422+
});
1423+
1424+
cliTest('init type `sample-app` also respects package manager option', async () => {
1425+
const packageManager = 'pnpm';
1426+
const pmCmdPrefix = 'pnpm';
1427+
1428+
await withTempDir(async (workDir) => {
1429+
await cliInit({
1430+
ioHelper,
1431+
type: 'sample-app',
1432+
language: 'typescript',
1433+
packageManager: packageManager as JsPackageManager,
1434+
workDir,
1435+
});
1436+
1437+
const readme = await fs.readFile(path.join(workDir, 'README.md'), 'utf-8');
1438+
const installCalls = spawnSpy.mock.calls.filter(
1439+
([cmd, args]) => cmd === packageManager && args.includes('install'),
1440+
);
1441+
13941442
expect(installCalls.length).toBeGreaterThan(0);
1443+
expect(readme).toContain(pmCmdPrefix);
13951444
});
13961445
});
13971446

13981447
cliTest('uses npm as default when package manager not specified', async (workDir) => {
1448+
const defaultPackageManager = 'npm';
1449+
const pmCmdPrefix = 'npm run';
1450+
13991451
await cliInit({
14001452
ioHelper,
14011453
type: 'app',
14021454
language: 'typescript',
14031455
workDir,
14041456
});
14051457

1458+
const readme = await fs.readFile(path.join(workDir, 'README.md'), 'utf-8');
14061459
const installCalls = spawnSpy.mock.calls.filter(
1407-
([cmd, args]) => cmd === 'npm' && args.includes('install'),
1460+
([cmd, args]) => cmd === defaultPackageManager && args.includes('install'),
14081461
);
1462+
14091463
expect(installCalls.length).toBeGreaterThan(0);
1464+
expect(readme).toContain(pmCmdPrefix);
14101465
});
14111466

14121467
cliTest('ignores package manager option for non-JavaScript languages', async (workDir) => {
1468+
const packageManager = 'yarn';
1469+
const pmCmdPrefix = 'yarn';
1470+
14131471
await cliInit({
14141472
ioHelper,
14151473
type: 'app',
14161474
language: 'python',
1417-
packageManager: 'yarn',
1475+
packageManager,
14181476
canUseNetwork: false,
14191477
generateOnly: true,
14201478
workDir,
14211479
});
14221480

1423-
expect(await fs.pathExists(path.join(workDir, 'requirements.txt'))).toBeTruthy();
1481+
const requirementsExists = await fs.pathExists(path.join(workDir, 'requirements.txt'));
1482+
const readme = await fs.readFile(path.join(workDir, 'README.md'), 'utf-8');
1483+
1484+
expect(requirementsExists).toBeTruthy();
1485+
expect(readme).not.toContain(pmCmdPrefix);
14241486
});
14251487
});
14261488

0 commit comments

Comments
 (0)