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
Nicolas Grekas 66a60f7d91 Merge branch '2.8'
* 2.8:
  [PhpUnit] Auto-register SymfonyTestsListener
  [phpunit] Upgrade when a change is detected and when install subcommand is used
  [Filesystem] Fix test on Windows
  Fix merge
  [HttpFoundation] Extend ClockMock to session storage tests
  [Process] Don't use @requires on abstract class
  [VarDumper] Fix wordwrap with Bootstrap
  Fix the BC layer for the key->secret renaming for remember_me
  Fix potential access to undefined index

Conflicts:
	src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/RememberMeFactory.php
	src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/LegacyPdoSessionHandlerTest.php
	src/Symfony/Component/Locale/phpunit.xml.dist
2015-10-11 11:14:55 +02: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 Merge branch '2.8' 2015-10-10 12:22:50 +02:00
composer.json Merge branch '2.8' 2015-05-12 17:48:43 +02:00
DeprecationErrorHandler.php Merge branch '2.8' 2015-09-27 12:13:28 +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 [PhpUnit] Auto-register SymfonyTestsListener 2015-10-11 10:29:26 +02: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).