Skip to content

Commit 8bb7e5c

Browse files
samson-keunggithub-actions
and
github-actions
authored
fix(amplify-integtest): override any peer dependencies on cdk lib (#58)
`@aws-amplify/backend` has a peer dep on `aws-cdk-lib`: ``` "peerDependencies": { "aws-cdk-lib": "^2.168.0", } ``` This prevents testing using RC versions of `aws-cdk-lib`. Adding `overrides` into the `package.json` to override any peer dependency requirements on `aws-cdk-lib`. `npm config set save-exact true` is also needed so that when `create-amplify` runs `npm install`, it does not attempts to use `^<version>` in `package.json`, which will conflicts with the `overrides` mentioned above. --------- Signed-off-by: github-actions <[email protected]> Co-authored-by: github-actions <[email protected]>
1 parent 11f233c commit 8bb7e5c

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

packages/@aws-cdk-testing/cli-integ/tests/tool-integrations/amplify.integtest.ts

+20-9
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ integTest('amplify integration', withToolContext(async (context) => {
1717
await shell.shell(['npm', 'init', '-y']);
1818
await shell.shell(['npm', 'install', '--save-dev', 'create-amplify@latest']);
1919
// This will create 'package.json' implicating a certain version of the CDK
20-
await updateCdkDependency(context, context.packages.requestedCliVersion(), context.packages.requestedFrameworkVersion());
20+
await shell.shell(['npm', 'config', 'set', 'save-exact', 'true']);
21+
await mutateAmplifyDepOnCdk(context, context.packages.requestedCliVersion(), context.packages.requestedFrameworkVersion());
2122

2223
////////////////////////////////////////////////////////////////////////
2324
// Run the `npm create` workflow
@@ -46,18 +47,28 @@ integTest('amplify integration', withToolContext(async (context) => {
4647
}
4748
}), TIMEOUT);
4849

49-
async function updateCdkDependency(context: TemporaryDirectoryContext, cliVersion: string, libVersion: string) {
50-
const filename = path.join(context.integTestDir, 'node_modules', 'create-amplify', 'lib', 'default_packages.json');
51-
const pj: unknown = JSON.parse(await fs.readFile(filename, { encoding: 'utf-8' }));
50+
async function mutateAmplifyDepOnCdk(context: TemporaryDirectoryContext, cliVersion: string, libVersion: string) {
51+
// default_packages.json is where create-amplify reads when installing npm dependencies
52+
const amplifyDepFile = path.join(context.integTestDir, 'node_modules', 'create-amplify', 'lib', 'default_packages.json');
53+
const amplifyDepJson: unknown = JSON.parse(await fs.readFile(amplifyDepFile, { encoding: 'utf-8' }));
5254

5355
// Be extra paranoid about the types here, since we don't fully control them
54-
assertIsObject(pj);
55-
assertIsStringArray(pj.defaultDevPackages);
56+
assertIsObject(amplifyDepJson);
57+
assertIsStringArray(amplifyDepJson.defaultDevPackages);
5658

57-
replacePackageVersionIn('aws-cdk', cliVersion, pj.defaultDevPackages);
58-
replacePackageVersionIn('aws-cdk-lib', libVersion, pj.defaultDevPackages);
59+
replacePackageVersionIn('aws-cdk', cliVersion, amplifyDepJson.defaultDevPackages);
60+
replacePackageVersionIn('aws-cdk-lib', libVersion, amplifyDepJson.defaultDevPackages);
5961

60-
await fs.writeFile(filename, JSON.stringify(pj, undefined, 2), { encoding: 'utf-8' });
62+
await fs.writeFile(amplifyDepFile, JSON.stringify(amplifyDepJson, undefined, 2), { encoding: 'utf-8' });
63+
64+
const packageJsonFile = path.join(context.integTestDir, 'package.json');
65+
const packageJson: unknown = JSON.parse(await fs.readFile(packageJsonFile, { encoding: 'utf-8' }));
66+
67+
assertIsObject(packageJson);
68+
packageJson.overrides = {
69+
"aws-cdk-lib": libVersion,
70+
};
71+
await fs.writeFile(packageJsonFile, JSON.stringify(packageJson, undefined, 2), { encoding: 'utf-8' })
6172
}
6273

6374
/**

0 commit comments

Comments
 (0)