Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test failures caused by invalid database connection result in fatal error #3049

Closed
Majkl578 opened this issue Mar 14, 2018 · 6 comments
Closed
Assignees
Milestone

Comments

@Majkl578
Copy link
Contributor

When PHPUnit is started with invalid DB config in local phpunit.xml, it crashes with uncaught PHP fatal error.

$ vendor/bin/phpunit
PHPUnit 7.0.2 by Sebastian Bergmann and contributors.

Testing 
......SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS....   61 / 5181 (  1%)
..SSS............SS..............S.......SS...S.....S.SSS....  122 / 5181 (  2%)
............SS..SSSSSS......SSS..............SS...EEE........  183 / 5181 (  3%)
.SS...S............S.S.....S.................................  244 / 5181 (  4%)
...............EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE  305 / 5181 (  5%)
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEESSSEEEE  366 / 5181 (  7%)
ESSSSSSSSSEEEEESSSSPHP Fatal error:  Uncaught TypeError: Return value of PHPUnit\Framework\TestCase::getTestResultObject() must be an instance of PHPUnit\Framework\TestResult, null returned in /www/doctrine/dbal/vendor/phpunit/phpunit/src/Framework/TestCase.php:918
Stack trace:
#0 /www/doctrine/dbal/vendor/symfony/phpunit-bridge/Legacy/SymfonyTestsListenerTrait.php(182): PHPUnit\Framework\TestCase->getTestResultObject()
#1 /www/doctrine/dbal/vendor/symfony/phpunit-bridge/Legacy/SymfonyTestsListenerForV7.php(55): Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerTrait->startTest(Object(PHPUnit\Framework\WarningTestCase))
#2 /www/doctrine/dbal/vendor/phpunit/phpunit/src/Framework/TestResult.php(394): Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerForV7->startTest(Object(PHPUnit\Framework\WarningTestCase))
#3 /www/doctrine/dbal/vendor/phpunit/phpunit/src/Framework/TestResult.php(647): PHPUnit\Framework\TestResult->startTest(Object(PHPUnit\Framework\WarningTestCase))
#4 /www/doctrine/dbal/vendor/phpunit/phpunit/src/Framework/TestCase.php(679): PH in /www/doctrine/dbal/vendor/phpunit/phpunit/src/Framework/TestCase.php on line 918
@Majkl578
Copy link
Contributor Author

Majkl578 commented Apr 7, 2018

Haven't seen this since then, it's possible it's been fixed upstream.

@morozov
Copy link
Member

morozov commented Apr 8, 2018

Still reproducible. Just caught it by trying to run PostgreSQL tests without installed extension:

↪ git rev-parse HEAD
f2d1f378645d63798c30cfadc9850650cc9536f3

↪ phpunit -c pdo-pgsql.phpunit.xml 
PHPUnit 7.0.3 by Sebastian Bergmann and contributors.

Testing 
......................SSSSS.....................................SSS..........   77 / 5254 (  1%)
..SS..............S.......SS...S.....S.SSS..........EE....SS..............SSS  154 / 5254 (  2%)
..............SS...SSS.........SS...S............S.S........SSS..SSS.........  231 / 5254 (  4%)
.............................EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE  308 / 5254 (  5%)
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEESSSEEEEEEEEEEEEEEEEEEEEES  385 / 5254 (  7%)
S
Fatal error: Uncaught TypeError: Return value of PHPUnit\Framework\TestCase::getTestResultObject() must be an instance of PHPUnit\Framework\TestResult, null returned in vendor/phpunit/phpunit/src/Framework/TestCase.php on line 918

TypeError: Return value of PHPUnit\Framework\TestCase::getTestResultObject() must be an instance of PHPUnit\Framework\TestResult, null returned in vendor/phpunit/phpunit/src/Framework/TestCase.php on line 918

Call Stack:
    0.0001     402832   1. {main}() vendor/phpunit/phpunit/phpunit:0
    0.0143     912104   2. PHPUnit\TextUI\Command::main() vendor/phpunit/phpunit/phpunit:53
    0.0143     912216   3. PHPUnit\TextUI\Command->run() vendor/phpunit/phpunit/src/TextUI/Command.php:153
    1.1181   33272280   4. PHPUnit\TextUI\TestRunner->doRun() vendor/phpunit/phpunit/src/TextUI/Command.php:205
    1.2080   33587864   5. PHPUnit\Framework\TestSuite->run() vendor/phpunit/phpunit/src/TextUI/TestRunner.php:508
    1.3688   33602952   6. PHPUnit\Framework\TestSuite->run() vendor/phpunit/phpunit/src/Framework/TestSuite.php:760
    2.1029   51942456   7. PHPUnit\Framework\TestSuite->run() vendor/phpunit/phpunit/src/Framework/TestSuite.php:760
    2.1055   51942984   8. PHPUnit\Framework\DataProviderTestSuite->run() vendor/phpunit/phpunit/src/Framework/TestSuite.php:760
    2.1057   51943648   9. PHPUnit\Framework\WarningTestCase->run() vendor/phpunit/phpunit/src/Framework/TestSuite.php:760
    2.1057   51943648  10. PHPUnit\Framework\TestResult->run() vendor/phpunit/phpunit/src/Framework/TestCase.php:679
    2.1057   51944024  11. PHPUnit\Framework\TestResult->startTest() vendor/phpunit/phpunit/src/Framework/TestResult.php:647
    2.1057   51944024  12. Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerForV7->startTest() vendor/phpunit/phpunit/src/Framework/TestResult.php:394
    2.1057   51944024  13. Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerTrait->startTest() vendor/symfony/phpunit-bridge/Legacy/SymfonyTestsListenerForV7.php:55
    2.1057   51944024  14. PHPUnit\Framework\WarningTestCase->getTestResultObject() vendor/symfony/phpunit-bridge/Legacy/SymfonyTestsListenerTrait.php:182

@Majkl578
Copy link
Contributor Author

Majkl578 commented Apr 8, 2018

@morozov Could you try without Symfony listener installed/enabled? So we can report it on appropriate place. 👍 Thanks.

@morozov
Copy link
Member

morozov commented Apr 8, 2018

Doesn't fail this way without the listener!

@Majkl578
Copy link
Contributor Author

Majkl578 commented Apr 8, 2018

Reported here: symfony/symfony#26861

@Ocramius Ocramius added this to the 2.8.0 milestone Apr 10, 2018
@morozov morozov removed the Bug label Jul 13, 2018
rgrellmann added a commit to Rossmann-IT/dbal that referenced this issue Apr 22, 2020
Release v2.8.0

[![Build Status](https://travis-ci.org/doctrine/dbal.svg?branch=v2.8.0)](https://travis-ci.org/doctrine/dbal)

This is a minor release of Doctrine DBAL that aggregates over 30 fixes and improvements developed over the last 3 months.

This release includes all changes of the 2.7.x series, as well as feature additions and improvements that couldn’t land in patch releases.

**Backwards Compatibility Breaks**

This doesn't contain any intentional Backwards Compatibility (BC) breaks.

**Dependency Changes**

* The dependency on [doctrine/common](https://github.com/doctrine/common) is removed. DBAL now depends on [doctrine/cache](https://github.com/doctrine/cache) and [doctrine/event-manager](https://github.com/doctrine/event-manager) instead.

Please see details in the [UPGRADE.md](UPGRADE.md) documentation.

**Deprecations**

* The usage of binary fields whose length exceeds the maximum field size on a given platform is deprecated. Please use binary fields of a size which fits all target platforms, or use blob explicitly instead.
* The usage of DB-generated UUIDs is deprecated. Their format is inconsistent across supported platforms and therefore the feature is not portable. Use a PHP library (e.g. [ramsey/uuid](https://packagist.org/packages/ramsey/uuid)) to generate UUIDs on the application side.

**New features**

* Initial support of MySQL 8.
* Initial support of PostgreSQL 11.
* Ability to evaluate arbitrary SQL expressions via `AbstractPlatform::getDummySelectSQL()`.

**Improvements and Fixes**

* Improved support of binary fields on Oracle and IBM DB2.
* Improved SQL Server configuration capabilities via both `sqlsrv` and `pdo_sqlsrv`.
* Improved handling of `AUTOINCREMENT`ed primary keys in SQLite.
* Integration tests are run against IBM DB2 on Travis CI.
* Code coverage is collected for the Oracle platform on continuousphp.

Total issues resolved: **33**

**Deprecations:**

- [3187: Deprecate usage of binary fields whose length exceeds maximum](doctrine#3187) thanks to @morozov
- [3188: Deprecated usage of binary fields whose length exceeds the platform maximum](doctrine#3188) thanks to @morozov
- [3192: Added more information to the deprecation notice](doctrine#3192) thanks to @morozov
- [3212: Deprecated usage of DB-generated UUIDs](doctrine#3212) thanks to @morozov

**New Features:**

**Bug Fixes:**

- [3149: Introduced binary binding type to support binary parameters on Oracle](doctrine#3149) thanks to @morozov
- [3178: Fix incorrect exception thrown from SQLAnywhere16Platform](doctrine#3178) thanks to @Majkl578
- [3044: Functional test for allowing dynamic intervals in date sub/add](doctrine#3044) thanks to @AshleyDawson
- [3049: Test failures caused by invalid database connection result in fatal error](doctrine#3049) thanks to @Majkl578

**Improvements:**

- [3033: Added support for available DSN parameters for the PDOSqlsrv driver](doctrine#3033) thanks to @aashmelev
- [3128: Add MySQL 8 reserved keywords](doctrine#3128) thanks to @mlocati
- [3143: initialize sql array into platform files](doctrine#3143) thanks to @AlessandroMinoccheri
- [3173: Fix composer branch aliases](doctrine#3173) thanks to @Majkl578
- [3157: When building a limit query, zero offset without a limit should be ignored](doctrine#3157) thanks to @morozov
- [3109: Allow to specify arbitrary SQL expression in AbstractPlatform::getDummySelectSQL()](doctrine#3109) thanks to @morozov
- [3141: allow creating PRIMARY KEY AUTOINCREMENT fields for sqlite (unit tests)](doctrine#3141) thanks to @TimoBakx
- [3180: Import simplified version of Common\Util\Debug for var dumping purposes](doctrine#3180) thanks to @Majkl578

**Documentation Improvements:**

- [3117: Added badges for the develop branch in README](doctrine#3117) thanks to @morozov
- [3125: Upgrading docs](doctrine#3125) thanks to @jwage
- [3144: added improvement type into pull request template](doctrine#3144) thanks to @AlessandroMinoccheri

**Code Quality Improvements:**

- [3025: Added PHPStan, apply changes for level 3](doctrine#3025) thanks to @Majkl578
- [3200: Php Inspections (EA Ultimate): minor code tweaks](doctrine#3200) thanks to @kalessil
- [3204: Fix typo in AbstractPlatform](doctrine#3204) thanks to @Majkl578
- [3205: Ignore OCI-* classes in static analysis (no stubs)](doctrine#3205) thanks to @Majkl578

**Continuous Integration Improvements:**

- [3102: Use newer PHPUnit to prevent crashes on failures](doctrine#3102) thanks to @Majkl578
- [3112: Removed hard-coded configuration filenames from the test runner](doctrine#3112) thanks to @morozov
- [3133: Travis DB2](doctrine#3133) thanks to @Majkl578, @morozov
- [3135: AppVeyor tweaks, retry coverage upload on failure](doctrine#3135) thanks to @Majkl578
- [3137: Workaround for the inability to use a post-PHPUnit script on ContinuousPHP](doctrine#3137) thanks to @morozov
- [3151: MSSQL DLL 5.2.0 has been released.](doctrine#3151) thanks to @photodude
- [3160: Test against Postgres 11](doctrine#3160) thanks to @Majkl578

**Dependencies**

- [3193: DBAL 2.8 needs Common 2.9](doctrine#3193) thanks to @Majkl578
- [3176: Eliminate dependency on doctrine/common](doctrine#3176) thanks to @Majkl578
- [3181: Remove dependency on doctrine/common](doctrine#3181) thanks to @Majkl578

# gpg: Signature made Fri Jul 13 06:02:10 2018
# gpg:                using RSA key 374EADAF543AE995
# gpg: Can't check signature: public key not found

# Conflicts:
#	.gitignore
#	README.md
#	lib/Doctrine/DBAL/Version.php
#	tests/appveyor/mssql.sql2008r2sp2.sqlsrv.appveyor.xml
#	tests/appveyor/mssql.sql2012sp1.sqlsrv.appveyor.xml
#	tests/appveyor/mssql.sql2017.pdo_sqlsrv.appveyor.xml
#	tests/appveyor/mssql.sql2017.sqlsrv.appveyor.xml
#	tests/travis/mariadb.mysqli.travis.xml
@github-actions
Copy link

github-actions bot commented Aug 1, 2022

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 1, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants