Skip to content

Commit 0b2f0af

Browse files
committed
fix: correct environment variable handling in MSSQL tests
Fixed issue where MSSQL tests were failing in GitHub Actions with 'Login failed for user testuser' error. The problem was incorrect handling of getenv() return values. Changes: 1. Fixed BaseMSSQLTestCase::setUpBeforeClass(): - Changed from: getenv('PDODB_USERNAME') ?: self::DB_USER - Changed to: explicit check for false or empty string - getenv() returns false for non-existent variables, and ?: operator doesn't work correctly with false values 2. Fixed OptimizeCommandCliTests::setUp(): - Changed from: getenv('PDODB_USERNAME') ?: self::DB_USER - Changed to: explicit check for false or empty string - Ensures environment variables from GitHub Actions (sa/Test123!@#) are properly read instead of falling back to testuser/testpass The issue affected 18 tests that were trying to connect with 'testuser' credentials instead of 'sa' credentials provided by GitHub Actions environment variables. Search keywords for future debugging: - MSSQL test login failed - environment variable getenv false - GitHub Actions MSSQL credentials - PDODB_USERNAME PDODB_PASSWORD handling
1 parent dd3cc0e commit 0b2f0af

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

tests/mssql/BaseMSSQLTestCase.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,14 @@ public static function setUpBeforeClass(): void
3131
* PDODB_USERNAME=sa PDODB_PASSWORD=Test123!@#
3232
*/
3333
// Use environment variables if set (for CI), otherwise use constants
34-
$username = getenv('PDODB_USERNAME') ?: self::DB_USER;
35-
$password = getenv('PDODB_PASSWORD') ?: self::DB_PASSWORD;
34+
$username = getenv('PDODB_USERNAME');
35+
if ($username === false || $username === '') {
36+
$username = self::DB_USER;
37+
}
38+
$password = getenv('PDODB_PASSWORD');
39+
if ($password === false || $password === '') {
40+
$password = self::DB_PASSWORD;
41+
}
3642

3743
self::$db = new PdoDb(
3844
'sqlsrv',

tests/mssql/OptimizeCommandCliTests.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,15 @@ public function setUp(): void
1717
{
1818
parent::setUp();
1919
// Set environment variables for Application
20-
$username = getenv('PDODB_USERNAME') ?: self::DB_USER;
21-
$password = getenv('PDODB_PASSWORD') ?: self::DB_PASSWORD;
20+
// Read from environment first (for CI), then fallback to constants
21+
$username = getenv('PDODB_USERNAME');
22+
if ($username === false || $username === '') {
23+
$username = self::DB_USER;
24+
}
25+
$password = getenv('PDODB_PASSWORD');
26+
if ($password === false || $password === '') {
27+
$password = self::DB_PASSWORD;
28+
}
2229
putenv('PDODB_DRIVER=sqlsrv');
2330
putenv('PDODB_HOST=' . self::DB_HOST);
2431
putenv('PDODB_PORT=' . (string)self::DB_PORT);

0 commit comments

Comments
 (0)