/behat-deprecation-extension

A Behat extension that displays user deprecated features, inspired by "symfony/phpunit-bridge".

Primary LanguagePHPMIT LicenseMIT

Behat Deprecation Extension

A Behat extension to display the whole list of user deprecated features (E_USER_DEPRECATED messages). It can be useful in a Symfony2 application when the tests are run with Symfony2 BrowserKit driver for Mink framework but not limited to.

Package version Build Status

Installation

You can use Composer to install the extension to your project:

composer require --dev caciobanu/behat-deprecation-extension

Then, in your behat config file behat.yml, register the extension:

# behat.yml
default:
    extensions:
        Caciobanu\Behat\DeprecationExtension: ~

Or like below with a mode set:

# behat.yml
default:
    extensions:
        Caciobanu\Behat\DeprecationExtension:
            mode: weak

The following reporting modes are supported:

  • use null to display the deprecation report without making the test suite fail (default);
  • use "weak" to hide the deprecation report but keep a global count;
  • use a number to define the upper bound of allowed deprecations, making the tests fail whenever more notices are triggered.

Basic usage

Run Behat and enjoy :)

The summary includes:

  • Unsilenced
    • Reports deprecation notices that were triggered without the recommended @-silencing operator.
  • Legacy
    • Deprecation notices denote tests that explicitly test some legacy features, marked with the @legacy tag.
  • Remaining
    • Deprecation notices are all other (non-legacy) notices.

Ignore some deprecation

You can filter the file that did make the call to trigger_error like this:

default:
    extensions:
        Caciobanu\Behat\DeprecationExtension:
            ignore:
                - { file: '#symfony#' }
                - { file: '#my-app#' }

It will ignore every files that matches any of the listed regexps

Or you can filter deprecation messages like this:

default:
    extensions:
        Caciobanu\Behat\DeprecationExtension:
            ignore:
                - { message: '#symfony#' }
                - { message: '#my-app#' }

It will ignore every deprecation message that matches any of the listed regexps

You can use both filter types at the same time:

default:
    extensions:
        Caciobanu\Behat\DeprecationExtension:
            ignore:
                - { file: '#symfony#', message: '#symfony#' }

Credits

This library is developed by Catalin Ciobanu.

License

license