Skip to content

fix: make MariaDB version detection case-insensitive in tests#10208

Open
jalexiscv wants to merge 1 commit into
codeigniter4:developfrom
jalexiscv:fix/bug-7929-mariadb-tests
Open

fix: make MariaDB version detection case-insensitive in tests#10208
jalexiscv wants to merge 1 commit into
codeigniter4:developfrom
jalexiscv:fix/bug-7929-mariadb-tests

Conversation

@jalexiscv
Copy link
Copy Markdown

Description

Fixes #7929 - [MariaDB] phpunit test errors

Problem

Two test failures on MariaDB:

  1. ForgeTest::testAddFields - Uses str_contains() for MariaDB version detection which is case-sensitive. On some MariaDB installations, the server_info version string may have different casing, causing MariaDB to be incorrectly treated as MySQL 8.0.17+, which sets max_length to null for integer fields. MariaDB still reports max_length for integer columns.

  2. GetVersionTest::testGetVersion - The regex only matches plain numeric versions like 8.0.17, not MariaDB versions like 10.11.4-MariaDB-1.

Solution

ForgeTest + GetFieldDataTestCase

Replace str_contains($version, 'MariaDB') with case-insensitive comparison using strtolower()

GetVersionTest

Update the regex to accept versions with suffixes.

Changes

  • tests/system/Database/Live/ForgeTest.php
  • tests/system/Database/Live/GetVersionTest.php
  • tests/system/Database/Live/MySQLi/GetFieldDataTestCase.php

Ref: #7929
Closes #7929

Fixes codeigniter4#7929

The tests used str_contains() for MariaDB version detection, which is
case-sensitive. On some MariaDB installations, the version string
returned by server_info may have different casing, causing the
detection to fail.

Also updated GetVersionTest regex to accept MariaDB version format
'10.11.4-MariaDB-1' which includes a suffix after the numeric version.

Changes:
- ForgeTest: str_contains → str_contains(strtolower(...))
- GetFieldDataTestCase: str_contains → str_contains(strtolower(...))
- GetVersionTest: regex updated to match MariaDB version format

Ref: codeigniter4#7929
@mergeable
Copy link
Copy Markdown

mergeable Bot commented May 18, 2026

Hi there, jalexiscv! 👋

Thank you for sending this PR!

We expect the following in all Pull Requests (PRs).

Important

We expect all code changes or bug-fixes to be accompanied by one or more tests added to our test suite to prove the code works.

If pull requests do not comply with the above, they will likely be closed. Since we are a team of volunteers, we don't have any more time to work
on the framework than you do. Please make it as painless for your contributions to be included as possible.

See https://github.com/codeigniter4/CodeIgniter4/blob/develop/contributing/pull_request.md

Sincerely, the mergeable bot 🤖

@github-actions github-actions Bot added the testing Pull requests that changes tests only label May 18, 2026
return ! (
version_compare($this->db->getVersion(), '8.0.17', '>=')
&& ! str_contains($this->db->getVersion(), 'MariaDB')
&& ! str_contains(strtolower($this->db->getVersion()), strtolower('MariaDB'))
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to convert the string, edit as mariadb

];

if (version_compare($this->db->getVersion(), '8.0.17', '>=') && ! str_contains($this->db->getVersion(), 'MariaDB')) {
if (version_compare($this->db->getVersion(), '8.0.17', '>=') && ! str_contains(strtolower($this->db->getVersion()), strtolower('MariaDB'))) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to convert the string, edit as mariadb

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

testing Pull requests that changes tests only

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: [MariaDB] phpunit test errors

2 participants