55 lines
1.2 KiB
TypeScript
55 lines
1.2 KiB
TypeScript
import { execSync } from "node:child_process";
|
|
import { globSync } from "glob";
|
|
import yargs from "yargs/yargs";
|
|
import { hideBin } from "yargs/helpers";
|
|
|
|
type Result = {
|
|
file: string;
|
|
success: boolean;
|
|
};
|
|
|
|
const results: Result[] = [];
|
|
|
|
// Parse command-line arguments
|
|
const argv = yargs(hideBin(process.argv))
|
|
.option("files", {
|
|
alias: "f",
|
|
description: "Specify files to test",
|
|
type: "array",
|
|
})
|
|
.help()
|
|
.alias("help", "h").argv;
|
|
|
|
const filesFromArgs = argv.files;
|
|
|
|
// If no files are specified, run all tests
|
|
const files =
|
|
filesFromArgs && filesFromArgs.length > 0
|
|
? filesFromArgs
|
|
: globSync("src/**/*.ts");
|
|
|
|
for (const file of files) {
|
|
try {
|
|
execSync(`npm run script -- ${file}`, { stdio: "inherit" });
|
|
results.push({ file, success: true });
|
|
} catch (error) {
|
|
results.push({ file, success: false });
|
|
}
|
|
}
|
|
|
|
const failedCount = results.filter((x) => !x.success).length;
|
|
|
|
if (failedCount > 0) {
|
|
console.log(`❌ ${failedCount}/${results.length} examples failed to run:`);
|
|
} else {
|
|
console.log(`🎉 All examples ran successfully!`);
|
|
}
|
|
|
|
for (const result of results) {
|
|
console.log(` - ${result.success ? "✅" : "❌"} ${result.file}`);
|
|
}
|
|
|
|
if (failedCount > 0) {
|
|
process.exit(1);
|
|
}
|