UNPKG

@moonsong-labs/moonwall-cli

Version:

Testing framework for the Moon family of projects

82 lines (79 loc) 2.35 kB
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 };