mirror of
https://github.com/archtechx/jobpipeline.git
synced 2025-12-12 10:54:05 +00:00
fix: handle errors in closures [1.x] (#16)
* fix: pass parameters to method * test: add tests * fix: just handle failures in closures correctly * fix: remove obsolete change * test: fix test * test: run test sync
This commit is contained in:
parent
36474ffd21
commit
59467693e6
2 changed files with 18 additions and 1 deletions
|
|
@ -67,7 +67,7 @@ class JobPipeline implements ShouldQueue
|
|||
try {
|
||||
$result = app()->call($job);
|
||||
} catch (Throwable $exception) {
|
||||
if (method_exists(get_class($job[0]), 'failed')) {
|
||||
if (is_array($job) && method_exists(get_class($job[0]), 'failed')) {
|
||||
call_user_func_array([$job[0], 'failed'], [$exception]);
|
||||
} else {
|
||||
throw $exception;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace Stancl\JobPipeline\Tests;
|
||||
|
||||
use Exception;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\Queue;
|
||||
|
|
@ -167,6 +168,22 @@ class JobPipelineTest extends TestCase
|
|||
|
||||
$this->assertTrue($passes);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function failures_in_closures_will_throw_correctly()
|
||||
{
|
||||
$this->expectExceptionMessage('foobar');
|
||||
|
||||
Event::listen(TestEvent::class, JobPipeline::make([
|
||||
function () {
|
||||
throw new Exception('foobar');
|
||||
}
|
||||
])->send(function (TestEvent $event) {
|
||||
return $this->valuestore;
|
||||
})->shouldBeQueued(false)->toListener());
|
||||
|
||||
event(new TestEvent(new TestModel()));
|
||||
}
|
||||
}
|
||||
|
||||
class FooJob
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue