@aws-cdk-testing/cli-integ 2.173.4 → 3.0.1
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/.eslintrc.js +9 -0
- package/LICENSE +2 -1
- package/bin/query-github +1 -1
- package/bin/query-github.js +3 -3
- package/bin/query-github.ts +56 -0
- package/bin/run-suite +1 -1
- package/bin/run-suite.js +3 -3
- package/bin/run-suite.ts +140 -0
- package/bin/stage-distribution +1 -1
- package/bin/stage-distribution.js +3 -2
- package/bin/stage-distribution.ts +267 -0
- package/bin/test-root +1 -1
- package/bin/test-root.ts +3 -0
- package/lib/aws.js +9 -6
- package/lib/aws.ts +263 -0
- package/lib/cli/query-github.d.ts +1 -0
- package/lib/cli/query-github.js +54 -0
- package/lib/cli/query-github.ts +56 -0
- package/lib/cli/run-suite.d.ts +1 -0
- package/lib/cli/run-suite.js +131 -0
- package/lib/cli/run-suite.ts +140 -0
- package/lib/cli/stage-distribution.d.ts +1 -0
- package/lib/cli/stage-distribution.js +217 -0
- package/lib/cli/stage-distribution.ts +267 -0
- package/lib/cli/test-root.d.ts +1 -0
- package/lib/cli/test-root.js +6 -0
- package/lib/cli/test-root.ts +3 -0
- package/lib/corking.ts +33 -0
- package/lib/eventually.js +3 -3
- package/lib/eventually.ts +42 -0
- package/lib/files.js +3 -2
- package/lib/files.ts +80 -0
- package/lib/github.js +6 -5
- package/lib/github.ts +43 -0
- package/lib/index.ts +13 -0
- package/lib/integ-test.ts +81 -0
- package/lib/lists.ts +9 -0
- package/lib/memoize.ts +14 -0
- package/lib/npm.ts +41 -0
- package/lib/package-sources/release-source.js +3 -2
- package/lib/package-sources/release-source.ts +81 -0
- package/lib/package-sources/repo-source.ts +111 -0
- package/lib/package-sources/repo-tools/npm.js +5 -4
- package/lib/package-sources/repo-tools/npm.ts +48 -0
- package/lib/package-sources/source.ts +35 -0
- package/lib/package-sources/subprocess.ts +15 -0
- package/lib/resource-pool.js +2 -2
- package/lib/resource-pool.ts +140 -0
- package/lib/resources.ts +4 -0
- package/lib/shell.js +8 -5
- package/lib/shell.ts +168 -0
- package/lib/staging/codeartifact.js +11 -8
- package/lib/staging/codeartifact.ts +387 -0
- package/lib/staging/maven.js +5 -3
- package/lib/staging/maven.ts +95 -0
- package/lib/staging/npm.ts +62 -0
- package/lib/staging/nuget.ts +75 -0
- package/lib/staging/parallel-shell.js +2 -2
- package/lib/staging/parallel-shell.ts +51 -0
- package/lib/staging/pypi.ts +50 -0
- package/lib/staging/usage-dir.ts +99 -0
- package/lib/with-aws.js +3 -2
- package/lib/with-aws.ts +67 -0
- package/lib/with-cdk-app.js +23 -14
- package/lib/with-cdk-app.ts +742 -0
- package/lib/with-cli-lib.ts +134 -0
- package/lib/with-packages.ts +15 -0
- package/lib/with-sam.js +7 -4
- package/lib/with-sam.ts +288 -0
- package/lib/with-temporary-directory.ts +35 -0
- package/lib/with-timeout.ts +33 -0
- package/lib/xpmutex.js +2 -2
- package/lib/xpmutex.ts +218 -0
- package/package.json +86 -62
- package/resources/cloud-assemblies/0.36.0/cdk.out +1 -0
- package/resources/cloud-assemblies/1.10.0-lookup-default-vpc/cdk.out +1 -0
- package/resources/cloud-assemblies/1.10.0-request-azs/cdk.out +1 -0
- package/tests/cli-integ-tests/bootstrapping.integtest.js +22 -13
- package/tests/cli-integ-tests/bootstrapping.integtest.ts +493 -0
- package/tests/cli-integ-tests/cli-lib.integtest.js +3 -2
- package/tests/cli-integ-tests/cli-lib.integtest.ts +90 -0
- package/tests/cli-integ-tests/cli.integtest.js +76 -49
- package/tests/cli-integ-tests/cli.integtest.ts +2874 -0
- package/tests/cli-integ-tests/garbage-collection.integtest.js +2 -2
- package/tests/cli-integ-tests/garbage-collection.integtest.ts +392 -0
- package/tests/init-csharp/init-csharp.integtest.ts +15 -0
- package/tests/init-fsharp/init-fsharp.integtest.ts +15 -0
- package/tests/init-go/init-go.integtest.ts +23 -0
- package/tests/init-java/init-java.integtest.ts +14 -0
- package/tests/init-javascript/init-javascript.integtest.ts +59 -0
- package/tests/init-python/init-python.integtest.ts +20 -0
- package/tests/init-typescript-app/init-typescript-app.integtest.ts +66 -0
- package/tests/init-typescript-lib/init-typescript-lib.integtest.ts +13 -0
- package/tests/tool-integrations/amplify.integtest.ts +43 -0
- package/tests/tool-integrations/with-tool-context.ts +14 -0
- package/tests/uberpackage/uberpackage.integtest.ts +11 -0
- package/resources/cdk-apps/cfn-include-app/.gitignore +0 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const yargs = require("yargs");
|
|
4
|
+
const github_1 = require("../github");
|
|
5
|
+
async function main() {
|
|
6
|
+
var _a;
|
|
7
|
+
const args = await yargs
|
|
8
|
+
.option('token', {
|
|
9
|
+
descripton: 'GitHub token (default: from environment GITHUB_TOKEN)',
|
|
10
|
+
alias: 't',
|
|
11
|
+
type: 'string',
|
|
12
|
+
requiresArg: true,
|
|
13
|
+
})
|
|
14
|
+
.command('last-release', 'Query the last release', cmd => cmd
|
|
15
|
+
.option('prior-to', {
|
|
16
|
+
description: 'Return the most recent release before the given version',
|
|
17
|
+
alias: 'p',
|
|
18
|
+
type: 'string',
|
|
19
|
+
requiresArg: true,
|
|
20
|
+
})
|
|
21
|
+
.option('major', {
|
|
22
|
+
description: 'Return the most recent release that matches',
|
|
23
|
+
alias: 'm',
|
|
24
|
+
type: 'string',
|
|
25
|
+
requiresArg: true,
|
|
26
|
+
}))
|
|
27
|
+
.demandCommand()
|
|
28
|
+
.help()
|
|
29
|
+
.showHelpOnFail(false)
|
|
30
|
+
.argv;
|
|
31
|
+
const command = args._[0];
|
|
32
|
+
const token = (_a = args.token) !== null && _a !== void 0 ? _a : process.env.GITHUB_TOKEN;
|
|
33
|
+
if (!token) {
|
|
34
|
+
throw new Error('Either pass --token or set GITHUB_TOKEN.');
|
|
35
|
+
}
|
|
36
|
+
switch (command) {
|
|
37
|
+
case 'last-release':
|
|
38
|
+
if (args['prior-to'] && args.major) {
|
|
39
|
+
throw new Error('Cannot pass both `--prior-to and --major at the same time');
|
|
40
|
+
}
|
|
41
|
+
// eslint-disable-next-line no-console
|
|
42
|
+
console.log(await (0, github_1.fetchPreviousVersion)(token, {
|
|
43
|
+
priorTo: args['prior-to'],
|
|
44
|
+
majorVersion: args.major,
|
|
45
|
+
}));
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
main().catch(e => {
|
|
50
|
+
// eslint-disable-next-line no-console
|
|
51
|
+
console.error(e);
|
|
52
|
+
process.exitCode = 1;
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZ2l0aHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicXVlcnktZ2l0aHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQStCO0FBQy9CLHNDQUFpRDtBQUVqRCxLQUFLLFVBQVUsSUFBSTs7SUFDakIsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLO1NBQ3JCLE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDZixVQUFVLEVBQUUsdURBQXVEO1FBQ25FLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLFFBQVE7UUFDZCxXQUFXLEVBQUUsSUFBSTtLQUNsQixDQUFDO1NBQ0QsT0FBTyxDQUFDLGNBQWMsRUFBRSx3QkFBd0IsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUc7U0FDMUQsTUFBTSxDQUFDLFVBQVUsRUFBRTtRQUNsQixXQUFXLEVBQUUseURBQXlEO1FBQ3RFLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLFFBQVE7UUFDZCxXQUFXLEVBQUUsSUFBSTtLQUNsQixDQUFDO1NBQ0QsTUFBTSxDQUFDLE9BQU8sRUFBRTtRQUNmLFdBQVcsRUFBRSw2Q0FBNkM7UUFDMUQsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUMsQ0FBQztTQUNKLGFBQWEsRUFBRTtTQUNmLElBQUksRUFBRTtTQUNOLGNBQWMsQ0FBQyxLQUFLLENBQUM7U0FDckIsSUFBSSxDQUFDO0lBRVIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUxQixNQUFNLEtBQUssR0FBRyxNQUFBLElBQUksQ0FBQyxLQUFLLG1DQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO0lBQ3JELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsUUFBUSxPQUFPLEVBQUUsQ0FBQztRQUNoQixLQUFLLGNBQWM7WUFDakIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7WUFDL0UsQ0FBQztZQUVELHNDQUFzQztZQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBQSw2QkFBb0IsRUFBQyxLQUFLLEVBQUU7Z0JBQzVDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUN6QixZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUs7YUFDekIsQ0FBQyxDQUFDLENBQUM7WUFDSixNQUFNO0lBQ1YsQ0FBQztBQUNILENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDZixzQ0FBc0M7SUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IGZldGNoUHJldmlvdXNWZXJzaW9uIH0gZnJvbSAnLi4vZ2l0aHViJztcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgYXJncyA9IGF3YWl0IHlhcmdzXG4gICAgLm9wdGlvbigndG9rZW4nLCB7XG4gICAgICBkZXNjcmlwdG9uOiAnR2l0SHViIHRva2VuIChkZWZhdWx0OiBmcm9tIGVudmlyb25tZW50IEdJVEhVQl9UT0tFTiknLFxuICAgICAgYWxpYXM6ICd0JyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgfSlcbiAgICAuY29tbWFuZCgnbGFzdC1yZWxlYXNlJywgJ1F1ZXJ5IHRoZSBsYXN0IHJlbGVhc2UnLCBjbWQgPT4gY21kXG4gICAgICAub3B0aW9uKCdwcmlvci10bycsIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdSZXR1cm4gdGhlIG1vc3QgcmVjZW50IHJlbGVhc2UgYmVmb3JlIHRoZSBnaXZlbiB2ZXJzaW9uJyxcbiAgICAgICAgYWxpYXM6ICdwJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb24oJ21ham9yJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1JldHVybiB0aGUgbW9zdCByZWNlbnQgcmVsZWFzZSB0aGF0IG1hdGNoZXMnLFxuICAgICAgICBhbGlhczogJ20nLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICB9KSlcbiAgICAuZGVtYW5kQ29tbWFuZCgpXG4gICAgLmhlbHAoKVxuICAgIC5zaG93SGVscE9uRmFpbChmYWxzZSlcbiAgICAuYXJndjtcblxuICBjb25zdCBjb21tYW5kID0gYXJncy5fWzBdO1xuXG4gIGNvbnN0IHRva2VuID0gYXJncy50b2tlbiA/PyBwcm9jZXNzLmVudi5HSVRIVUJfVE9LRU47XG4gIGlmICghdG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0VpdGhlciBwYXNzIC0tdG9rZW4gb3Igc2V0IEdJVEhVQl9UT0tFTi4nKTtcbiAgfVxuXG4gIHN3aXRjaCAoY29tbWFuZCkge1xuICAgIGNhc2UgJ2xhc3QtcmVsZWFzZSc6XG4gICAgICBpZiAoYXJnc1sncHJpb3ItdG8nXSAmJiBhcmdzLm1ham9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHBhc3MgYm90aCBgLS1wcmlvci10byBhbmQgLS1tYWpvciBhdCB0aGUgc2FtZSB0aW1lJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmxvZyhhd2FpdCBmZXRjaFByZXZpb3VzVmVyc2lvbih0b2tlbiwge1xuICAgICAgICBwcmlvclRvOiBhcmdzWydwcmlvci10byddLFxuICAgICAgICBtYWpvclZlcnNpb246IGFyZ3MubWFqb3IsXG4gICAgICB9KSk7XG4gICAgICBicmVhaztcbiAgfVxufVxuXG5tYWluKCkuY2F0Y2goZSA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUuZXJyb3IoZSk7XG4gIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as yargs from 'yargs';
|
|
2
|
+
import { fetchPreviousVersion } from '../github';
|
|
3
|
+
|
|
4
|
+
async function main() {
|
|
5
|
+
const args = await yargs
|
|
6
|
+
.option('token', {
|
|
7
|
+
descripton: 'GitHub token (default: from environment GITHUB_TOKEN)',
|
|
8
|
+
alias: 't',
|
|
9
|
+
type: 'string',
|
|
10
|
+
requiresArg: true,
|
|
11
|
+
})
|
|
12
|
+
.command('last-release', 'Query the last release', cmd => cmd
|
|
13
|
+
.option('prior-to', {
|
|
14
|
+
description: 'Return the most recent release before the given version',
|
|
15
|
+
alias: 'p',
|
|
16
|
+
type: 'string',
|
|
17
|
+
requiresArg: true,
|
|
18
|
+
})
|
|
19
|
+
.option('major', {
|
|
20
|
+
description: 'Return the most recent release that matches',
|
|
21
|
+
alias: 'm',
|
|
22
|
+
type: 'string',
|
|
23
|
+
requiresArg: true,
|
|
24
|
+
}))
|
|
25
|
+
.demandCommand()
|
|
26
|
+
.help()
|
|
27
|
+
.showHelpOnFail(false)
|
|
28
|
+
.argv;
|
|
29
|
+
|
|
30
|
+
const command = args._[0];
|
|
31
|
+
|
|
32
|
+
const token = args.token ?? process.env.GITHUB_TOKEN;
|
|
33
|
+
if (!token) {
|
|
34
|
+
throw new Error('Either pass --token or set GITHUB_TOKEN.');
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
switch (command) {
|
|
38
|
+
case 'last-release':
|
|
39
|
+
if (args['prior-to'] && args.major) {
|
|
40
|
+
throw new Error('Cannot pass both `--prior-to and --major at the same time');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// eslint-disable-next-line no-console
|
|
44
|
+
console.log(await fetchPreviousVersion(token, {
|
|
45
|
+
priorTo: args['prior-to'],
|
|
46
|
+
majorVersion: args.major,
|
|
47
|
+
}));
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
main().catch(e => {
|
|
53
|
+
// eslint-disable-next-line no-console
|
|
54
|
+
console.error(e);
|
|
55
|
+
process.exitCode = 1;
|
|
56
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/* eslint-disable no-console */
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const jest = require("jest");
|
|
6
|
+
const yargs = require("yargs");
|
|
7
|
+
const release_source_1 = require("../package-sources/release-source");
|
|
8
|
+
const repo_source_1 = require("../package-sources/repo-source");
|
|
9
|
+
const subprocess_1 = require("../package-sources/subprocess");
|
|
10
|
+
async function main() {
|
|
11
|
+
var _a;
|
|
12
|
+
const args = await yargs
|
|
13
|
+
.usage('$0 <SUITENAME>')
|
|
14
|
+
.positional('SUITENAME', {
|
|
15
|
+
descripton: 'Name of the test suite to run',
|
|
16
|
+
type: 'string',
|
|
17
|
+
demandOption: true,
|
|
18
|
+
})
|
|
19
|
+
.option('test', {
|
|
20
|
+
descripton: 'Test pattern to selectively run tests',
|
|
21
|
+
alias: 't',
|
|
22
|
+
type: 'string',
|
|
23
|
+
requiresArg: true,
|
|
24
|
+
})
|
|
25
|
+
.option('test-file', {
|
|
26
|
+
description: 'The specific test file to run',
|
|
27
|
+
type: 'string',
|
|
28
|
+
requiresArg: true,
|
|
29
|
+
})
|
|
30
|
+
.option('use-source', {
|
|
31
|
+
descripton: 'Use TypeScript packages from the given source repository (or "auto")',
|
|
32
|
+
alias: 's',
|
|
33
|
+
type: 'string',
|
|
34
|
+
requiresArg: true,
|
|
35
|
+
})
|
|
36
|
+
.option('use-cli-release', {
|
|
37
|
+
descripton: 'Run the current tests against the CLI at the given version',
|
|
38
|
+
alias: 'u',
|
|
39
|
+
type: 'string',
|
|
40
|
+
requiresArg: true,
|
|
41
|
+
})
|
|
42
|
+
.option('auto-source', {
|
|
43
|
+
alias: 'a',
|
|
44
|
+
description: 'Automatically find the source tree from the current working directory',
|
|
45
|
+
type: 'boolean',
|
|
46
|
+
requiresArg: false,
|
|
47
|
+
})
|
|
48
|
+
.option('runInBand', {
|
|
49
|
+
descripton: 'Run all tests in one Node process',
|
|
50
|
+
alias: 'i',
|
|
51
|
+
type: 'boolean',
|
|
52
|
+
})
|
|
53
|
+
.options('framework-version', {
|
|
54
|
+
description: 'Framework version to use, if different than the CLI version (not all suites respect this)',
|
|
55
|
+
alias: 'f',
|
|
56
|
+
type: 'string',
|
|
57
|
+
})
|
|
58
|
+
.options('verbose', {
|
|
59
|
+
alias: 'v',
|
|
60
|
+
description: 'Run in verbose mode',
|
|
61
|
+
type: 'boolean',
|
|
62
|
+
requiresArg: false,
|
|
63
|
+
})
|
|
64
|
+
.options('passWithNoTests', {
|
|
65
|
+
description: 'Allow passing if the test suite is not found (default true when IS_CANARY mode, false otherwise)',
|
|
66
|
+
type: 'boolean',
|
|
67
|
+
requiresArg: false,
|
|
68
|
+
})
|
|
69
|
+
.help()
|
|
70
|
+
.showHelpOnFail(false)
|
|
71
|
+
.argv;
|
|
72
|
+
const suiteName = args._[0];
|
|
73
|
+
if (!suiteName) {
|
|
74
|
+
throw new Error('Usage: run-suite <SUITENAME>');
|
|
75
|
+
}
|
|
76
|
+
let packageSource;
|
|
77
|
+
function usePackageSource(s) {
|
|
78
|
+
if (packageSource) {
|
|
79
|
+
throw new Error('Cannot specify two package sources');
|
|
80
|
+
}
|
|
81
|
+
packageSource = s;
|
|
82
|
+
}
|
|
83
|
+
if (args['use-source'] || args['auto-source']) {
|
|
84
|
+
if (args['framework-version']) {
|
|
85
|
+
throw new Error('Cannot use --framework-version with --use-source');
|
|
86
|
+
}
|
|
87
|
+
const root = args['use-source'] && args['use-source'] !== 'auto'
|
|
88
|
+
? args['use-source']
|
|
89
|
+
: await (0, repo_source_1.autoFindRoot)();
|
|
90
|
+
usePackageSource(new repo_source_1.RepoPackageSourceSetup(root));
|
|
91
|
+
}
|
|
92
|
+
else if (args['use-cli-release']) {
|
|
93
|
+
usePackageSource(new release_source_1.ReleasePackageSourceSetup(args['use-cli-release'], args['framework-version']));
|
|
94
|
+
}
|
|
95
|
+
if (!packageSource) {
|
|
96
|
+
throw new Error('Specify either --use-source or --use-cli-release');
|
|
97
|
+
}
|
|
98
|
+
console.log(`Package source: ${packageSource.description}`);
|
|
99
|
+
console.log(`Test suite: ${suiteName}`);
|
|
100
|
+
await packageSource.prepare();
|
|
101
|
+
(0, subprocess_1.serializeForSubprocess)(packageSource);
|
|
102
|
+
if (args.verbose) {
|
|
103
|
+
process.env.VERBOSE = '1';
|
|
104
|
+
}
|
|
105
|
+
// Motivation behind this behavior: when adding a new test suite to the pipeline, because of the way our
|
|
106
|
+
// Pipeline package works, the suite would be added to the pipeline AND as a canary immediately. The canary
|
|
107
|
+
// would fail until the package was actually released, so for canaries we make an exception so that the initial
|
|
108
|
+
// canary would succeed even if the suite wasn't yet available. The fact that the suite is not optional in
|
|
109
|
+
// the pipeline protects us from typos.
|
|
110
|
+
const passWithNoTests = (_a = args.passWithNoTests) !== null && _a !== void 0 ? _a : !!process.env.IS_CANARY;
|
|
111
|
+
// Communicate with the config file (integ.jest.config.js)
|
|
112
|
+
process.env.TEST_SUITE_NAME = suiteName;
|
|
113
|
+
try {
|
|
114
|
+
await jest.run([
|
|
115
|
+
...args.runInBand ? ['-i'] : [],
|
|
116
|
+
...args.test ? ['-t', args.test] : [],
|
|
117
|
+
...args.verbose ? ['--verbose'] : [],
|
|
118
|
+
...passWithNoTests ? ['--passWithNoTests'] : [],
|
|
119
|
+
...args['test-file'] ? [args['test-file']] : [],
|
|
120
|
+
], path.resolve(__dirname, '..', '..', 'resources', 'integ.jest.config.js'));
|
|
121
|
+
}
|
|
122
|
+
finally {
|
|
123
|
+
await packageSource.cleanup();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
main().catch(e => {
|
|
127
|
+
// eslint-disable-next-line no-console
|
|
128
|
+
console.error(e);
|
|
129
|
+
process.exitCode = 1;
|
|
130
|
+
});
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXN1aXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicnVuLXN1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLHNFQUE4RTtBQUM5RSxnRUFBc0Y7QUFFdEYsOERBQXVFO0FBRXZFLEtBQUssVUFBVSxJQUFJOztJQUNqQixNQUFNLElBQUksR0FBRyxNQUFNLEtBQUs7U0FDckIsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1NBQ3ZCLFVBQVUsQ0FBQyxXQUFXLEVBQUU7UUFDdkIsVUFBVSxFQUFFLCtCQUErQjtRQUMzQyxJQUFJLEVBQUUsUUFBUTtRQUNkLFlBQVksRUFBRSxJQUFJO0tBQ25CLENBQUM7U0FDRCxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQ2QsVUFBVSxFQUFFLHVDQUF1QztRQUNuRCxLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLElBQUk7S0FDbEIsQ0FBQztTQUNELE1BQU0sQ0FBQyxXQUFXLEVBQUU7UUFDbkIsV0FBVyxFQUFFLCtCQUErQjtRQUM1QyxJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUM7U0FDRCxNQUFNLENBQUMsWUFBWSxFQUFFO1FBQ3BCLFVBQVUsRUFBRSxzRUFBc0U7UUFDbEYsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUM7U0FDRCxNQUFNLENBQUMsaUJBQWlCLEVBQUU7UUFDekIsVUFBVSxFQUFFLDREQUE0RDtRQUN4RSxLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLElBQUk7S0FDbEIsQ0FBQztTQUNELE1BQU0sQ0FBQyxhQUFhLEVBQUU7UUFDckIsS0FBSyxFQUFFLEdBQUc7UUFDVixXQUFXLEVBQUUsdUVB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Q0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGplc3QgZnJvbSAnamVzdCc7XG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgeyBSZWxlYXNlUGFja2FnZVNvdXJjZVNldHVwIH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL3JlbGVhc2Utc291cmNlJztcbmltcG9ydCB7IFJlcG9QYWNrYWdlU291cmNlU2V0dXAsIGF1dG9GaW5kUm9vdCB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlcy9yZXBvLXNvdXJjZSc7XG5pbXBvcnQgeyBJUGFja2FnZVNvdXJjZVNldHVwIH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL3NvdXJjZSc7XG5pbXBvcnQgeyBzZXJpYWxpemVGb3JTdWJwcm9jZXNzIH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL3N1YnByb2Nlc3MnO1xuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICBjb25zdCBhcmdzID0gYXdhaXQgeWFyZ3NcbiAgICAudXNhZ2UoJyQwIDxTVUlURU5BTUU+JylcbiAgICAucG9zaXRpb25hbCgnU1VJVEVOQU1FJywge1xuICAgICAgZGVzY3JpcHRvbjogJ05hbWUgb2YgdGhlIHRlc3Qgc3VpdGUgdG8gcnVuJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgZGVtYW5kT3B0aW9uOiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbigndGVzdCcsIHtcbiAgICAgIGRlc2NyaXB0b246ICdUZXN0IHBhdHRlcm4gdG8gc2VsZWN0aXZlbHkgcnVuIHRlc3RzJyxcbiAgICAgIGFsaWFzOiAndCcsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbigndGVzdC1maWxlJywge1xuICAgICAgZGVzY3JpcHRpb246ICdUaGUgc3BlY2lmaWMgdGVzdCBmaWxlIHRvIHJ1bicsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbigndXNlLXNvdXJjZScsIHtcbiAgICAgIGRlc2NyaXB0b246ICdVc2UgVHlwZVNjcmlwdCBwYWNrYWdlcyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgcmVwb3NpdG9yeSAob3IgXCJhdXRvXCIpJyxcbiAgICAgIGFsaWFzOiAncycsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbigndXNlLWNsaS1yZWxlYXNlJywge1xuICAgICAgZGVzY3JpcHRvbjogJ1J1biB0aGUgY3VycmVudCB0ZXN0cyBhZ2FpbnN0IHRoZSBDTEkgYXQgdGhlIGdpdmVuIHZlcnNpb24nLFxuICAgICAgYWxpYXM6ICd1JyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgfSlcbiAgICAub3B0aW9uKCdhdXRvLXNvdXJjZScsIHtcbiAgICAgIGFsaWFzOiAnYScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0F1dG9tYXRpY2FsbHkgZmluZCB0aGUgc291cmNlIHRyZWUgZnJvbSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeScsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9uKCdydW5JbkJhbmQnLCB7XG4gICAgICBkZXNjcmlwdG9uOiAnUnVuIGFsbCB0ZXN0cyBpbiBvbmUgTm9kZSBwcm9jZXNzJyxcbiAgICAgIGFsaWFzOiAnaScsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgfSlcbiAgICAub3B0aW9ucygnZnJhbWV3b3JrLXZlcnNpb24nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0ZyYW1ld29yayB2ZXJzaW9uIHRvIHVzZSwgaWYgZGlmZmVyZW50IHRoYW4gdGhlIENMSSB2ZXJzaW9uIChub3QgYWxsIHN1aXRlcyByZXNwZWN0IHRoaXMpJyxcbiAgICAgIGFsaWFzOiAnZicsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICB9KVxuICAgIC5vcHRpb25zKCd2ZXJib3NlJywge1xuICAgICAgYWxpYXM6ICd2JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnUnVuIGluIHZlcmJvc2UgbW9kZScsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9ucygncGFzc1dpdGhOb1Rlc3RzJywge1xuICAgICAgZGVzY3JpcHRpb246ICdBbGxvdyBwYXNzaW5nIGlmIHRoZSB0ZXN0IHN1aXRlIGlzIG5vdCBmb3VuZCAoZGVmYXVsdCB0cnVlIHdoZW4gSVNfQ0FOQVJZIG1vZGUsIGZhbHNlIG90aGVyd2lzZSknLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgIH0pXG4gICAgLmhlbHAoKVxuICAgIC5zaG93SGVscE9uRmFpbChmYWxzZSlcbiAgICAuYXJndjtcblxuICBjb25zdCBzdWl0ZU5hbWUgPSBhcmdzLl9bMF0gYXMgc3RyaW5nO1xuICBpZiAoIXN1aXRlTmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVXNhZ2U6IHJ1bi1zdWl0ZSA8U1VJVEVOQU1FPicpO1xuICB9XG5cbiAgbGV0IHBhY2thZ2VTb3VyY2U6IHVuZGVmaW5lZCB8IElQYWNrYWdlU291cmNlU2V0dXA7XG4gIGZ1bmN0aW9uIHVzZVBhY2thZ2VTb3VyY2UoczogSVBhY2thZ2VTb3VyY2VTZXR1cCkge1xuICAgIGlmIChwYWNrYWdlU291cmNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzcGVjaWZ5IHR3byBwYWNrYWdlIHNvdXJjZXMnKTtcbiAgICB9XG4gICAgcGFja2FnZVNvdXJjZSA9IHM7XG4gIH1cblxuICBpZiAoYXJnc1sndXNlLXNvdXJjZSddIHx8IGFyZ3NbJ2F1dG8tc291cmNlJ10pIHtcbiAgICBpZiAoYXJnc1snZnJhbWV3b3JrLXZlcnNpb24nXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXNlIC0tZnJhbWV3b3JrLXZlcnNpb24gd2l0aCAtLXVzZS1zb3VyY2UnKTtcbiAgICB9XG5cbiAgICBjb25zdCByb290ID0gYXJnc1sndXNlLXNvdXJjZSddICYmIGFyZ3NbJ3VzZS1zb3VyY2UnXSAhPT0gJ2F1dG8nXG4gICAgICA/IGFyZ3NbJ3VzZS1zb3VyY2UnXVxuICAgICAgOiBhd2FpdCBhdXRvRmluZFJvb3QoKTtcblxuICAgIHVzZVBhY2thZ2VTb3VyY2UobmV3IFJlcG9QYWNrYWdlU291cmNlU2V0dXAocm9vdCkpO1xuICB9IGVsc2UgaWYgKGFyZ3NbJ3VzZS1jbGktcmVsZWFzZSddKSB7XG4gICAgdXNlUGFja2FnZVNvdXJjZShuZXcgUmVsZWFzZVBhY2thZ2VTb3VyY2VTZXR1cChhcmdzWyd1c2UtY2xpLXJlbGVhc2UnXSwgYXJnc1snZnJhbWV3b3JrLXZlcnNpb24nXSkpO1xuICB9XG4gIGlmICghcGFja2FnZVNvdXJjZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignU3BlY2lmeSBlaXRoZXIgLS11c2Utc291cmNlIG9yIC0tdXNlLWNsaS1yZWxlYXNlJyk7XG4gIH1cblxuICBjb25zb2xlLmxvZyhgUGFja2FnZSBzb3VyY2U6ICR7cGFja2FnZVNvdXJjZS5kZXNjcmlwdGlvbn1gKTtcbiAgY29uc29sZS5sb2coYFRlc3Qgc3VpdGU6ICAgICAke3N1aXRlTmFtZX1gKTtcblxuICBhd2FpdCBwYWNrYWdlU291cmNlLnByZXBhcmUoKTtcbiAgc2VyaWFsaXplRm9yU3VicHJvY2VzcyhwYWNrYWdlU291cmNlKTtcblxuICBpZiAoYXJncy52ZXJib3NlKSB7XG4gICAgcHJvY2Vzcy5lbnYuVkVSQk9TRSA9ICcxJztcbiAgfVxuXG4gIC8vIE1vdGl2YXRpb24gYmVoaW5kIHRoaXMgYmVoYXZpb3I6IHdoZW4gYWRkaW5nIGEgbmV3IHRlc3Qgc3VpdGUgdG8gdGhlIHBpcGVsaW5lLCBiZWNhdXNlIG9mIHRoZSB3YXkgb3VyXG4gIC8vIFBpcGVsaW5lIHBhY2thZ2Ugd29ya3MsIHRoZSBzdWl0ZSB3b3VsZCBiZSBhZGRlZCB0byB0aGUgcGlwZWxpbmUgQU5EIGFzIGEgY2FuYXJ5IGltbWVkaWF0ZWx5LiBUaGUgY2FuYXJ5XG4gIC8vIHdvdWxkIGZhaWwgdW50aWwgdGhlIHBhY2thZ2Ugd2FzIGFjdHVhbGx5IHJlbGVhc2VkLCBzbyBmb3IgY2FuYXJpZXMgd2UgbWFrZSBhbiBleGNlcHRpb24gc28gdGhhdCB0aGUgaW5pdGlhbFxuICAvLyBjYW5hcnkgd291bGQgc3VjY2VlZCBldmVuIGlmIHRoZSBzdWl0ZSB3YXNuJ3QgeWV0IGF2YWlsYWJsZS4gVGhlIGZhY3QgdGhhdCB0aGUgc3VpdGUgaXMgbm90IG9wdGlvbmFsIGluXG4gIC8vIHRoZSBwaXBlbGluZSBwcm90ZWN0cyB1cyBmcm9tIHR5cG9zLlxuICBjb25zdCBwYXNzV2l0aE5vVGVzdHMgPSBhcmdzLnBhc3NXaXRoTm9UZXN0cyA/PyAhIXByb2Nlc3MuZW52LklTX0NBTkFSWTtcblxuICAvLyBDb21tdW5pY2F0ZSB3aXRoIHRoZSBjb25maWcgZmlsZSAoaW50ZWcuamVzdC5jb25maWcuanMpXG4gIHByb2Nlc3MuZW52LlRFU1RfU1VJVEVfTkFNRSA9IHN1aXRlTmFtZTtcblxuICB0cnkge1xuICAgIGF3YWl0IGplc3QucnVuKFtcbiAgICAgIC4uLmFyZ3MucnVuSW5CYW5kID8gWyctaSddIDogW10sXG4gICAgICAuLi5hcmdzLnRlc3QgPyBbJy10JywgYXJncy50ZXN0XSA6IFtdLFxuICAgICAgLi4uYXJncy52ZXJib3NlID8gWyctLXZlcmJvc2UnXSA6IFtdLFxuICAgICAgLi4ucGFzc1dpdGhOb1Rlc3RzID8gWyctLXBhc3NXaXRoTm9UZXN0cyddIDogW10sXG4gICAgICAuLi5hcmdzWyd0ZXN0LWZpbGUnXSA/IFthcmdzWyd0ZXN0LWZpbGUnXV0gOiBbXSxcbiAgICBdLCBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAncmVzb3VyY2VzJywgJ2ludGVnLmplc3QuY29uZmlnLmpzJykpO1xuXG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcGFja2FnZVNvdXJjZS5jbGVhbnVwKCk7XG4gIH1cbn1cblxubWFpbigpLmNhdGNoKGUgPT4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmVycm9yKGUpO1xuICBwcm9jZXNzLmV4aXRDb2RlID0gMTtcbn0pO1xuIl19
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import * as jest from 'jest';
|
|
4
|
+
import * as yargs from 'yargs';
|
|
5
|
+
import { ReleasePackageSourceSetup } from '../package-sources/release-source';
|
|
6
|
+
import { RepoPackageSourceSetup, autoFindRoot } from '../package-sources/repo-source';
|
|
7
|
+
import { IPackageSourceSetup } from '../package-sources/source';
|
|
8
|
+
import { serializeForSubprocess } from '../package-sources/subprocess';
|
|
9
|
+
|
|
10
|
+
async function main() {
|
|
11
|
+
const args = await yargs
|
|
12
|
+
.usage('$0 <SUITENAME>')
|
|
13
|
+
.positional('SUITENAME', {
|
|
14
|
+
descripton: 'Name of the test suite to run',
|
|
15
|
+
type: 'string',
|
|
16
|
+
demandOption: true,
|
|
17
|
+
})
|
|
18
|
+
.option('test', {
|
|
19
|
+
descripton: 'Test pattern to selectively run tests',
|
|
20
|
+
alias: 't',
|
|
21
|
+
type: 'string',
|
|
22
|
+
requiresArg: true,
|
|
23
|
+
})
|
|
24
|
+
.option('test-file', {
|
|
25
|
+
description: 'The specific test file to run',
|
|
26
|
+
type: 'string',
|
|
27
|
+
requiresArg: true,
|
|
28
|
+
})
|
|
29
|
+
.option('use-source', {
|
|
30
|
+
descripton: 'Use TypeScript packages from the given source repository (or "auto")',
|
|
31
|
+
alias: 's',
|
|
32
|
+
type: 'string',
|
|
33
|
+
requiresArg: true,
|
|
34
|
+
})
|
|
35
|
+
.option('use-cli-release', {
|
|
36
|
+
descripton: 'Run the current tests against the CLI at the given version',
|
|
37
|
+
alias: 'u',
|
|
38
|
+
type: 'string',
|
|
39
|
+
requiresArg: true,
|
|
40
|
+
})
|
|
41
|
+
.option('auto-source', {
|
|
42
|
+
alias: 'a',
|
|
43
|
+
description: 'Automatically find the source tree from the current working directory',
|
|
44
|
+
type: 'boolean',
|
|
45
|
+
requiresArg: false,
|
|
46
|
+
})
|
|
47
|
+
.option('runInBand', {
|
|
48
|
+
descripton: 'Run all tests in one Node process',
|
|
49
|
+
alias: 'i',
|
|
50
|
+
type: 'boolean',
|
|
51
|
+
})
|
|
52
|
+
.options('framework-version', {
|
|
53
|
+
description: 'Framework version to use, if different than the CLI version (not all suites respect this)',
|
|
54
|
+
alias: 'f',
|
|
55
|
+
type: 'string',
|
|
56
|
+
})
|
|
57
|
+
.options('verbose', {
|
|
58
|
+
alias: 'v',
|
|
59
|
+
description: 'Run in verbose mode',
|
|
60
|
+
type: 'boolean',
|
|
61
|
+
requiresArg: false,
|
|
62
|
+
})
|
|
63
|
+
.options('passWithNoTests', {
|
|
64
|
+
description: 'Allow passing if the test suite is not found (default true when IS_CANARY mode, false otherwise)',
|
|
65
|
+
type: 'boolean',
|
|
66
|
+
requiresArg: false,
|
|
67
|
+
})
|
|
68
|
+
.help()
|
|
69
|
+
.showHelpOnFail(false)
|
|
70
|
+
.argv;
|
|
71
|
+
|
|
72
|
+
const suiteName = args._[0] as string;
|
|
73
|
+
if (!suiteName) {
|
|
74
|
+
throw new Error('Usage: run-suite <SUITENAME>');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
let packageSource: undefined | IPackageSourceSetup;
|
|
78
|
+
function usePackageSource(s: IPackageSourceSetup) {
|
|
79
|
+
if (packageSource) {
|
|
80
|
+
throw new Error('Cannot specify two package sources');
|
|
81
|
+
}
|
|
82
|
+
packageSource = s;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (args['use-source'] || args['auto-source']) {
|
|
86
|
+
if (args['framework-version']) {
|
|
87
|
+
throw new Error('Cannot use --framework-version with --use-source');
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const root = args['use-source'] && args['use-source'] !== 'auto'
|
|
91
|
+
? args['use-source']
|
|
92
|
+
: await autoFindRoot();
|
|
93
|
+
|
|
94
|
+
usePackageSource(new RepoPackageSourceSetup(root));
|
|
95
|
+
} else if (args['use-cli-release']) {
|
|
96
|
+
usePackageSource(new ReleasePackageSourceSetup(args['use-cli-release'], args['framework-version']));
|
|
97
|
+
}
|
|
98
|
+
if (!packageSource) {
|
|
99
|
+
throw new Error('Specify either --use-source or --use-cli-release');
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
console.log(`Package source: ${packageSource.description}`);
|
|
103
|
+
console.log(`Test suite: ${suiteName}`);
|
|
104
|
+
|
|
105
|
+
await packageSource.prepare();
|
|
106
|
+
serializeForSubprocess(packageSource);
|
|
107
|
+
|
|
108
|
+
if (args.verbose) {
|
|
109
|
+
process.env.VERBOSE = '1';
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Motivation behind this behavior: when adding a new test suite to the pipeline, because of the way our
|
|
113
|
+
// Pipeline package works, the suite would be added to the pipeline AND as a canary immediately. The canary
|
|
114
|
+
// would fail until the package was actually released, so for canaries we make an exception so that the initial
|
|
115
|
+
// canary would succeed even if the suite wasn't yet available. The fact that the suite is not optional in
|
|
116
|
+
// the pipeline protects us from typos.
|
|
117
|
+
const passWithNoTests = args.passWithNoTests ?? !!process.env.IS_CANARY;
|
|
118
|
+
|
|
119
|
+
// Communicate with the config file (integ.jest.config.js)
|
|
120
|
+
process.env.TEST_SUITE_NAME = suiteName;
|
|
121
|
+
|
|
122
|
+
try {
|
|
123
|
+
await jest.run([
|
|
124
|
+
...args.runInBand ? ['-i'] : [],
|
|
125
|
+
...args.test ? ['-t', args.test] : [],
|
|
126
|
+
...args.verbose ? ['--verbose'] : [],
|
|
127
|
+
...passWithNoTests ? ['--passWithNoTests'] : [],
|
|
128
|
+
...args['test-file'] ? [args['test-file']] : [],
|
|
129
|
+
], path.resolve(__dirname, '..', '..', 'resources', 'integ.jest.config.js'));
|
|
130
|
+
|
|
131
|
+
} finally {
|
|
132
|
+
await packageSource.cleanup();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
main().catch(e => {
|
|
137
|
+
// eslint-disable-next-line no-console
|
|
138
|
+
console.error(e);
|
|
139
|
+
process.exitCode = 1;
|
|
140
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|