From ee7983e6ff1b8022c66307902f5952c069f2d4d2 Mon Sep 17 00:00:00 2001 From: Michael Dyrynda Date: Thu, 5 Aug 2021 09:12:36 +0930 Subject: [PATCH 1/5] Ensure that Illuminate\Support\Carbon is used consistently across the framework --- src/Illuminate/Foundation/Testing/TestCase.php | 2 +- src/Illuminate/Queue/Console/PruneBatchesCommand.php | 2 +- src/Illuminate/Queue/Console/PruneFailedJobsCommand.php | 2 +- tests/Pagination/CursorTest.php | 2 +- tests/Support/SupportLazyCollectionTest.php | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Illuminate/Foundation/Testing/TestCase.php b/src/Illuminate/Foundation/Testing/TestCase.php index ee19a864b591..c2ac19749883 100644 --- a/src/Illuminate/Foundation/Testing/TestCase.php +++ b/src/Illuminate/Foundation/Testing/TestCase.php @@ -2,7 +2,7 @@ namespace Illuminate\Foundation\Testing; -use Carbon\Carbon; +use Illuminate\Support\Carbon; use Carbon\CarbonImmutable; use Illuminate\Console\Application as Artisan; use Illuminate\Database\Eloquent\Model; diff --git a/src/Illuminate/Queue/Console/PruneBatchesCommand.php b/src/Illuminate/Queue/Console/PruneBatchesCommand.php index 808c82c5dcbf..c33e6550ab44 100644 --- a/src/Illuminate/Queue/Console/PruneBatchesCommand.php +++ b/src/Illuminate/Queue/Console/PruneBatchesCommand.php @@ -2,7 +2,7 @@ namespace Illuminate\Queue\Console; -use Carbon\Carbon; +use Illuminate\Support\Carbon; use Illuminate\Bus\BatchRepository; use Illuminate\Bus\DatabaseBatchRepository; use Illuminate\Bus\PrunableBatchRepository; diff --git a/src/Illuminate/Queue/Console/PruneFailedJobsCommand.php b/src/Illuminate/Queue/Console/PruneFailedJobsCommand.php index f82d9be3b955..752ba4b3b92e 100644 --- a/src/Illuminate/Queue/Console/PruneFailedJobsCommand.php +++ b/src/Illuminate/Queue/Console/PruneFailedJobsCommand.php @@ -2,7 +2,7 @@ namespace Illuminate\Queue\Console; -use Carbon\Carbon; +use Illuminate\Support\Carbon; use Illuminate\Console\Command; use Illuminate\Queue\Failed\PrunableFailedJobProvider; diff --git a/tests/Pagination/CursorTest.php b/tests/Pagination/CursorTest.php index 05c2629619b9..9c2f2f1475a3 100644 --- a/tests/Pagination/CursorTest.php +++ b/tests/Pagination/CursorTest.php @@ -2,7 +2,7 @@ namespace Illuminate\Tests\Pagination; -use Carbon\Carbon; +use Illuminate\Support\Carbon; use Illuminate\Pagination\Cursor; use PHPUnit\Framework\TestCase; diff --git a/tests/Support/SupportLazyCollectionTest.php b/tests/Support/SupportLazyCollectionTest.php index bb85818b7d8f..b7b0ebcbbb29 100644 --- a/tests/Support/SupportLazyCollectionTest.php +++ b/tests/Support/SupportLazyCollectionTest.php @@ -2,7 +2,7 @@ namespace Illuminate\Tests\Support; -use Carbon\Carbon; +use Illuminate\Support\Carbon; use Illuminate\Support\Collection; use Illuminate\Support\LazyCollection; use Mockery as m; From 0373dd03fb8fa688a5a10c65521c8d5ff8fa07f9 Mon Sep 17 00:00:00 2001 From: Michael Dyrynda Date: Thu, 5 Aug 2021 13:38:40 +0930 Subject: [PATCH 2/5] Update tests to support immutable dates by default --- tests/Database/DatabaseEloquentIntegrationTest.php | 4 ++-- tests/Queue/QueueSqsQueueTest.php | 2 +- tests/Support/DateFacadeTest.php | 2 +- tests/Support/SupportCarbonTest.php | 5 +++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/Database/DatabaseEloquentIntegrationTest.php b/tests/Database/DatabaseEloquentIntegrationTest.php index 9624af06add4..4ef9b1ffc901 100644 --- a/tests/Database/DatabaseEloquentIntegrationTest.php +++ b/tests/Database/DatabaseEloquentIntegrationTest.php @@ -1374,8 +1374,8 @@ public function testIsAfterRetrievingTheSameModel() public function testFreshMethodOnModel() { - $now = Carbon::now(); - $nowSerialized = $now->startOfSecond()->toJSON(); + $now = Carbon::now()->startOfSecond(); + $nowSerialized = $now->toJSON(); $nowWithFractionsSerialized = $now->toJSON(); Carbon::setTestNow($now); diff --git a/tests/Queue/QueueSqsQueueTest.php b/tests/Queue/QueueSqsQueueTest.php index 60e02b161ebb..0ae708f91e9f 100755 --- a/tests/Queue/QueueSqsQueueTest.php +++ b/tests/Queue/QueueSqsQueueTest.php @@ -94,7 +94,7 @@ public function testDelayedPushWithDateTimeProperlyPushesJobOntoSqs() $queue = $this->getMockBuilder(SqsQueue::class)->onlyMethods(['createPayload', 'secondsUntil', 'getQueue'])->setConstructorArgs([$this->sqs, $this->queueName, $this->account])->getMock(); $queue->setContainer($container = m::spy(Container::class)); $queue->expects($this->once())->method('createPayload')->with($this->mockedJob, $this->queueName, $this->mockedData)->willReturn($this->mockedPayload); - $queue->expects($this->once())->method('secondsUntil')->with($now)->willReturn(5); + $queue->expects($this->once())->method('secondsUntil')->with($now->addSeconds(5))->willReturn(5); $queue->expects($this->once())->method('getQueue')->with($this->queueName)->willReturn($this->queueUrl); $this->sqs->shouldReceive('sendMessage')->once()->with(['QueueUrl' => $this->queueUrl, 'MessageBody' => $this->mockedPayload, 'DelaySeconds' => 5])->andReturn($this->mockedSendMessageResponseModel); $id = $queue->later($now->addSeconds(5), $this->mockedJob, $this->mockedData, $this->queueName); diff --git a/tests/Support/DateFacadeTest.php b/tests/Support/DateFacadeTest.php index 8f80e2348071..f2c3f5d0715c 100644 --- a/tests/Support/DateFacadeTest.php +++ b/tests/Support/DateFacadeTest.php @@ -64,7 +64,7 @@ public function testCarbonImmutable() DateFactory::use(function (Carbon $date) { return $date->toImmutable(); }); - $this->assertSame(CarbonImmutable::class, get_class(Date::now())); + $this->assertSame(Carbon::class, get_class(Date::now())); DateFactory::use(function ($date) { return $date; }); diff --git a/tests/Support/SupportCarbonTest.php b/tests/Support/SupportCarbonTest.php index cdd865b8b470..023aecc66f8c 100644 --- a/tests/Support/SupportCarbonTest.php +++ b/tests/Support/SupportCarbonTest.php @@ -6,6 +6,7 @@ use Carbon\Carbon as BaseCarbon; use Carbon\CarbonImmutable as BaseCarbonImmutable; use DateTime; +use DateTimeImmutable; use DateTimeInterface; use Illuminate\Support\Carbon; use PHPUnit\Framework\TestCase; @@ -34,9 +35,9 @@ protected function tearDown(): void public function testInstance() { - $this->assertInstanceOf(DateTime::class, $this->now); + $this->assertInstanceOf(DateTimeImmutable::class, $this->now); $this->assertInstanceOf(DateTimeInterface::class, $this->now); - $this->assertInstanceOf(BaseCarbon::class, $this->now); + $this->assertInstanceOf(BaseCarbonImmutable::class, $this->now); $this->assertInstanceOf(Carbon::class, $this->now); } From 7a427ed86bd83a4ba66d6c1b1d9a9c3588f051b6 Mon Sep 17 00:00:00 2001 From: Michael Dyrynda Date: Thu, 5 Aug 2021 13:39:27 +0930 Subject: [PATCH 3/5] Update date calls to support immutable-first behaviour --- src/Illuminate/Console/Scheduling/Event.php | 2 +- src/Illuminate/Console/Scheduling/ManagesFrequencies.php | 4 ++-- src/Illuminate/Support/Carbon.php | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Illuminate/Console/Scheduling/Event.php b/src/Illuminate/Console/Scheduling/Event.php index 4ce5a7735d6c..2ae1f76c8b99 100644 --- a/src/Illuminate/Console/Scheduling/Event.php +++ b/src/Illuminate/Console/Scheduling/Event.php @@ -324,7 +324,7 @@ protected function expressionPasses() $date = Date::now(); if ($this->timezone) { - $date->setTimezone($this->timezone); + $date = $date->setTimezone($this->timezone); } return (new CronExpression($this->expression))->isDue($date->toDateTimeString()); diff --git a/src/Illuminate/Console/Scheduling/ManagesFrequencies.php b/src/Illuminate/Console/Scheduling/ManagesFrequencies.php index d45bc0f8275b..45b8896338ef 100644 --- a/src/Illuminate/Console/Scheduling/ManagesFrequencies.php +++ b/src/Illuminate/Console/Scheduling/ManagesFrequencies.php @@ -60,9 +60,9 @@ private function inTimeInterval($startTime, $endTime) if ($endTime->lessThan($startTime)) { if ($startTime->greaterThan($now)) { - $startTime->subDay(1); + $startTime = $startTime->subDay(1); } else { - $endTime->addDay(1); + $endTime = $endTime->addDay(1); } } diff --git a/src/Illuminate/Support/Carbon.php b/src/Illuminate/Support/Carbon.php index 004b27b0751e..c012d839af66 100644 --- a/src/Illuminate/Support/Carbon.php +++ b/src/Illuminate/Support/Carbon.php @@ -5,7 +5,7 @@ use Carbon\Carbon as BaseCarbon; use Carbon\CarbonImmutable as BaseCarbonImmutable; -class Carbon extends BaseCarbon +class Carbon extends BaseCarbonImmutable { /** * {@inheritdoc} From 2f09aeb4b26cad0d1decc39b3c4fd777c09ce802 Mon Sep 17 00:00:00 2001 From: Michael Dyrynda Date: Sun, 8 Aug 2021 12:42:14 +0930 Subject: [PATCH 4/5] cs fixes --- src/Illuminate/Foundation/Testing/TestCase.php | 2 +- src/Illuminate/Queue/Console/PruneBatchesCommand.php | 2 +- src/Illuminate/Queue/Console/PruneFailedJobsCommand.php | 2 +- tests/Pagination/CursorTest.php | 2 +- tests/Support/SupportCarbonTest.php | 1 - 5 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Illuminate/Foundation/Testing/TestCase.php b/src/Illuminate/Foundation/Testing/TestCase.php index c2ac19749883..c085a3ce1418 100644 --- a/src/Illuminate/Foundation/Testing/TestCase.php +++ b/src/Illuminate/Foundation/Testing/TestCase.php @@ -2,11 +2,11 @@ namespace Illuminate\Foundation\Testing; -use Illuminate\Support\Carbon; use Carbon\CarbonImmutable; use Illuminate\Console\Application as Artisan; use Illuminate\Database\Eloquent\Model; use Illuminate\Queue\Queue; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Facade; use Illuminate\Support\Facades\ParallelTesting; use Illuminate\Support\Str; diff --git a/src/Illuminate/Queue/Console/PruneBatchesCommand.php b/src/Illuminate/Queue/Console/PruneBatchesCommand.php index c33e6550ab44..deb4eb96f685 100644 --- a/src/Illuminate/Queue/Console/PruneBatchesCommand.php +++ b/src/Illuminate/Queue/Console/PruneBatchesCommand.php @@ -2,11 +2,11 @@ namespace Illuminate\Queue\Console; -use Illuminate\Support\Carbon; use Illuminate\Bus\BatchRepository; use Illuminate\Bus\DatabaseBatchRepository; use Illuminate\Bus\PrunableBatchRepository; use Illuminate\Console\Command; +use Illuminate\Support\Carbon; class PruneBatchesCommand extends Command { diff --git a/src/Illuminate/Queue/Console/PruneFailedJobsCommand.php b/src/Illuminate/Queue/Console/PruneFailedJobsCommand.php index 752ba4b3b92e..64badcad2d28 100644 --- a/src/Illuminate/Queue/Console/PruneFailedJobsCommand.php +++ b/src/Illuminate/Queue/Console/PruneFailedJobsCommand.php @@ -2,9 +2,9 @@ namespace Illuminate\Queue\Console; -use Illuminate\Support\Carbon; use Illuminate\Console\Command; use Illuminate\Queue\Failed\PrunableFailedJobProvider; +use Illuminate\Support\Carbon; class PruneFailedJobsCommand extends Command { diff --git a/tests/Pagination/CursorTest.php b/tests/Pagination/CursorTest.php index 9c2f2f1475a3..78f7cfc2e4f9 100644 --- a/tests/Pagination/CursorTest.php +++ b/tests/Pagination/CursorTest.php @@ -2,8 +2,8 @@ namespace Illuminate\Tests\Pagination; -use Illuminate\Support\Carbon; use Illuminate\Pagination\Cursor; +use Illuminate\Support\Carbon; use PHPUnit\Framework\TestCase; class CursorTest extends TestCase diff --git a/tests/Support/SupportCarbonTest.php b/tests/Support/SupportCarbonTest.php index 023aecc66f8c..f3d67c491af5 100644 --- a/tests/Support/SupportCarbonTest.php +++ b/tests/Support/SupportCarbonTest.php @@ -5,7 +5,6 @@ use BadMethodCallException; use Carbon\Carbon as BaseCarbon; use Carbon\CarbonImmutable as BaseCarbonImmutable; -use DateTime; use DateTimeImmutable; use DateTimeInterface; use Illuminate\Support\Carbon; From 7331abf06e9f2c78edd2c7ff3a8dc44f9a661cbd Mon Sep 17 00:00:00 2001 From: Michael Dyrynda Date: Mon, 9 Aug 2021 09:13:02 +0930 Subject: [PATCH 5/5] Per PR review, revert to using Carbon by default --- src/Illuminate/Support/Carbon.php | 2 +- tests/Support/DateFacadeTest.php | 2 +- tests/Support/SupportCarbonTest.php | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Illuminate/Support/Carbon.php b/src/Illuminate/Support/Carbon.php index c012d839af66..004b27b0751e 100644 --- a/src/Illuminate/Support/Carbon.php +++ b/src/Illuminate/Support/Carbon.php @@ -5,7 +5,7 @@ use Carbon\Carbon as BaseCarbon; use Carbon\CarbonImmutable as BaseCarbonImmutable; -class Carbon extends BaseCarbonImmutable +class Carbon extends BaseCarbon { /** * {@inheritdoc} diff --git a/tests/Support/DateFacadeTest.php b/tests/Support/DateFacadeTest.php index f2c3f5d0715c..8f80e2348071 100644 --- a/tests/Support/DateFacadeTest.php +++ b/tests/Support/DateFacadeTest.php @@ -64,7 +64,7 @@ public function testCarbonImmutable() DateFactory::use(function (Carbon $date) { return $date->toImmutable(); }); - $this->assertSame(Carbon::class, get_class(Date::now())); + $this->assertSame(CarbonImmutable::class, get_class(Date::now())); DateFactory::use(function ($date) { return $date; }); diff --git a/tests/Support/SupportCarbonTest.php b/tests/Support/SupportCarbonTest.php index f3d67c491af5..a01ca35ec254 100644 --- a/tests/Support/SupportCarbonTest.php +++ b/tests/Support/SupportCarbonTest.php @@ -5,7 +5,6 @@ use BadMethodCallException; use Carbon\Carbon as BaseCarbon; use Carbon\CarbonImmutable as BaseCarbonImmutable; -use DateTimeImmutable; use DateTimeInterface; use Illuminate\Support\Carbon; use PHPUnit\Framework\TestCase; @@ -34,9 +33,9 @@ protected function tearDown(): void public function testInstance() { - $this->assertInstanceOf(DateTimeImmutable::class, $this->now); + $this->assertInstanceOf(Carbon::class, $this->now); $this->assertInstanceOf(DateTimeInterface::class, $this->now); - $this->assertInstanceOf(BaseCarbonImmutable::class, $this->now); + $this->assertInstanceOf(BaseCarbon::class, $this->now); $this->assertInstanceOf(Carbon::class, $this->now); }