From: Joas Schilling Date: Fri, 26 Jan 2024 15:16:37 +0000 (+0100) Subject: fix(tests): Make PHP 8.1.2 with Datetime Diff Bug pass the notifier test X-Git-Tag: v29.0.0beta1~371^2~1 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=d086b6c81d32c83a0bd480cc29819a4d5e1cc425;p=nextcloud-server.git fix(tests): Make PHP 8.1.2 with Datetime Diff Bug pass the notifier test Signed-off-by: Joas Schilling --- diff --git a/apps/dav/tests/unit/CalDAV/Reminder/NotifierTest.php b/apps/dav/tests/unit/CalDAV/Reminder/NotifierTest.php index 08677d20267..10c421921b0 100644 --- a/apps/dav/tests/unit/CalDAV/Reminder/NotifierTest.php +++ b/apps/dav/tests/unit/CalDAV/Reminder/NotifierTest.php @@ -142,6 +142,14 @@ class NotifierTest extends TestCase { $this->notifier->prepare($notification, 'en'); } + private static function hasPhpDatetimeDiffBug(): bool { + $d1 = \DateTime::createFromFormat(\DateTimeInterface::ATOM, '2023-11-22T11:52:00+01:00'); + $d2 = new \DateTime('2023-11-22T10:52:03', new \DateTimeZone('UTC')); + + // The difference is 3 seconds, not -1year+11months+… + return $d1->diff($d2)->y < 0; + } + public function dataPrepare(): array { return [ [ @@ -150,7 +158,7 @@ class NotifierTest extends TestCase { 'title' => 'Title of this event', 'start_atom' => '2005-08-15T15:52:01+02:00' ], - 'Title of this event (in 1 hour, 52 minutes)', + self::hasPhpDatetimeDiffBug() ? 'Title of this event' : 'Title of this event (in 1 hour, 52 minutes)', [ 'title' => 'Title of this event', 'description' => null, @@ -172,7 +180,7 @@ class NotifierTest extends TestCase { 'title' => 'Title of this event', 'start_atom' => '2005-08-15T13:00:00+02:00', ], - 'Title of this event (1 hour ago)', + self::hasPhpDatetimeDiffBug() ? 'Title of this event' : 'Title of this event (1 hour ago)', [ 'title' => 'Title of this event', 'description' => null, @@ -281,7 +289,7 @@ class NotifierTest extends TestCase { $notification->expects($this->once()) ->method('setParsedSubject') - ->with('Title of this event (6 hours ago)') + ->with(self::hasPhpDatetimeDiffBug() ? 'Title of this event' : 'Title of this event (6 hours ago)') ->willReturnSelf(); $this->expectException(AlreadyProcessedException::class);