@aws-cdk-testing/cli-integ 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/query-github +1 -1
- package/bin/run-suite +1 -1
- package/bin/stage-distribution +1 -1
- package/bin/test-root +1 -1
- package/lib/aws.js +2 -2
- package/lib/aws.ts +1 -1
- package/lib/cli/query-github.d.ts +1 -0
- package/lib/cli/query-github.js +54 -0
- package/{bin → lib/cli}/query-github.ts +1 -1
- package/lib/cli/run-suite.d.ts +1 -0
- package/lib/cli/run-suite.js +131 -0
- package/{bin → lib/cli}/run-suite.ts +5 -5
- package/lib/cli/stage-distribution.d.ts +1 -0
- package/lib/cli/stage-distribution.js +217 -0
- package/{bin → lib/cli}/stage-distribution.ts +7 -7
- package/lib/cli/test-root.d.ts +1 -0
- package/lib/cli/test-root.js +6 -0
- package/{bin → lib/cli}/test-root.ts +1 -1
- package/lib/integ-test.js +37 -6
- package/lib/integ-test.ts +42 -5
- package/lib/shell.d.ts +5 -2
- package/lib/shell.js +16 -8
- package/lib/shell.ts +16 -9
- package/lib/with-cdk-app.js +7 -2
- package/lib/with-cdk-app.ts +6 -1
- package/lib/with-sam.js +26 -21
- package/lib/with-sam.ts +23 -21
- package/package.json +6 -4
- package/resources/cdk-apps/app/app.js +3 -3
- package/resources/cdk-apps/rollback-test-app/app.js +1 -1
- package/resources/cdk-apps/sam_cdk_integ_app/lib/test-stack.js +3 -1
- package/resources/cli-regression-patches/v1.130.0/bootstrapping.integtest.js +1 -1
- package/tests/init-go/init-go.integtest.js +7 -2
- package/tests/init-go/init-go.integtest.ts +6 -1
- package/tests/init-typescript-app/init-typescript-app.integtest.js +3 -3
- package/tests/init-typescript-app/init-typescript-app.integtest.ts +4 -3
package/lib/with-sam.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as child_process from 'child_process';
|
|
2
|
-
import * as fs from 'fs';
|
|
3
2
|
import * as os from 'os';
|
|
4
3
|
import * as path from 'path';
|
|
5
4
|
import axios from 'axios';
|
|
@@ -139,6 +138,7 @@ export class SamIntegrationTestFixture extends TestFixture {
|
|
|
139
138
|
args.push('--port');
|
|
140
139
|
args.push(port.toString());
|
|
141
140
|
|
|
141
|
+
// "Press Ctrl+C to quit" looks to be printed by a Flask server built into SAM CLI.
|
|
142
142
|
return this.samShell(['sam', 'local', 'start-api', ...args], 'Press CTRL+C to quit', ()=>{
|
|
143
143
|
return new Promise<ActionOutput>((resolve, reject) => {
|
|
144
144
|
axios.get(`http://127.0.0.1:${port}${apiPath}`).then( resp => {
|
|
@@ -157,7 +157,10 @@ export class SamIntegrationTestFixture extends TestFixture {
|
|
|
157
157
|
// If the tests completed successfully, happily delete the fixture
|
|
158
158
|
// (otherwise leave it for humans to inspect)
|
|
159
159
|
if (success) {
|
|
160
|
-
rimraf(this.integTestDir);
|
|
160
|
+
const cleaned = rimraf(this.integTestDir);
|
|
161
|
+
if (!cleaned) {
|
|
162
|
+
console.error(`Failed to clean up ${this.integTestDir} due to permissions issues (Docker running as root?)`);
|
|
163
|
+
}
|
|
161
164
|
}
|
|
162
165
|
}
|
|
163
166
|
}
|
|
@@ -207,23 +210,24 @@ export async function shellWithAction(
|
|
|
207
210
|
let actionOutput: any;
|
|
208
211
|
let actionExecuted = false;
|
|
209
212
|
|
|
210
|
-
function
|
|
213
|
+
async function maybeExecuteAction(chunk: any) {
|
|
211
214
|
out.push(Buffer.from(chunk));
|
|
212
215
|
if (!actionExecuted && typeof filter === 'string' && Buffer.concat(out).toString('utf-8').includes(filter) && typeof action === 'function') {
|
|
213
216
|
actionExecuted = true;
|
|
214
|
-
writeToOutputs('before executing action');
|
|
215
|
-
|
|
216
|
-
|
|
217
|
+
writeToOutputs('before executing action\n');
|
|
218
|
+
try {
|
|
219
|
+
const output = await action();
|
|
220
|
+
writeToOutputs(`action output is ${JSON.stringify(output)}\n`);
|
|
217
221
|
actionOutput = output;
|
|
218
222
|
actionSucceeded = true;
|
|
219
|
-
}
|
|
220
|
-
writeToOutputs(`action error is ${error}`);
|
|
223
|
+
} catch (error: any) {
|
|
224
|
+
writeToOutputs(`action error is ${error}\n`);
|
|
221
225
|
actionSucceeded = false;
|
|
222
226
|
actionOutput = error;
|
|
223
|
-
}
|
|
224
|
-
writeToOutputs('terminate sam sub process');
|
|
227
|
+
} finally {
|
|
228
|
+
writeToOutputs('terminate sam sub process\n');
|
|
225
229
|
killSubProcess(child, command.join(' '));
|
|
226
|
-
}
|
|
230
|
+
}
|
|
227
231
|
}
|
|
228
232
|
}
|
|
229
233
|
|
|
@@ -234,6 +238,7 @@ export async function shellWithAction(
|
|
|
234
238
|
() => {
|
|
235
239
|
if (!actionExecuted) {
|
|
236
240
|
reject(new Error(`Timed out waiting for filter ${JSON.stringify(filter)} to appear in command output after ${actionTimeoutSeconds} seconds\nOutput so far:\n${Buffer.concat(out).toString('utf-8')}`));
|
|
241
|
+
killSubProcess(child, command.join(' '));
|
|
237
242
|
}
|
|
238
243
|
}, actionTimeoutSeconds * 1_000,
|
|
239
244
|
).unref();
|
|
@@ -242,7 +247,7 @@ export async function shellWithAction(
|
|
|
242
247
|
child.stdout!.on('data', chunk => {
|
|
243
248
|
writeToOutputs(chunk);
|
|
244
249
|
stdout.push(chunk);
|
|
245
|
-
|
|
250
|
+
void maybeExecuteAction(chunk);
|
|
246
251
|
});
|
|
247
252
|
|
|
248
253
|
child.stderr!.on('data', chunk => {
|
|
@@ -250,12 +255,14 @@ export async function shellWithAction(
|
|
|
250
255
|
if (options.captureStderr ?? true) {
|
|
251
256
|
stderr.push(chunk);
|
|
252
257
|
}
|
|
253
|
-
|
|
258
|
+
void maybeExecuteAction(chunk);
|
|
254
259
|
});
|
|
255
260
|
|
|
256
261
|
child.once('error', reject);
|
|
257
262
|
|
|
258
|
-
|
|
263
|
+
// Wait for 'exit' instead of close, don't care about reading the streams all the way to the end
|
|
264
|
+
child.once('exit', (code, signal) => {
|
|
265
|
+
writeToOutputs(`Subprocess has exited with code ${code}, signal ${signal}\n`);
|
|
259
266
|
const output = (Buffer.concat(stdout).toString('utf-8') + Buffer.concat(stderr).toString('utf-8')).trim();
|
|
260
267
|
if (code == null || code === 0 || options.allowErrExit) {
|
|
261
268
|
let result = new Array<string>();
|
|
@@ -270,7 +277,6 @@ export async function shellWithAction(
|
|
|
270
277
|
reject(new Error(`'${command.join(' ')}' exited with error code ${code}. Output: \n${output}`));
|
|
271
278
|
}
|
|
272
279
|
});
|
|
273
|
-
|
|
274
280
|
});
|
|
275
281
|
}
|
|
276
282
|
|
|
@@ -279,10 +285,6 @@ function killSubProcess(child: child_process.ChildProcess, command: string) {
|
|
|
279
285
|
* Check if the sub process is running in container, so child_process.spawn will
|
|
280
286
|
* create multiple processes, and to kill all of them we need to run different logic
|
|
281
287
|
*/
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
} else {
|
|
285
|
-
child.kill('SIGINT');
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
+
child.kill('SIGINT');
|
|
289
|
+
child_process.exec(`for pid in $(ps -ef | grep "${command}" | awk '{print $2}'); do kill -2 $pid; done`);
|
|
288
290
|
}
|
package/package.json
CHANGED
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@cdklabs/eslint-plugin": "^1.3.0",
|
|
41
|
-
"@stylistic/eslint-plugin": "^2.
|
|
41
|
+
"@stylistic/eslint-plugin": "^2.13.0",
|
|
42
42
|
"@types/fs-extra": "^9",
|
|
43
43
|
"@types/glob": "^7",
|
|
44
44
|
"@types/jest": "^29.5.14",
|
|
@@ -56,9 +56,9 @@
|
|
|
56
56
|
"eslint-plugin-jest": "^28.10.0",
|
|
57
57
|
"eslint-plugin-prettier": "^5.2.1",
|
|
58
58
|
"jest": "^29.7.0",
|
|
59
|
-
"jest-junit": "^
|
|
59
|
+
"jest-junit": "^16",
|
|
60
60
|
"prettier": "^2.8",
|
|
61
|
-
"projen": "^0.91.
|
|
61
|
+
"projen": "^0.91.6",
|
|
62
62
|
"ts-jest": "^29.2.5",
|
|
63
63
|
"typescript": "5.6"
|
|
64
64
|
},
|
|
@@ -82,12 +82,14 @@
|
|
|
82
82
|
"fs-extra": "^9",
|
|
83
83
|
"glob": "^7",
|
|
84
84
|
"jest": "^29",
|
|
85
|
+
"jest-junit": "^15",
|
|
85
86
|
"make-runnable": "^1",
|
|
86
87
|
"mockttp": "^3",
|
|
87
88
|
"npm": "^8",
|
|
88
89
|
"p-queue": "^6",
|
|
89
90
|
"semver": "^7",
|
|
90
91
|
"sinon": "^9",
|
|
92
|
+
"ts-jest": "^29",
|
|
91
93
|
"ts-mock-imports": "^1",
|
|
92
94
|
"yaml": "1",
|
|
93
95
|
"yargs": "^17"
|
|
@@ -105,7 +107,7 @@
|
|
|
105
107
|
"publishConfig": {
|
|
106
108
|
"access": "public"
|
|
107
109
|
},
|
|
108
|
-
"version": "3.
|
|
110
|
+
"version": "3.1.0",
|
|
109
111
|
"types": "lib/index.d.ts",
|
|
110
112
|
"//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"."
|
|
111
113
|
}
|
|
@@ -748,7 +748,7 @@ class NotificationArnsStack extends cdk.Stack {
|
|
|
748
748
|
const arnsFromEnv = process.env.INTEG_NOTIFICATION_ARNS;
|
|
749
749
|
super(parent, id, {
|
|
750
750
|
...props,
|
|
751
|
-
// comma separated list of arns.
|
|
751
|
+
// comma separated list of arns.
|
|
752
752
|
// empty string means empty list.
|
|
753
753
|
// undefined means undefined
|
|
754
754
|
notificationArns: arnsFromEnv == '' ? [] : (arnsFromEnv ? arnsFromEnv.split(',') : undefined)
|
|
@@ -793,12 +793,12 @@ class MetadataStack extends cdk.Stack {
|
|
|
793
793
|
const handle = new cdk.CfnWaitConditionHandle(this, 'WaitConditionHandle');
|
|
794
794
|
handle.addMetadata('Key', process.env.INTEG_METADATA_VALUE ?? 'default')
|
|
795
795
|
|
|
796
|
-
}
|
|
796
|
+
}
|
|
797
797
|
}
|
|
798
798
|
|
|
799
799
|
const app = new cdk.App({
|
|
800
800
|
context: {
|
|
801
|
-
'@aws-cdk/core:assetHashSalt': process.env.CODEBUILD_BUILD_ID, // Force all assets to be unique, but consistent in one build
|
|
801
|
+
'@aws-cdk/core:assetHashSalt': process.env.CODEBUILD_BUILD_ID ?? process.env.GITHUB_RUN_ID, // Force all assets to be unique, but consistent in one build
|
|
802
802
|
},
|
|
803
803
|
});
|
|
804
804
|
|
|
@@ -91,7 +91,7 @@ class RollbacktestStack extends cdk.Stack {
|
|
|
91
91
|
|
|
92
92
|
const app = new cdk.App({
|
|
93
93
|
context: {
|
|
94
|
-
'@aws-cdk/core:assetHashSalt': process.env.CODEBUILD_BUILD_ID, // Force all assets to be unique, but consistent in one build
|
|
94
|
+
'@aws-cdk/core:assetHashSalt': process.env.CODEBUILD_BUILD_ID ?? process.env.GITHUB_RUN_ID, // Force all assets to be unique, but consistent in one build
|
|
95
95
|
},
|
|
96
96
|
});
|
|
97
97
|
|
|
@@ -21,6 +21,8 @@ if (process.env.PACKAGE_LAYOUT_VERSION === '1') {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
const isRunningOnCodeBuild = !!process.env.CODEBUILD_BUILD_ID;
|
|
24
|
+
const isRunningOnGitHubActions = !!process.env.GITHUB_RUN_ID;
|
|
25
|
+
const isRunningOnCi = isRunningOnCodeBuild || isRunningOnGitHubActions;
|
|
24
26
|
|
|
25
27
|
class CDKSupportDemoRootStack extends Stack{
|
|
26
28
|
constructor(scope, id, props) {
|
|
@@ -102,7 +104,7 @@ class CDKSupportDemoRootStack extends Stack{
|
|
|
102
104
|
bundling: {
|
|
103
105
|
forcedDockerBundling: true,
|
|
104
106
|
// Only use Google proxy in the CI tests, as it is blocked on workstations
|
|
105
|
-
goProxies:
|
|
107
|
+
goProxies: isRunningOnCi ? [GoFunction.GOOGLE_GOPROXY, 'direct'] : undefined,
|
|
106
108
|
},
|
|
107
109
|
});
|
|
108
110
|
|
|
@@ -4,7 +4,7 @@ const fs = require("fs");
|
|
|
4
4
|
const path = require("path");
|
|
5
5
|
const cdk_1 = require("../helpers/cdk");
|
|
6
6
|
const test_helpers_1 = require("../helpers/test-helpers");
|
|
7
|
-
const timeout = process.env.CODEBUILD_BUILD_ID ? // if the process is running in CodeBuild
|
|
7
|
+
const timeout = (process.env.CODEBUILD_BUILD_ID ?? process.env.GITHUB_RUN_ID) ? // if the process is running in CodeBuild
|
|
8
8
|
3600000 : // 1 hour
|
|
9
9
|
600000; // 10 minutes
|
|
10
10
|
jest.setTimeout(timeout);
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const lib_1 = require("../../lib");
|
|
4
4
|
['app', 'sample-app'].forEach(template => {
|
|
5
5
|
(0, lib_1.integTest)(`init go ${template}`, (0, lib_1.withTemporaryDirectory)((0, lib_1.withPackages)(async (context) => {
|
|
6
|
+
var _a;
|
|
6
7
|
const isCanary = !!process.env.IS_CANARY;
|
|
7
8
|
context.packages.assertJsiiPackagesAvailable();
|
|
8
9
|
const shell = lib_1.ShellHelper.fromContext(context);
|
|
@@ -11,11 +12,15 @@ const lib_1 = require("../../lib");
|
|
|
11
12
|
// Canaries will use the generated go.mod as is
|
|
12
13
|
// For pipeline tests we replace the source with the locally build one
|
|
13
14
|
if (!isCanary) {
|
|
14
|
-
|
|
15
|
+
const dir = (_a = process.env.CODEBUILD_SRC_DIR) !== null && _a !== void 0 ? _a : process.env.GITHUB_WORKSPACE;
|
|
16
|
+
if (!dir) {
|
|
17
|
+
throw new Error('Cannot figure out CI system root directory');
|
|
18
|
+
}
|
|
19
|
+
await shell.shell(['go', 'mod', 'edit', '-replace', `github.com/aws/aws-cdk-go/awscdk/v2=${dir}/go/awscdk`]);
|
|
15
20
|
}
|
|
16
21
|
await shell.shell(['go', 'mod', 'tidy']);
|
|
17
22
|
await shell.shell(['go', 'test']);
|
|
18
23
|
await shell.shell(['cdk', 'synth']);
|
|
19
24
|
})));
|
|
20
25
|
});
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC1nby5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbml0LWdvLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUF5RjtBQUV6RixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDdkMsSUFBQSxlQUFTLEVBQUMsV0FBVyxRQUFRLEVBQUUsRUFBRSxJQUFBLDRCQUFzQixFQUFDLElBQUEsa0JBQVksRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7O1FBQ3JGLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUN6QyxPQUFPLENBQUMsUUFBUSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFFL0MsTUFBTSxLQUFLLEdBQUcsaUJBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFMUMsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFekQsK0NBQStDO1FBQy9DLHNFQUFzRTtRQUN0RSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLEdBQUcsR0FBRyxNQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLG1DQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7WUFDMUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUNoRSxDQUFDO1lBRUQsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLHVDQUF1QyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDL0csQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNsQyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGludGVnVGVzdCwgd2l0aFRlbXBvcmFyeURpcmVjdG9yeSwgU2hlbGxIZWxwZXIsIHdpdGhQYWNrYWdlcyB9IGZyb20gJy4uLy4uL2xpYic7XG5cblsnYXBwJywgJ3NhbXBsZS1hcHAnXS5mb3JFYWNoKHRlbXBsYXRlID0+IHtcbiAgaW50ZWdUZXN0KGBpbml0IGdvICR7dGVtcGxhdGV9YCwgd2l0aFRlbXBvcmFyeURpcmVjdG9yeSh3aXRoUGFja2FnZXMoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICBjb25zdCBpc0NhbmFyeSA9ICEhcHJvY2Vzcy5lbnYuSVNfQ0FOQVJZO1xuICAgIGNvbnRleHQucGFja2FnZXMuYXNzZXJ0SnNpaVBhY2thZ2VzQXZhaWxhYmxlKCk7XG5cbiAgICBjb25zdCBzaGVsbCA9IFNoZWxsSGVscGVyLmZyb21Db250ZXh0KGNvbnRleHQpO1xuICAgIGF3YWl0IGNvbnRleHQucGFja2FnZXMubWFrZUNsaUF2YWlsYWJsZSgpO1xuXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydjZGsnLCAnaW5pdCcsICctbCcsICdnbycsIHRlbXBsYXRlXSk7XG5cbiAgICAvLyBDYW5hcmllcyB3aWxsIHVzZSB0aGUgZ2VuZXJhdGVkIGdvLm1vZCBhcyBpc1xuICAgIC8vIEZvciBwaXBlbGluZSB0ZXN0cyB3ZSByZXBsYWNlIHRoZSBzb3VyY2Ugd2l0aCB0aGUgbG9jYWxseSBidWlsZCBvbmVcbiAgICBpZiAoIWlzQ2FuYXJ5KSB7XG4gICAgICBjb25zdCBkaXIgPSBwcm9jZXNzLmVudi5DT0RFQlVJTERfU1JDX0RJUiA/PyBwcm9jZXNzLmVudi5HSVRIVUJfV09SS1NQQUNFO1xuICAgICAgaWYgKCFkaXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZmlndXJlIG91dCBDSSBzeXN0ZW0gcm9vdCBkaXJlY3RvcnknKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgc2hlbGwuc2hlbGwoWydnbycsICdtb2QnLCAnZWRpdCcsICctcmVwbGFjZScsIGBnaXRodWIuY29tL2F3cy9hd3MtY2RrLWdvL2F3c2Nkay92Mj0ke2Rpcn0vZ28vYXdzY2RrYF0pO1xuICAgIH1cblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnZ28nLCAnbW9kJywgJ3RpZHknXSk7XG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydnbycsICd0ZXN0J10pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnY2RrJywgJ3N5bnRoJ10pO1xuICB9KSkpO1xufSk7XG4iXX0=
|
|
@@ -13,7 +13,12 @@ import { integTest, withTemporaryDirectory, ShellHelper, withPackages } from '..
|
|
|
13
13
|
// Canaries will use the generated go.mod as is
|
|
14
14
|
// For pipeline tests we replace the source with the locally build one
|
|
15
15
|
if (!isCanary) {
|
|
16
|
-
|
|
16
|
+
const dir = process.env.CODEBUILD_SRC_DIR ?? process.env.GITHUB_WORKSPACE;
|
|
17
|
+
if (!dir) {
|
|
18
|
+
throw new Error('Cannot figure out CI system root directory');
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
await shell.shell(['go', 'mod', 'edit', '-replace', `github.com/aws/aws-cdk-go/awscdk/v2=${dir}/go/awscdk`]);
|
|
17
22
|
}
|
|
18
23
|
|
|
19
24
|
await shell.shell(['go', 'mod', 'tidy']);
|
|
@@ -19,8 +19,6 @@ const npm_1 = require("../../lib/npm");
|
|
|
19
19
|
// Same as https://github.com/DefinitelyTyped/DefinitelyTyped?tab=readme-ov-file#support-window
|
|
20
20
|
const TYPESCRIPT_VERSION_AGE_DAYS = 2 * 365;
|
|
21
21
|
const TYPESCRIPT_VERSIONS = (0, npm_1.typescriptVersionsYoungerThanDaysSync)(TYPESCRIPT_VERSION_AGE_DAYS, (0, npm_1.typescriptVersionsSync)());
|
|
22
|
-
// eslint-disable-next-line no-console
|
|
23
|
-
console.log(TYPESCRIPT_VERSIONS);
|
|
24
22
|
/**
|
|
25
23
|
* Test our generated code with various versions of TypeScript
|
|
26
24
|
*/
|
|
@@ -35,6 +33,8 @@ TYPESCRIPT_VERSIONS.forEach(tsVersion => {
|
|
|
35
33
|
// still want to test with older versions as well.
|
|
36
34
|
await removeDevDependencies(context);
|
|
37
35
|
await shell.shell(['npm', 'install', '--save-dev', `typescript@${tsVersion}`]);
|
|
36
|
+
// After we've removed devDependencies we need to re-install ts-node because it's necessary for `cdk synth`
|
|
37
|
+
await shell.shell(['npm', 'install', '--save-dev', `ts-node@^10`]);
|
|
38
38
|
await shell.shell(['npm', 'install']); // Older versions of npm require this to be a separate step from the one above
|
|
39
39
|
await shell.shell(['npx', 'tsc', '--version']);
|
|
40
40
|
await shell.shell(['npm', 'prune']);
|
|
@@ -51,4 +51,4 @@ async function removeDevDependencies(context) {
|
|
|
51
51
|
delete pj.devDependencies;
|
|
52
52
|
await fs_1.promises.writeFile(filename, JSON.stringify(pj, undefined, 2), { encoding: 'utf-8' });
|
|
53
53
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC10eXBlc2NyaXB0LWFwcC5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbml0LXR5cGVzY3JpcHQtYXBwLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJCQUFvQztBQUNwQyw2QkFBNkI7QUFDN0IsbUNBQW9IO0FBQ3BILHVDQUE4RjtBQUU5RixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDdkMsSUFBQSxlQUFTLEVBQUMsbUJBQW1CLFFBQVEsRUFBRSxFQUFFLElBQUEsNEJBQXNCLEVBQUMsSUFBQSxrQkFBWSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUM3RixNQUFNLEtBQUssR0FBRyxpQkFBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxNQUFNLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUUxQyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUVqRSxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNwQyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9EQUFvRDtRQUN0RixNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxP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MUIsTUFBTSxhQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUN4RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoVGVtcG9yYXJ5RGlyZWN0b3J5LCBTaGVsbEhlbHBlciwgd2l0aFBhY2thZ2VzLCBUZW1wb3JhcnlEaXJlY3RvcnlDb250ZXh0IH0gZnJvbSAnLi4vLi4vbGliJztcbmltcG9ydCB7IHR5cGVzY3JpcHRWZXJzaW9uc1N5bmMsIHR5cGVzY3JpcHRWZXJzaW9uc1lvdW5nZXJUaGFuRGF5c1N5bmMgfSBmcm9tICcuLi8uLi9saWIvbnBtJztcblxuWydhcHAnLCAnc2FtcGxlLWFwcCddLmZvckVhY2godGVtcGxhdGUgPT4ge1xuICBpbnRlZ1Rlc3QoYHR5cGVzY3JpcHQgaW5pdCAke3RlbXBsYXRlfWAsIHdpdGhUZW1wb3JhcnlEaXJlY3Rvcnkod2l0aFBhY2thZ2VzKGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgY29uc3Qgc2hlbGwgPSBTaGVsbEhlbHBlci5mcm9tQ29udGV4dChjb250ZXh0KTtcbiAgICBhd2FpdCBjb250ZXh0LnBhY2thZ2VzLm1ha2VDbGlBdmFpbGFibGUoKTtcblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnY2RrJywgJ2luaXQnLCAnLWwnLCAndHlwZXNjcmlwdCcsIHRlbXBsYXRlXSk7XG5cbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdwcnVuZSddKTtcbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdscyddKTsgLy8gdGhpcyB3aWxsIGZhaWwgaWYgd2UgaGF2ZSB1bm1ldCBwZWVyIGRlcGVuZGVuY2llc1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ3J1bicsICdidWlsZCddKTtcbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdydW4nLCAndGVzdCddKTtcblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnY2RrJywgJ3N5bnRoJ10pO1xuICB9KSkpO1xufSk7XG5cbi8vIFNhbWUgYXMgaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQ/dGFiPXJlYWRtZS1vdi1maWxlI3N1cHBvcnQtd2luZG93XG5jb25zdCBUWVBFU0NSSVBUX1ZFUlNJT05fQUdFX0RBWVMgPSAyICogMzY1O1xuXG5jb25zdCBUWVBFU0NSSVBUX1ZFUlNJT05TID0gdHlwZXNjcmlwdFZlcnNpb25zWW91bmdlclRoYW5EYXlzU3luYyhUWVBFU0NSSVBUX1ZFUlNJT05fQUdFX0RBWVMsIHR5cGVzY3JpcHRWZXJzaW9uc1N5bmMoKSk7XG5cbi8qKlxuICogVGVzdCBvdXIgZ2VuZXJhdGVkIGNvZGUgd2l0aCB2YXJpb3VzIHZlcnNpb25zIG9mIFR5cGVTY3JpcHRcbiAqL1xuVFlQRVNDUklQVF9WRVJTSU9OUy5mb3JFYWNoKHRzVmVyc2lvbiA9PiB7XG4gIGludGVnVGVzdChgdHlwZXNjcmlwdCAke3RzVmVyc2lvbn0gaW5pdCBhcHBgLCB3aXRoVGVtcG9yYXJ5RGlyZWN0b3J5KHdpdGhQYWNrYWdlcyhhc3luYyAoY29udGV4dCkgPT4ge1xuICAgIGNvbnN0IHNoZWxsID0gU2hlbGxIZWxwZXIuZnJvbUNvbnRleHQoY29udGV4dCk7XG4gICAgYXdhaXQgY29udGV4dC5wYWNrYWdlcy5tYWtlQ2xpQXZhaWxhYmxlKCk7XG5cbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25vZGUnLCAnLS12ZXJzaW9uJ10pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJy0tdmVyc2lvbiddKTtcblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnY2RrJywgJ2luaXQnLCAnLWwnLCAndHlwZXNjcmlwdCcsICdhcHAnLCAnLS1nZW5lcmF0ZS1vbmx5J10pO1xuXG4gICAgLy8gTmVjZXNzYXJ5IGJlY2F1c2UgcmVjZW50IHZlcnNpb25zIG9mIHRzLWplc3QgcmVxdWlyZSBUeXBlU2NyaXB0Pj00LjMgYnV0IHdlXG4gICAgLy8gc3RpbGwgd2FudCB0byB0ZXN0IHdpdGggb2xkZXIgdmVyc2lvbnMgYXMgd2VsbC5cbiAgICBhd2FpdCByZW1vdmVEZXZEZXBlbmRlbmNpZXMoY29udGV4dCk7XG5cbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdpbnN0YWxsJywgJy0tc2F2ZS1kZXYnLCBgdHlwZXNjcmlwdEAke3RzVmVyc2lvbn1gXSk7XG5cbiAgICAvLyBBZnRlciB3ZSd2ZSByZW1vdmVkIGRldkRlcGVuZGVuY2llcyB3ZSBuZWVkIHRvIHJlLWluc3RhbGwgdHMtbm9kZSBiZWNhdXNlIGl0J3MgbmVjZXNzYXJ5IGZvciBgY2RrIHN5bnRoYFxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ2luc3RhbGwnLCAnLS1zYXZlLWRldicsIGB0cy1ub2RlQF4xMGBdKTtcblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ2luc3RhbGwnXSk7IC8vIE9sZGVyIHZlcnNpb25zIG9mIG5wbSByZXF1aXJlIHRoaXMgdG8gYmUgYSBzZXBhcmF0ZSBzdGVwIGZyb20gdGhlIG9uZSBhYm92ZVxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnB4JywgJ3RzYycsICctLXZlcnNpb24nXSk7XG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAncHJ1bmUnXSk7XG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAnbHMnXSk7IC8vIHRoaXMgd2lsbCBmYWlsIGlmIHdlIGhhdmUgdW5tZXQgcGVlciBkZXBlbmRlbmNpZXNcblxuICAgIC8vIFdlIGp1c3QgcmVtb3ZlZCB0aGUgJ2plc3QnIGRlcGVuZGVuY3kgc28gcmVtb3ZlIHRoZSB0ZXN0cyBhcyB3ZWxsIGJlY2F1c2UgdGhleSB3b24ndCBjb21waWxlXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydybScsICctcmYnLCAndGVzdC8nXSk7XG5cbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdydW4nLCAnYnVpbGQnXSk7XG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydjZGsnLCAnc3ludGgnXSk7XG4gIH0pKSk7XG59KTtcblxuYXN5bmMgZnVuY3Rpb24gcmVtb3ZlRGV2RGVwZW5kZW5jaWVzKGNvbnRleHQ6IFRlbXBvcmFyeURpcmVjdG9yeUNvbnRleHQpIHtcbiAgY29uc3QgZmlsZW5hbWUgPSBwYXRoLmpvaW4oY29udGV4dC5pbnRlZ1Rlc3REaXIsICdwYWNrYWdlLmpzb24nKTtcbiAgY29uc3QgcGogPSBKU09OLnBhcnNlKGF3YWl0IGZzLnJlYWRGaWxlKGZpbGVuYW1lLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pKTtcbiAgZGVsZXRlIHBqLmRldkRlcGVuZGVuY2llcztcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGZpbGVuYW1lLCBKU09OLnN0cmluZ2lmeShwaiwgdW5kZWZpbmVkLCAyKSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbn1cbiJdfQ==
|
|
@@ -24,9 +24,6 @@ const TYPESCRIPT_VERSION_AGE_DAYS = 2 * 365;
|
|
|
24
24
|
|
|
25
25
|
const TYPESCRIPT_VERSIONS = typescriptVersionsYoungerThanDaysSync(TYPESCRIPT_VERSION_AGE_DAYS, typescriptVersionsSync());
|
|
26
26
|
|
|
27
|
-
// eslint-disable-next-line no-console
|
|
28
|
-
console.log(TYPESCRIPT_VERSIONS);
|
|
29
|
-
|
|
30
27
|
/**
|
|
31
28
|
* Test our generated code with various versions of TypeScript
|
|
32
29
|
*/
|
|
@@ -45,6 +42,10 @@ TYPESCRIPT_VERSIONS.forEach(tsVersion => {
|
|
|
45
42
|
await removeDevDependencies(context);
|
|
46
43
|
|
|
47
44
|
await shell.shell(['npm', 'install', '--save-dev', `typescript@${tsVersion}`]);
|
|
45
|
+
|
|
46
|
+
// After we've removed devDependencies we need to re-install ts-node because it's necessary for `cdk synth`
|
|
47
|
+
await shell.shell(['npm', 'install', '--save-dev', `ts-node@^10`]);
|
|
48
|
+
|
|
48
49
|
await shell.shell(['npm', 'install']); // Older versions of npm require this to be a separate step from the one above
|
|
49
50
|
await shell.shell(['npx', 'tsc', '--version']);
|
|
50
51
|
await shell.shell(['npm', 'prune']);
|