From f3b09a7902bda6ba543789abafd00d6d094970e9 Mon Sep 17 00:00:00 2001 From: Spine Date: Mon, 15 Sep 2025 07:24:31 +0000 Subject: [PATCH] enqueuing an insane task restores its sanity --- app/TaskScheduler.php | 1 + tests/phpunit/SchedulerTest.php | 54 +++++++++++++++++++++++++++++++-- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/app/TaskScheduler.php b/app/TaskScheduler.php index 4e2ef02f3..0143fd685 100644 --- a/app/TaskScheduler.php +++ b/app/TaskScheduler.php @@ -108,6 +108,7 @@ class TaskScheduler extends Base { public function enqueue(int $taskId): int { self::$db->prepared_query(" UPDATE periodic_task SET + is_sane = true, run_now = true WHERE periodic_task_id = ? ", $taskId diff --git a/tests/phpunit/SchedulerTest.php b/tests/phpunit/SchedulerTest.php index 47e5dc293..ee033318a 100644 --- a/tests/phpunit/SchedulerTest.php +++ b/tests/phpunit/SchedulerTest.php @@ -43,6 +43,11 @@ class SchedulerTest extends TestCase { public function testMissingTaskEntry(): void { $scheduler = new TaskScheduler(); + $this->assertEquals( + -1, + $scheduler->runTask(-666), + "sched-task-no-such-task-id" + ); $this->assertEquals( -1, $scheduler->runClass("NoSuchClassname"), @@ -202,6 +207,11 @@ class SchedulerTest extends TestCase { $scheduler->clear($taskId), 'task-clear', ); + $this->assertEquals( + 1, + $scheduler->runNow($taskId), + 'task-run-now', + ); } public function testTaskStats(): void { @@ -219,12 +229,52 @@ class SchedulerTest extends TestCase { } public function testGlobalStats(): void { - $scheduler = new TaskScheduler(); - $stats = $scheduler->runtimeStats(); + $stats = new TaskScheduler()->runtimeStats(); $this->assertEquals( ['hourly', 'daily', 'tasks', 'totals'], array_keys($stats), 'task-stats-global', ); } + + public function testTaskUpdate(): void { + $this->assertEquals( + 0, + new TaskScheduler()->updateTask( + taskId: 1, + name: 'Test', + class: 'Bonkers', + description: 'Scheduler functionality test ' . randomString(), + period: 60, + isEnabled: false, + isSane: true, + isDebug: false, + ), + 'task-update-bad-class', + ); + $this->assertEquals( + 1, + new TaskScheduler()->updateTask( + taskId: 1, + name: 'Test', + class: 'Test', + description: 'Scheduler functionality test ' . randomString(), + period: 60, + isEnabled: false, + isSane: true, + isDebug: false, + ), + 'task-update-test', + ); + new TaskScheduler()->updateTask( + taskId: 1, + name: 'Test', + class: 'Test', + description: 'Scheduler functionality test', + period: 60, + isEnabled: false, + isSane: true, + isDebug: false, + ); + } }