This repository has been archived by the owner on Jun 17, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
/
ecosystem-ci.ts
122 lines (115 loc) · 3.53 KB
/
ecosystem-ci.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import fs from "fs";
import path from "path";
import { cac } from "cac";
import {
enableIgnoredTest,
getSuitesToRun,
installSwc,
setupEnvironment,
testDir,
} from "./utils";
import { CommandOptions, RunOptions } from "./types";
const cli = cac();
cli
.command(
"run-suites [...suites]",
"run single suite with pre-built @swc/core",
)
.option(
"--verify",
"verify checkout by running tests before using local swc",
{ default: false },
)
.option("--release <version>", "@swc/core release to use from npm registry", {
default: "nightly",
})
.action(async (suites, options: CommandOptions) => {
const { root, swcPath, workspace } = await setupEnvironment();
const suitesToRun = getSuitesToRun(suites, root);
await installSwc({ version: options.release });
const runOptions: RunOptions = {
...options,
root,
swcPath,
workspace,
};
for (const suite of suitesToRun) {
await run(suite, runOptions);
}
});
cli
.command("enable [suite]", "enable single test suite")
.action(async (suite) => {
if (suite === "_") {
const { root } = await setupEnvironment();
const availableSuites: string[] = fs
.readdirSync(path.join(root, "tests"))
.filter((f: string) => f.startsWith("_") && f.endsWith(".ts"))
.map((f: string) => f.slice(1, -3));
availableSuites.sort();
for (const suite of availableSuites) {
await enableIgnoredTest(suite);
}
return;
}
await enableIgnoredTest(suite);
});
// cli
// .command(
// "bisect [...suites]",
// "use git bisect to find a commit in vite that broke suites",
// )
// .option("--good <ref>", "last known good ref, e.g. a previous tag. REQUIRED!")
// .option("--verify", "verify checkouts by running tests", { default: false })
// .option("--repo <repo>", "vite repository to use", {
// default: "swc-project/swc",
// })
// .option("--branch <branch>", "vite branch to use", { default: "main" })
// .option("--tag <tag>", "vite tag to use")
// .option("--commit <commit>", "vite commit sha to use")
// .action(async (suites, options: CommandOptions & { good: string }) => {
// if (!options.good) {
// console.log(
// "you have to specify a known good version with `--good <commit|tag>`",
// );
// process.exit(1);
// }
// const { root, swcPath, workspace } = await setupEnvironment();
// const suitesToRun = getSuitesToRun(suites, root);
// let isFirstRun = true;
// const { verify } = options;
// const runSuite = async () => {
// try {
// await buildSwc({ verify: isFirstRun && verify });
// for (const suite of suitesToRun) {
// await run(suite, {
// verify: !!(isFirstRun && verify),
// skipGit: !isFirstRun,
// root,
// swcPath,
// workspace,
// });
// }
// isFirstRun = false;
// return null;
// } catch (e) {
// return e;
// }
// };
// await setupSwcRepo({ ...options, shallow: false });
// const initialError = await runSuite();
// if (initialError) {
// await bisectSwc(options.good, runSuite);
// } else {
// console.log(`no errors for starting commit, cannot bisect`);
// }
// });
cli.help();
cli.parse();
async function run(suite: string, options: RunOptions) {
const { test } = await import(`./${testDir}/${suite}.ts`);
await test({
...options,
workspace: path.resolve(options.workspace, suite),
});
}