summaryrefslogtreecommitdiff
path: root/vendor/bandit/specs/run_policies/bandit_run_policy.spec.cpp
diff options
context:
space:
mode:
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.cpp58
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());
});