From 57c4a1f2bad2dfc32e9560f389920f4b66c5a6c2 Mon Sep 17 00:00:00 2001 From: Momo Kornher Date: Tue, 6 Dec 2022 12:29:47 +0000 Subject: [PATCH] chore(cli): run cli-integ tests against all supported versions of TS --- .../test/integ/init/test-typescript.sh | 27 ++++++++++++------- .../aws-cdk/test/integ/typescript-versions.ts | 10 +++++++ 2 files changed, 27 insertions(+), 10 deletions(-) create mode 100644 packages/aws-cdk/test/integ/typescript-versions.ts diff --git a/packages/aws-cdk/test/integ/init/test-typescript.sh b/packages/aws-cdk/test/integ/init/test-typescript.sh index 14fa77d4463dd..ca902bde00116 100755 --- a/packages/aws-cdk/test/integ/init/test-typescript.sh +++ b/packages/aws-cdk/test/integ/init/test-typescript.sh @@ -4,6 +4,7 @@ #------------------------------------------------------------------ set -eu scriptdir=$(cd $(dirname $0) && pwd) +integdir=$(dirname $scriptdir) source ${scriptdir}/common.bash header TypeScript @@ -16,18 +17,24 @@ else templates="$@" fi +MIN_SUPPORTED_TS_VERSION="3.9" +SUPPORTED_TS_VERSIONS=$(node ${integdir}/typescript-versions.js ${MIN_SUPPORTED_TS_VERSION}) + for template in $templates; do - echo "Trying TypeScript template $template" + for version in $SUPPORTED_TS_VERSIONS; do + echo "Trying TypeScript template $template with TS$version" - setup + setup - cdk init -l typescript $template - npm prune && npm ls # this will fail if we have unmet peer dependencies - npm run build - npm run test + cdk init -l typescript $template + npm install --save typescript@$version + npm prune && npm ls # this will fail if we have unmet peer dependencies + npm run build + npm run test - # Can't run `cdk synth` on libraries - if [[ $template != "lib" ]]; then - cdk synth - fi + # Can't run `cdk synth` on libraries + if [[ $template != "lib" ]]; then + cdk synth + fi + done done diff --git a/packages/aws-cdk/test/integ/typescript-versions.ts b/packages/aws-cdk/test/integ/typescript-versions.ts new file mode 100644 index 0000000000000..cf86653b99793 --- /dev/null +++ b/packages/aws-cdk/test/integ/typescript-versions.ts @@ -0,0 +1,10 @@ +import { spawnSync } from 'child_process'; + +const minSupportedVersion = process.argv.slice(2, 3); + +const { stdout } = spawnSync('npm', ['--silent', 'view', `typescript@>=${minSupportedVersion}`, 'version', '--json']); + +const versions: string[] = JSON.parse(stdout); +const minorVersions = Array.from(new Set(versions.map(v => v.split('.').slice(0, 2).join('.')))); + +process.stdout.write(minorVersions.join(' '));