Crate mimicaw

Source
Expand description

A library for writing asynchronous tests.

This library provides a framework for writing the free-style, asynchronous tests without using the default test harness provided by rustc.

The concept and design are strongly inspired by libtest-mimic, but also focuses on the affinity with the async/.await syntax.

§Example

use mimicaw::{Args, Test, TestDesc, Outcome};

// Parse command line arguments.
let args = Args::from_env().unwrap_or_else(|st| st.exit());

// Each test case is described using `Test` having one associated data.
//
// The data will be used by the runner described below to run tests.
let tests = vec![
    Test::test("case1", "foo"),
    Test::test("case2", "bar"),
    Test::test("case3_long_computation", "baz").ignore(true),
    Test::test("case4", "The quick brown fox jumps over the lazy dog."),
];

// A function for running the test cases.
//
// Each test result is asynchronous and a future is returned to acquire the result.
let runner = |_desc: TestDesc, data: &'static str| {
    async move {
        match data {
            "foo" | "baz" => Outcome::passed(),
            "bar" => Outcome::failed().error_message("`bar' is forbidden"),
            data => Outcome::failed().error_message(format!("unknown data: {}", data)),
        }
    }
};

// Run the process of test suite.
//
// The test cases are filtered according to the command line arguments, and then executed concurrently from the top.
let status = mimicaw::run_tests(&args, tests, runner).await;
status.exit()

!

Structs§

Args
Command line arguments.
ExitStatus
Exit status code used as a result of the test process.
Outcome
The outcome of performing a test.
Report
A report on test suite execution.
Test
Data that describes a single test.
TestDesc
Description about a test.

Enums§

ColorConfig
The color configuration.
OutputFormat
The output format.

Traits§

TestRunner
The runner of test cases.

Functions§

run_tests
Run a test suite using the specified test runner.
run_tests_with_report
Run a test suite and report the summary.