From 20e94de3925af29bd73a0f0f0b0706da72271115 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Thu, 14 Jul 2011 16:05:33 -0700 Subject: Add a flag to run ignored tests. Issue #428 --- src/test/stdtest/test.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src/test') diff --git a/src/test/stdtest/test.rs b/src/test/stdtest/test.rs index 17f18a5151e..0079a94522b 100644 --- a/src/test/stdtest/test.rs +++ b/src/test/stdtest/test.rs @@ -1,4 +1,8 @@ import std::test; +import std::str; +import std::option; +import std::either; +import std::ivec; #[test] fn do_not_run_ignored_tests() { @@ -26,6 +30,42 @@ fn ignored_tests_result_in_ignored() { assert res == test::tr_ignored; } +#[test] +fn first_free_arg_should_be_a_filter() { + auto args = ~["progname", "filter"]; + check ivec::is_not_empty(args); + auto opts = alt test::parse_opts(args) { either::left(?o) { o } }; + assert str::eq("filter", option::get(opts.filter)); +} + +#[test] +fn parse_ignored_flag() { + auto args = ~["progname", "filter", "--ignored"]; + check ivec::is_not_empty(args); + auto opts = alt test::parse_opts(args) { either::left(?o) { o } }; + assert opts.run_ignored; +} + +#[test] +fn filter_for_ignored_option() { + // When we run ignored tests the test filter should filter out all the + // unignored tests and flip the ignore flag on the rest to false + + auto opts = rec(filter = option::none, + run_ignored = true); + auto tests = ~[rec(name = "1", + fn = fn() {}, + ignore = true), + rec(name = "2", + fn = fn() {}, + ignore = false)]; + auto filtered = test::filter_tests(opts, tests); + + assert ivec::len(filtered) == 1u; + assert filtered.(0).name == "1"; + assert filtered.(0).ignore == false; +} + // Local Variables: // mode: rust; // fill-column: 78; -- cgit 1.4.1-3-g733a5