8 releases

0.1.7 Jun 23, 2024
0.1.6 Oct 30, 2021
0.1.5 Jun 26, 2021
0.1.4 Apr 22, 2021

#160 in Testing

GPL-3.0+

74KB
2.5K SLoC

Library for writing plans for integration and e2e tests. Results can be given out in nested TAP, junit and some junit dialect which allows nested testsuite elements.

Usage:

use ensc_testsuite::PlanRunner;

#[test]
fn test() {
    let p = PlanRunner::new();
	p.run("init", |p| {
		p.ok("create database", || database.create());

		let admin: Admin =
		p.ok("create admin", || database.create_admin()).into();

		p.fail("create 2nd admin",  || database.create_admin());
		p.eq("exactly one admin", 1, database.count_admin());

		p.new_plan("some other test")
			.set_skip(easter_is_at_xmas(), "strange event")
			.run(|p| {
				p.ok("....", || true);
			});
	});

	// not really necessary
	p.destruct();
}

When running cargo test, two environment variables must be set:

  • TESTSUITE_OUTPUT: the basename of the output file; depending on the chosen format a suffix like .tap or .junit will be appended

  • TESTSUITE_FORMAT: a comma separated list of output formats. Supported values are:

    • tap: nested TAP
    • junit or junit-flat: junit format
    • junit-nested: junit with nested testsuite elements
    • json: some unspecified json representation

Dependencies

~5–15MB
~206K SLoC