diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a42b2080..f4cc7d466 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ Rocketeer follows the [Semantic Versioning 2.0](http://semver.org/spec/v2.0.0.ht ### Fixed - Fixed remote storage being written to in pretend mode +- Fixed `StepsRunner` not halting the running of steps upon encountering a strict false ## [2.2.1] - 2016-07-10 diff --git a/src/Rocketeer/Traits/StepsRunner.php b/src/Rocketeer/Traits/StepsRunner.php index 8e31211f1..4d9949a5b 100644 --- a/src/Rocketeer/Traits/StepsRunner.php +++ b/src/Rocketeer/Traits/StepsRunner.php @@ -47,10 +47,10 @@ public function runSteps() $steps = $this->steps()->pullSteps(); foreach ($steps as $step) { list($method, $arguments) = $step; - $arguments = (array) $arguments; + $arguments = (array) $arguments; $results = call_user_func_array([$this, $method], $arguments); - $results = $results ?: $this->status(); + $results = is_bool($results) ? $results : $this->status(); if (!$results) { return false; } diff --git a/tests/Traits/StepsRunnerTest.php b/tests/Traits/StepsRunnerTest.php index 891b59b44..c6e634a80 100644 --- a/tests/Traits/StepsRunnerTest.php +++ b/tests/Traits/StepsRunnerTest.php @@ -40,4 +40,20 @@ public function testStepsAreClearedOnceRun() ['run', ['php --version']], ], $task->steps()->getSteps()); } + + public function testStopsOnStrictFalse() + { + $this->expectOutputString(''); + + $this->task('Deploy')->steps()->addStep(function () { + return false; + }); + + $this->task('Deploy')->steps()->addStep(function () { + echo 'foobar'; + return true; + }); + + $this->task('Deploy')->runSteps(); + } }