bench.ts•1.04 kB
import { execaCommand } from 'execa'
import globby from 'globby'
async function main() {
  let benchmarks = await globby(['./packages/**/*.bench.ts', '!./packages/type-benchmark-tests/**'], {
    gitignore: true,
  })
  if (process.argv.length > 2) {
    const filterRegex = new RegExp(process.argv[2])
    benchmarks = benchmarks.filter((name) => filterRegex.test(name))
    if (benchmarks.length === 0) {
      throw new Error(`No benchmarks found that match the pattern ${filterRegex}`)
    }
  }
  await run(benchmarks)
}
async function run(benchmarks: string[]) {
  let failedCount = 0
  for (const location of benchmarks) {
    try {
      await execaCommand(`node -r esbuild-register ${location}`, {
        stdio: 'inherit',
      })
    } catch (e) {
      console.error(e)
      failedCount++
    }
  }
  if (failedCount > 0) {
    const pluralMarker = failedCount === 1 ? '' : 's'
    throw new Error(`${failedCount} benchmark${pluralMarker} failed`)
  }
}
main().catch((e) => {
  console.error(e)
  process.exit(1)
})