diff options
Diffstat (limited to 'vendor/bandit/specs/run_policies/bandit_run_policy.spec.cpp')
-rw-r--r-- | vendor/bandit/specs/run_policies/bandit_run_policy.spec.cpp | 58 |
1 files changed, 41 insertions, 17 deletions
diff --git a/vendor/bandit/specs/run_policies/bandit_run_policy.spec.cpp b/vendor/bandit/specs/run_policies/bandit_run_policy.spec.cpp index 3f383402..75f56bc6 100644 --- a/vendor/bandit/specs/run_policies/bandit_run_policy.spec.cpp +++ b/vendor/bandit/specs/run_policies/bandit_run_policy.spec.cpp @@ -8,29 +8,53 @@ go_bandit([](){ std::unique_ptr<bd::context> global_context; std::string only_pattern; std::string skip_pattern; + bool break_on_failure; + + auto create_policy = [&]() -> bd::bandit_run_policy { + return bd::bandit_run_policy(skip_pattern.c_str(), only_pattern.c_str(), break_on_failure); + }; before_each([&](){ contextstack = std::unique_ptr<bd::contextstack_t>(new bd::contextstack_t()); bool hard_skip = false; global_context = std::unique_ptr<bd::context>(new bd::bandit_context("", hard_skip)); contextstack->push_back(global_context.get()); + break_on_failure = false; }); describe("neither skip nor only specified", [&](){ - before_each([&](){ only_pattern = ""; skip_pattern = ""; }); it("always says run", [&](){ - bd::bandit_run_policy policy(skip_pattern.c_str(), only_pattern.c_str()); + bd::bandit_run_policy policy = create_policy(); AssertThat(policy.should_run("it name", *contextstack), IsTrue()); }); + describe("with 'break-on-failure' set", [&](){ + + before_each([&](){ + break_on_failure = true; + }); + + it("says run if no failure has been encountered", [&](){ + bd::bandit_run_policy policy = create_policy(); + AssertThat(policy.should_run("it name", *contextstack), IsTrue()); + }); + + it("says don't run if a failure has been encountered", [&](){ + bd::bandit_run_policy policy = create_policy(); + policy.encountered_failure(); + AssertThat(policy.should_run("it name", *contextstack), IsFalse()); + }); + + }); + describe("has context marked with 'hard_skip' in stack", [&](){ std::unique_ptr<bd::context> hard_skip_context; - + before_each([&](){ bool hard_skip = true; hard_skip_context = std::unique_ptr<bd::context>(new bd::bandit_context("always ignore", hard_skip)); @@ -38,7 +62,7 @@ go_bandit([](){ }); it("never runs", [&](){ - bd::bandit_run_policy policy(skip_pattern.c_str(), only_pattern.c_str()); + bd::bandit_run_policy policy = create_policy(); AssertThat(policy.should_run("it name", *contextstack), IsFalse()); AssertThat(policy.should_run("it name matches 'skip'", *contextstack), IsFalse()); AssertThat(policy.should_run("it name matches 'only'", *contextstack), IsFalse()); @@ -65,7 +89,7 @@ go_bandit([](){ }); it("never runs", [&](){ - bd::bandit_run_policy policy(skip_pattern.c_str(), only_pattern.c_str()); + bd::bandit_run_policy policy = create_policy(); AssertThat(policy.should_run("it name", *contextstack), IsFalse()); }); @@ -81,12 +105,12 @@ go_bandit([](){ }); it("runs if spec's name doesn't match", [&](){ - bd::bandit_run_policy policy(skip_pattern.c_str(), only_pattern.c_str()); + bd::bandit_run_policy policy = create_policy(); AssertThat(policy.should_run("it name", *contextstack), IsTrue()); }); it("doesn't run if spec's name matches", [&](){ - bd::bandit_run_policy policy(skip_pattern.c_str(), only_pattern.c_str()); + bd::bandit_run_policy policy = create_policy(); AssertThat(policy.should_run("it name matching 'skip'", *contextstack), IsFalse()); }); @@ -111,7 +135,7 @@ go_bandit([](){ }); it("always runs", [&](){ - bd::bandit_run_policy policy(skip_pattern.c_str(), only_pattern.c_str()); + bd::bandit_run_policy policy = create_policy(); AssertThat(policy.should_run("it name", *contextstack), IsTrue()); }); @@ -127,12 +151,12 @@ go_bandit([](){ }); it("doesn't run if spec's name doesn't match", [&](){ - bd::bandit_run_policy policy(skip_pattern.c_str(), only_pattern.c_str()); + bd::bandit_run_policy policy = create_policy(); AssertThat(policy.should_run("it name", *contextstack), IsFalse()); }); it("runs if spec's name matches", [&](){ - bd::bandit_run_policy policy(skip_pattern.c_str(), only_pattern.c_str()); + bd::bandit_run_policy policy = create_policy(); AssertThat(policy.should_run("it name matching 'only'", *contextstack), IsTrue()); }); @@ -157,12 +181,12 @@ go_bandit([](){ }); it("doesn't run if 'it' doesn't match 'only'", [&](){ - bd::bandit_run_policy policy(skip_pattern.c_str(), only_pattern.c_str()); + bd::bandit_run_policy policy = create_policy(); AssertThat(policy.should_run("it name", *contextstack), IsFalse()); }); it("runs if 'it' matches 'only'", [&](){ - bd::bandit_run_policy policy(skip_pattern.c_str(), only_pattern.c_str()); + bd::bandit_run_policy policy = create_policy(); AssertThat(policy.should_run("it matches 'only'", *contextstack), IsTrue()); }); @@ -178,12 +202,12 @@ go_bandit([](){ }); it("runs if spec's name doesn't match anything", [&](){ - bd::bandit_run_policy policy(skip_pattern.c_str(), only_pattern.c_str()); + bd::bandit_run_policy policy = create_policy(); AssertThat(policy.should_run("it name", *contextstack), IsTrue()); }); it("doesn't run if spec's name matches 'skip'", [&](){ - bd::bandit_run_policy policy(skip_pattern.c_str(), only_pattern.c_str()); + bd::bandit_run_policy policy = create_policy(); AssertThat(policy.should_run("it name matching 'skip'", *contextstack), IsFalse()); }); @@ -202,16 +226,16 @@ go_bandit([](){ }); it("runs if spec's name doesn't match anything", [&](){ - bd::bandit_run_policy policy(skip_pattern.c_str(), only_pattern.c_str()); + bd::bandit_run_policy policy = create_policy(); AssertThat(policy.should_run("it name", *contextstack), IsTrue()); }); it("doesn't run if spec's name matches 'skip'", [&](){ - bd::bandit_run_policy policy(skip_pattern.c_str(), only_pattern.c_str()); + bd::bandit_run_policy policy = create_policy(); AssertThat(policy.should_run("it name matching 'skip'", *contextstack), IsFalse()); }); it("runs if spec's name matches 'only'", [&](){ - bd::bandit_run_policy policy(skip_pattern.c_str(), only_pattern.c_str()); + bd::bandit_run_policy policy = create_policy(); AssertThat(policy.should_run("it name matching 'only'", *contextstack), IsTrue()); }); |