use std::path::PathBuf;
use cairo_lang_compiler::project::check_compiler_path;
use cairo_lang_runner::clap::RunProfilerConfigArg;
use cairo_lang_test_runner::{TestRunConfig, TestRunner};
use clap::Parser;
#[cfg(feature = "mimalloc")]
#[global_allocator]
static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;
#[derive(Parser, Debug)]
#[command(version, verbatim_doc_comment)]
struct Args {
path: PathBuf,
#[arg(short, long)]
single_file: bool,
#[arg(long)]
allow_warnings: bool,
#[arg(short, long, default_value_t = String::default())]
filter: String,
#[arg(long, default_value_t = false)]
include_ignored: bool,
#[arg(long, default_value_t = false)]
ignored: bool,
#[arg(long, default_value_t = false)]
starknet: bool,
#[arg(short, long, default_value_t, value_enum)]
run_profiler: RunProfilerConfigArg,
#[arg(long)]
gas_disabled: bool,
#[arg(long, default_value_t = false)]
print_resource_usage: bool,
}
fn main() -> anyhow::Result<()> {
let args = Args::parse();
check_compiler_path(args.single_file, &args.path)?;
let config = TestRunConfig {
filter: args.filter,
ignored: args.ignored,
include_ignored: args.include_ignored,
profiler_config: args.run_profiler.try_into().ok(),
gas_enabled: !args.gas_disabled,
print_resource_usage: args.print_resource_usage,
};
let runner = TestRunner::new(&args.path, args.starknet, args.allow_warnings, config)?;
runner.run()?;
Ok(())
}