Skip to content

Commit 7b4c282

Browse files
authored
Merge pull request #196 from WebFiori/dev
Added Support for Showing Stack Trace for Tasks
2 parents ad52401 + 18f9546 commit 7b4c282

File tree

3 files changed

+32
-12
lines changed

3 files changed

+32
-12
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"webfiori/jsonx":"v3.3.0",
2424
"webfiori/ui":"v2.5.6",
2525
"webfiori/collections":"v1.1.3",
26-
"webfiori/database":"v0.8.3",
26+
"webfiori/database":"v0.8.4",
2727
"webfiori/cli":"v1.1.3",
2828
"webfiori/mailer":"v1.1.1",
2929
"webfiori/err":"v1.0.6"

tests/webfiori/framework/test/cli/SchedulerCommandTest.php

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ public function test05() {
152152
'p' => '123456'
153153
]);
154154
$this->assertEquals(0, $runner->start());
155-
$this->assertEquals([
155+
$expected = [
156156
"Select one of the scheduled tasks to force:\n",
157157
"0: Fail 1\n",
158158
"1: Fail 2\n",
@@ -169,16 +169,28 @@ public function test05() {
169169
"Exception message: Call to undefined method app\\tasks\Fail2TestTask::undefined()\n",
170170
"Thrown in: Fail2TestTask\n",
171171
"Line: 44\n",
172-
"Calling the method app\\tasks\Fail2TestTask::onFail()\n",
173-
"Calling the method app\\tasks\Fail2TestTask::afterExec()\n",
174-
"Check finished.\n",
175-
"Total number of tasks: 5\n",
176-
"Executed Tasks: 1\n",
177-
"Successfully finished tasks:\n",
178-
" <NONE>\n",
179-
"Failed tasks:\n",
180-
" Fail 2\n"
181-
], $runner->getOutput());
172+
"Stack Trace:\n",
173+
"#0 At class app\\tasks\Fail2TestTask line 1083\n",
174+
"#1 At class webfiori\\framework\scheduler\AbstractTask line 406\n",
175+
"#2 At class webfiori\\framework\scheduler\AbstractTask line 904\n",
176+
"#3 At class webfiori\\framework\scheduler\TasksManager line 600\n",
177+
"#4 At class webfiori\\framework\scheduler\TasksManager line 135\n",
178+
"#5 At class webfiori\\framework\cli\commands\SchedulerCommand line 86\n",
179+
"#6 At class webfiori\\framework\cli\commands\SchedulerCommand line 328\n",
180+
"#7 At class webfiori\\cli\CLICommand line 409\n",
181+
"#8 At class webfiori\\cli\Runner line 684\n",
182+
"#9 At class webfiori\\cli\Runner line 615\n",
183+
"#10 At class webfiori\cli\Runner line 154\n",
184+
"Skip"];
185+
$actual = $runner->getOutput();
186+
$idx = 0;
187+
foreach ($expected as $item) {
188+
if ($item == 'Skip') {
189+
break;
190+
}
191+
$this->assertEquals($item, $actual[$idx]);
192+
$idx++;
193+
}
182194
}
183195
/**
184196
* @test

webfiori/framework/scheduler/AbstractTask.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Exception;
1414
use Throwable;
1515
use webfiori\collections\Queue;
16+
use webfiori\error\TraceEntry;
1617
use webfiori\framework\cli\commands\SchedulerCommand;
1718
use webfiori\framework\exceptions\InvalidCRONExprException;
1819
use webfiori\framework\Util;
@@ -1504,7 +1505,14 @@ private function logExeException(Throwable $ex, string $meth = '') {
15041505
TasksManager::log('Exception message: '.$ex->getMessage());
15051506
TasksManager::log('Thrown in: '.Util::extractClassName($ex->getFile()));
15061507
TasksManager::log('Line: '.$ex->getLine());
1508+
TasksManager::log('Stack Trace:');
1509+
$index = 0;
15071510

1511+
foreach ($ex->getTrace() as $traceEntry) {
1512+
$e = new TraceEntry($traceEntry);
1513+
TasksManager::log('#'.$index.' '.$e);
1514+
$index++;
1515+
}
15081516

15091517
if ($meth == 'execute') {
15101518
$this->isSuccess = false;

0 commit comments

Comments
 (0)