@moonsong-labs/moonwall-cli
Version:
Testing framework for the Moon family of projects
82 lines (79 loc) • 2.35 kB
JavaScript
import {
MoonwallContext,
contextCreator
} from "./chunk-WICDGWJQ.js";
import {
importJsonConfig
} from "./chunk-3P647NU6.js";
// src/cmds/runTests.ts
import { startVitest } from "vitest/node";
import path from "path";
import chalk from "chalk";
async function testCmd(envName, additionalArgs) {
const globalConfig = await importJsonConfig();
const env = globalConfig.environments.find(({ name }) => name === envName);
if (!!!env) {
const envList = globalConfig.environments.map((env2) => env2.name);
throw new Error(
`No environment found in config for: ${chalk.bgWhiteBright.blackBright(
envName
)}
Environments defined in config are: ${envList}
`
);
}
process.env.MOON_TEST_ENV = envName;
try {
await executeTests(env, additionalArgs);
} catch (e) {
console.error(e);
await MoonwallContext.destroy();
process.exit(1);
}
}
async function executeTests(env, additionalArgs) {
const globalConfig = await importJsonConfig();
if (env.foundation.type === "read_only") {
try {
const ctx = await contextCreator(globalConfig, process.env.MOON_TEST_ENV);
const chainData = ctx.providers.filter((provider) => provider.type == "moon" || provider.type == "polkadotJs").map((provider) => {
return {
[provider.name]: {
rtName: provider.greet().rtName,
rtVersion: provider.greet().rtVersion
}
};
});
const { rtVersion, rtName } = Object.values(chainData[0])[0];
process.env.MOON_RTVERSION = rtVersion;
process.env.MOON_RTNAME = rtName;
await ctx.disconnect();
} catch {
}
}
const options = {
watch: false,
globals: true,
reporters: env.html ? ["verbose", "html"] : ["verbose"],
testTimeout: 1e4,
hookTimeout: 5e5,
useAtomics: false,
passWithNoTests: false,
threads: true,
include: env.include ? env.include : ["**/{test,spec,test_,test-}*{ts,mts,cts}"]
};
if (!env.multiThreads || process.env.MOON_SINGLE_THREAD === "true") {
options.threads = false;
}
try {
const folders = env.testFileDir.map((folder) => path.join("/", folder, "/"));
await startVitest("test", folders, { ...options, ...additionalArgs });
} catch (e) {
console.error(e);
process.exit(1);
}
}
export {
testCmd,
executeTests
};