diff --git a/packages/aws-cdk/test/integ/init/test-typescript-versions.sh b/packages/aws-cdk/test/integ/init/test-typescript-versions.sh new file mode 100755 index 0000000000000..8df00129a7bff --- /dev/null +++ b/packages/aws-cdk/test/integ/init/test-typescript-versions.sh @@ -0,0 +1,29 @@ +#!/bin/bash +#------------------------------------------------------------------ +# setup +#------------------------------------------------------------------ +set -eu +scriptdir=$(cd $(dirname $0) && pwd) +integdir=$(dirname $scriptdir) +source ${scriptdir}/common.bash + +header TypeScript Versions + +#------------------------------------------------------------------ + +MIN_SUPPORTED_TS_VERSION=${1:-"3.9"} +SUPPORTED_TS_VERSIONS=$(node ${integdir}/typescript-versions.js ${MIN_SUPPORTED_TS_VERSION}) + +for version in $SUPPORTED_TS_VERSIONS; do + echo "Testing against TypeScript v$version" + + setup + + cdk init -l typescript sample-app --generate-only + npm pkg delete devDependencies + npm install --save-dev typescript@$version + npm prune && npm ls + rm test/* + npm run build + cdk synth +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(' '));