From d955317fe928d1d98da3d59dbd43af073195c622 Mon Sep 17 00:00:00 2001 From: Andres Kalle Date: Thu, 18 Sep 2025 09:09:57 +0000 Subject: [PATCH 1/4] fix: Debug toolbar logs controller --- system/Debug/Toolbar/Collectors/Logs.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system/Debug/Toolbar/Collectors/Logs.php b/system/Debug/Toolbar/Collectors/Logs.php index c6e22fc0bbd2..f9fdabecbff1 100644 --- a/system/Debug/Toolbar/Collectors/Logs.php +++ b/system/Debug/Toolbar/Collectors/Logs.php @@ -47,7 +47,7 @@ class Logs extends BaseCollector * * @var list */ - protected $data; + protected $data = []; /** * Returns the data of this collector to be formatted in the toolbar. @@ -68,7 +68,7 @@ public function isEmpty(): bool { $this->collectLogs(); - return $this->data !== []; + return $this->data === []; } /** From 6a53caefef0fdda7a8aa7ef69863980f190ac112 Mon Sep 17 00:00:00 2001 From: Andres Kalle Date: Thu, 18 Sep 2025 10:41:54 +0000 Subject: [PATCH 2/4] test: added test for toolbar logs collector (#9724) --- .../Debug/Toolbar/Collectors/LogsTest.php | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 tests/system/Debug/Toolbar/Collectors/LogsTest.php diff --git a/tests/system/Debug/Toolbar/Collectors/LogsTest.php b/tests/system/Debug/Toolbar/Collectors/LogsTest.php new file mode 100644 index 000000000000..c239d0d422ba --- /dev/null +++ b/tests/system/Debug/Toolbar/Collectors/LogsTest.php @@ -0,0 +1,71 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace CodeIgniter\Debug\Toolbar\Collectors; + +use CodeIgniter\Log\Logger; +use CodeIgniter\Test\CIUnitTestCase; +use Config\Logger as LoggerConfig; +use Config\Services; +use PHPUnit\Framework\Attributes\Group; + +/** + * @internal + */ +#[Group('Others')] +final class LogsTest extends CIUnitTestCase +{ + private Logger $logger; + + protected function setUp(): void + { + parent::setUp(); + + // The logs collector relies on the logger being in debug mode + // so it would populate logCache. + $this->logger = new Logger(new LoggerConfig(), debug: true); + Services::injectMock('logger', $this->logger); + } + + public function testDisplay(): void + { + // log_message() always creates a new TestLogger instance while + // testing, so we need to log directly to our instance. + $this->logger->error('Test error'); + $this->logger->info('Test info'); + + $collector = new Logs(); + $result = $collector->display(); + + $this->assertArrayHasKey('logs', $result); + $this->assertCount(2, $result['logs']); + $this->assertSame('error', $result['logs'][0]['level']); + $this->assertSame('Test error', $result['logs'][0]['msg']); + $this->assertSame('info', $result['logs'][1]['level']); + $this->assertSame('Test info', $result['logs'][1]['msg']); + } + + public function testEmpty(): void + { + $collector = new Logs(); + $this->assertTrue($collector->isEmpty()); + } + + public function testNotEmpty(): void + { + $this->logger->warning('Test warning'); + + $collector = new Logs(); + $this->assertFalse($collector->isEmpty()); + } +} From bf80e0fe227d4cbac44b0dd20ed73546043641ec Mon Sep 17 00:00:00 2001 From: Andres Kalle Date: Wed, 1 Oct 2025 06:34:39 +0000 Subject: [PATCH 3/4] docs: updated changelog --- user_guide_src/source/changelogs/v4.6.4.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/user_guide_src/source/changelogs/v4.6.4.rst b/user_guide_src/source/changelogs/v4.6.4.rst index ed9909d0face..aa95d60f2c35 100644 --- a/user_guide_src/source/changelogs/v4.6.4.rst +++ b/user_guide_src/source/changelogs/v4.6.4.rst @@ -43,6 +43,7 @@ Bugs Fixed - **Forge:** Fixed a bug in ``Postgre`` and ``SQLSRV`` where changing a column's default value using ``Forge::modifyColumn()`` method produced incorrect SQL syntax. - **Model:** Fixed a bug in ``Model::replace()`` where ``created_at`` field (when available) wasn't set correctly. - **Model:** Fixed a bug in ``Model::insertBatch()`` and ``Model::updateBatch()`` where casts were not applied to inserted or updated values. +- **Debug:** Fixed bugs in ``Collectors\Logs`` that were preventing the "Logs" tab from appearing on the Debug Toolbar. See the repo's `CHANGELOG.md `_ From d87232d6aaa8165cd7c4fa3901d84e2a89522d1f Mon Sep 17 00:00:00 2001 From: Andres Kalle Date: Wed, 1 Oct 2025 06:42:29 +0000 Subject: [PATCH 4/4] docs: tweaked changelog --- user_guide_src/source/changelogs/v4.6.4.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user_guide_src/source/changelogs/v4.6.4.rst b/user_guide_src/source/changelogs/v4.6.4.rst index efff0ce4580a..31b799f69c19 100644 --- a/user_guide_src/source/changelogs/v4.6.4.rst +++ b/user_guide_src/source/changelogs/v4.6.4.rst @@ -44,8 +44,8 @@ Bugs Fixed - **Forge:** Fixed a bug in ``Postgre`` and ``SQLSRV`` where changing a column's default value using ``Forge::modifyColumn()`` method produced incorrect SQL syntax. - **Model:** Fixed a bug in ``Model::replace()`` where ``created_at`` field (when available) wasn't set correctly. - **Model:** Fixed a bug in ``Model::insertBatch()`` and ``Model::updateBatch()`` where casts were not applied to inserted or updated values. +- **Toolbar:** Fixed bugs in ``Collectors\Logs`` that were preventing the "Logs" tab from appearing on the Debug Toolbar. - **Validation:** Fixed a bug in the ``FormatRules::valid_base64()`` validation rule that caused a TypeError when checking invalid base64 strings. -- **Debug:** Fixed bugs in ``Collectors\Logs`` that were preventing the "Logs" tab from appearing on the Debug Toolbar. See the repo's `CHANGELOG.md `_