This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
symfony/src/Symfony/Bridge/PhpUnit
2015-11-04 09:57:16 +01:00
..
TextUI [PhpUnit] Auto-register SymfonyTestsListener 2015-10-11 10:29:26 +02:00
.gitignore [PhpUnitBridge] new bridge for testing with PHPUnit 2015-02-18 11:38:04 +01:00
bootstrap.php [PhpUnitBridge] Add SkippedTestsListener to collect and replay skipped tests 2015-10-10 10:49:24 +02:00
ClockMock.php [PhpUnit] Mock clock on @group time-sensitive annotations 2015-10-12 10:02:31 +02:00
composer.json Merge branch '2.7' into 2.8 2015-10-30 13:15:42 -07:00
DeprecationErrorHandler.php Detect Mintty for color support on Windows 2015-09-27 12:08:51 +02:00
LICENSE [PhpUnitBridge] new bridge for testing with PHPUnit 2015-02-18 11:38:04 +01:00
phpunit.xml.dist [PhpUnitBridge] new bridge for testing with PHPUnit 2015-02-18 11:38:04 +01:00
README.md [Bridge/PhpUnit] Enforce a consistent locale 2015-06-30 10:16:45 +02:00
SymfonyTestsListener.php [Bridge\PhpUnit] Fix clock-mock registration 2015-11-04 09:57:16 +01:00

PHPUnit Bridge

Provides utilities for PHPUnit, especially user deprecation notices management.

It comes with the following features:

  • disable the garbage collector;
  • enforce a consistent C locale;
  • auto-register class_exists to load Doctrine annotations;
  • print a user deprecation notices summary at the end of the test suite.

By default any non-legacy-tagged or any non-@-silenced deprecation notices will make tests fail. This can be changed by setting the SYMFONY_DEPRECATIONS_HELPER environment variable to weak. This will make the bridge ignore deprecation notices and is useful to projects that must use deprecated interfaces for backward compatibility reasons.

A summary of deprecation notices is displayed at the end of the test suite:

  • Unsilenced reports deprecation notices that were triggered without the recommended @-silencing operator;
  • Legacy deprecation notices denote tests that explicitly test some legacy interfaces. There are four ways to mark a test as legacy:
    • make its class start with the Legacy prefix;
    • make its method start with testLegacy;
    • make its data provider start with provideLegacy or getLegacy;
    • add the @group legacy annotation to its class or method.
  • Remaining/Other deprecation notices are all other (non-legacy) notices, grouped by message, test class and method.

Usage

Add this bridge to the require-dev section of your composer.json file (not in require) with e.g. composer require --dev "symfony/phpunit-bridge".

When running phpunit, you will see a summary of deprecation notices at the end of the test suite.

Deprecation notices in the Unsilenced section should just be @-silenced: @trigger_error('...', E_USER_DEPRECATED);. Without the @-silencing operator, users would need to opt-out from deprecation notices. Silencing by default swaps this behavior and allows users to opt-in when they are ready to cope with them (by adding a custom error handler like the one provided by this bridge.)

Deprecation notices in the Remaining/Other section need some thought. You have to decide either to:

  • update your code to not use deprecated interfaces anymore, thus gaining better forward compatibility;
  • or move them to the Legacy section (by using one of the above way).