├── .php_cs ├── LICENSE ├── README.md ├── appveyor.yml ├── composer.json ├── composer.lock └── src └── Printer.php /.php_cs: -------------------------------------------------------------------------------- 1 | true, 7 | '@PSR1' => true, 8 | '@PSR2' => true, 9 | 10 | // Generic 11 | 'array_syntax' => [ 'syntax' => 'short' ], 12 | 'combine_consecutive_issets' => true, 13 | 'combine_consecutive_unsets' => true, 14 | 'increment_style' => false, 15 | 'explicit_indirect_variable' => true, 16 | 'explicit_string_variable' => true, 17 | 'linebreak_after_opening_tag' => true, 18 | 'list_syntax' => [ 'syntax' => 'long' ], 19 | 'no_extra_blank_lines' => ['tokens' => ['break', 'continue', 'extra', 'return', 'throw', 'use', 'parenthesis_brace_block', 'square_brace_block', 'curly_brace_block']], 20 | 'no_leading_import_slash' => true, 21 | 'no_short_echo_tag' => true, 22 | 'no_superfluous_elseif' => true, 23 | 'no_trailing_comma_in_singleline_array' => true, 24 | 'no_unreachable_default_argument_value' => true, 25 | 'no_unused_imports' => true, 26 | 'no_useless_else' => true, 27 | 'no_useless_return' => true, 28 | 'ordered_class_elements' => false, 29 | 'ordered_imports' => [ 'sortAlgorithm' => 'length' ], 30 | 'protected_to_private' => false, 31 | 'semicolon_after_instruction' => true, 32 | 'short_scalar_cast' => true, 33 | 'ternary_to_null_coalescing' => true, 34 | 'trailing_comma_in_multiline_array' => true, 35 | 'yoda_style' => false, 36 | 37 | // Docblocks & Comments 38 | 'phpdoc_add_missing_param_annotation' => true, 39 | 'phpdoc_align' => true, 40 | 'phpdoc_indent' => true, 41 | 'phpdoc_inline_tag' => true, 42 | 'phpdoc_no_empty_return' => false, 43 | 'phpdoc_no_package' => false, 44 | 'phpdoc_order' => true, 45 | 'phpdoc_scalar' => true, 46 | 'phpdoc_separation' => true, 47 | 'phpdoc_trim' => true, 48 | 'phpdoc_types' => true, 49 | 'phpdoc_var_without_name' => true, 50 | 51 | 'no_empty_comment' => false, 52 | 'no_empty_phpdoc' => false, 53 | 'no_empty_statement' => false, 54 | 55 | 'single_line_comment_style' => true, 56 | 57 | // Spacing and alignment 58 | 'align_multiline_comment' => true, 59 | 'binary_operator_spaces' => [ 60 | 'default' => 'align_single_space_minimal', 61 | 'operators' => [ 62 | '+=' => 'single_space', 63 | ], 64 | ], 65 | 'concat_space' => ['spacing' => 'none'], 66 | 'method_argument_space' => true, 67 | 'method_chaining_indentation' => true, 68 | 'not_operator_with_successor_space' => true, 69 | 'no_spaces_around_offset' => [ 70 | 'positions' => [ 'outside' ], 71 | ], 72 | 'trim_array_spaces' => true, 73 | 74 | // PHPUnit 75 | 'php_unit_strict' => true, 76 | 'php_unit_test_class_requires_covers' => false, 77 | 'general_phpdoc_annotation_remove' => [ 'expectedException', 'expectedExceptionMessage', 'expectedExceptionMessageRegExp' ], 78 | ]; 79 | 80 | // Directories to not scan 81 | $excludeDirs = []; 82 | 83 | // Files to not scan 84 | $excludeFiles = []; 85 | 86 | // Create a new Symfony Finder instance 87 | $finder = PhpCsFixer\Finder::create() 88 | ->in(__DIR__) 89 | ->exclude($excludeDirs) 90 | ->ignoreDotFiles(true)->ignoreVCS(true) 91 | ->filter(function (\SplFileInfo $file) use ($excludeFiles) { 92 | return ! in_array($file->getRelativePathName(), $excludeFiles); 93 | }) 94 | ; 95 | 96 | // Create and return a PHP CS Fixer instance 97 | return PhpCsFixer\Config::create() 98 | ->setRules($fixers)->setFinder($finder) 99 | ->setUsingCache(false)->setRiskyAllowed(true) 100 | ; 101 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 LimeDeck 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 📋 Detailed PHPUnit Printer 2 | 3 | It turns the default PHPUnit output... 4 | 5 | ![default-printer](./screenshots/phpunit-default.png "Default PHPUnit output.") 6 | 7 | ... into a more informative output with readable function names and execution time allowing you to start fixing errors even before the whole suite finishes: 8 | 9 | ![detailed-printer](./screenshots/phpunit-pretty.png "PHPUnit output with this printer.") 10 | 11 | [![Build Status: Linux](https://travis-ci.org/LimeDeck/phpunit-detailed-printer.svg?branch=master)](https://travis-ci.org/LimeDeck/phpunit-detailed-printer) 12 | [![Build status: Windows](https://ci.appveyor.com/api/projects/status/656nmj6oxbnq4sri/branch/master?svg=true)](https://ci.appveyor.com/project/HRcc/phpunit-detailed-printer/branch/master) 13 | [![GitHub release](https://img.shields.io/github/release/LimeDeck/phpunit-detailed-printer.svg)](https://github.com/limedeck/phpunit-detailed-printer) 14 | 15 | ## Installation 16 | 17 | ``` 18 | composer require limedeck/phpunit-detailed-printer --dev 19 | ``` 20 | 21 | ### PHPUnit version compatibility 22 | 23 | PHPUnit | Package 24 | :---------|:---------- 25 | 9.x.x | 6.x.x 26 | 8.x.x | 5.x.x 27 | 7.x.x | 4.x.x 28 | 6.x.x | 3.2.x 29 | 5.x.x | 2.0.x 30 | 31 | 32 | ## Usage 33 | 34 | Set the printer class in `phpunit.xml` 35 | 36 | ``` 37 | 38 | 43 | ``` 44 | 45 | ## Tests 46 | To run the test suite, use `phpunit` command. 47 | 48 | ## Contributing 49 | Thanks for your interest in PHPUnit Detailed Printer! If you'd like to contribute, please read our [contributing guide](CONTRIBUTING.md). 50 | 51 | ## License 52 | 53 | Detailed PHPUnit Printer is open-sourced software licensed under the MIT license. If you'd like to read the license agreement, click [here](LICENSE). 54 | -------------------------------------------------------------------------------- /appveyor.yml: -------------------------------------------------------------------------------- 1 | build: off 2 | platform: 3 | - x64 4 | clone_folder: c:\projects\phpunit-detailed-printer 5 | environment: 6 | matrix: 7 | - php_version: 7.2 8 | - php_version: 7.3 9 | ## Cache composer, chocolatey and php bits 10 | cache: 11 | - '%LOCALAPPDATA%\Composer\files -> composer.lock' 12 | - composer.phar 13 | # Cache chocolatey packages 14 | - C:\ProgramData\chocolatey\bin -> .appveyor.yml 15 | - C:\ProgramData\chocolatey\lib -> .appveyor.yml 16 | # Cache php install 17 | - c:\tools\php -> .appveyor.yml 18 | ## Set up environment variables 19 | init: 20 | - SET PATH=C:\Program Files\OpenSSL;c:\tools\php;%PATH% 21 | - SET COMPOSER_NO_INTERACTION=1 22 | - SET PHP=1 # This var is connected to PHP install cache 23 | - SET ANSICON=121x90 (121x90) 24 | ## Install PHP and composer, and run the appropriate composer command 25 | install: 26 | - IF EXIST c:\tools\php (SET PHP=0) # Checks for the PHP install being cached 27 | - ps: appveyor-retry cinst --params '""/InstallDir:C:\tools\php""' --ignore-checksums -y php --version ((choco search php --exact --all-versions -r | select-string -pattern $env:php_version | sort { [version]($_ -split '\|' | select -last 1) } -Descending | Select-Object -first 1) -replace '[php|]','') 28 | - cd c:\tools\php 29 | - IF %PHP%==1 copy php.ini-production php.ini /Y 30 | - IF %PHP%==1 echo date.timezone="UTC" >> php.ini 31 | - IF %PHP%==1 echo extension_dir=ext >> php.ini 32 | - IF %PHP%==1 echo extension=php_openssl.dll >> php.ini 33 | - IF %PHP%==1 echo extension=php_mbstring.dll >> php.ini 34 | - IF %PHP%==1 echo extension=php_fileinfo.dll >> php.ini 35 | - IF %PHP%==1 echo @php %%~dp0composer.phar %%* > composer.bat 36 | - appveyor-retry appveyor DownloadFile https://getcomposer.org/composer.phar 37 | - cd c:\projects\phpunit-detailed-printer 38 | - appveyor-retry composer install --no-progress --profile 39 | - composer show 40 | 41 | ## Run the actual test 42 | test_script: 43 | - cd c:\projects\phpunit-detailed-printer 44 | - vendor/bin/phpunit 45 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "limedeck/phpunit-detailed-printer", 3 | "description": "Formatter for the detailed output of PHPUnit tests.", 4 | "license": "ISC", 5 | "authors": [ 6 | { 7 | "name": "LimeDeck", 8 | "email": "mail@limedeck.io" 9 | } 10 | ], 11 | "require": { 12 | }, 13 | "require-dev": { 14 | "phpunit/phpunit": "~9.0", 15 | "friendsofphp/php-cs-fixer": "^2.14" 16 | }, 17 | "autoload": { 18 | "psr-4": { 19 | "LimeDeck\\Testing\\": "src/" 20 | } 21 | }, 22 | "scripts": { 23 | "cs:check": "vendor/bin/php-cs-fixer fix --verbose --ansi --show-progress=estimating --diff --dry-run", 24 | "cs:fix": "vendor/bin/php-cs-fixer fix --verbose --ansi --show-progress=estimating" 25 | }, 26 | "minimum-stability": "stable" 27 | } 28 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "d3a345bd6448ce324b7bd7cbeab23f29", 8 | "packages": [], 9 | "packages-dev": [ 10 | { 11 | "name": "composer/semver", 12 | "version": "1.5.1", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/composer/semver.git", 16 | "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/composer/semver/zipball/c6bea70230ef4dd483e6bbcab6005f682ed3a8de", 21 | "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "php": "^5.3.2 || ^7.0" 26 | }, 27 | "require-dev": { 28 | "phpunit/phpunit": "^4.5 || ^5.0.5" 29 | }, 30 | "type": "library", 31 | "extra": { 32 | "branch-alias": { 33 | "dev-master": "1.x-dev" 34 | } 35 | }, 36 | "autoload": { 37 | "psr-4": { 38 | "Composer\\Semver\\": "src" 39 | } 40 | }, 41 | "notification-url": "https://packagist.org/downloads/", 42 | "license": [ 43 | "MIT" 44 | ], 45 | "authors": [ 46 | { 47 | "name": "Nils Adermann", 48 | "email": "naderman@naderman.de", 49 | "homepage": "http://www.naderman.de" 50 | }, 51 | { 52 | "name": "Jordi Boggiano", 53 | "email": "j.boggiano@seld.be", 54 | "homepage": "http://seld.be" 55 | }, 56 | { 57 | "name": "Rob Bast", 58 | "email": "rob.bast@gmail.com", 59 | "homepage": "http://robbast.nl" 60 | } 61 | ], 62 | "description": "Semver library that offers utilities, version constraint parsing and validation.", 63 | "keywords": [ 64 | "semantic", 65 | "semver", 66 | "validation", 67 | "versioning" 68 | ], 69 | "time": "2020-01-13T12:06:48+00:00" 70 | }, 71 | { 72 | "name": "composer/xdebug-handler", 73 | "version": "1.4.2", 74 | "source": { 75 | "type": "git", 76 | "url": "https://github.com/composer/xdebug-handler.git", 77 | "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51" 78 | }, 79 | "dist": { 80 | "type": "zip", 81 | "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51", 82 | "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51", 83 | "shasum": "" 84 | }, 85 | "require": { 86 | "php": "^5.3.2 || ^7.0 || ^8.0", 87 | "psr/log": "^1.0" 88 | }, 89 | "require-dev": { 90 | "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" 91 | }, 92 | "type": "library", 93 | "autoload": { 94 | "psr-4": { 95 | "Composer\\XdebugHandler\\": "src" 96 | } 97 | }, 98 | "notification-url": "https://packagist.org/downloads/", 99 | "license": [ 100 | "MIT" 101 | ], 102 | "authors": [ 103 | { 104 | "name": "John Stevenson", 105 | "email": "john-stevenson@blueyonder.co.uk" 106 | } 107 | ], 108 | "description": "Restarts a process without Xdebug.", 109 | "keywords": [ 110 | "Xdebug", 111 | "performance" 112 | ], 113 | "funding": [ 114 | { 115 | "url": "https://packagist.com", 116 | "type": "custom" 117 | }, 118 | { 119 | "url": "https://github.com/composer", 120 | "type": "github" 121 | }, 122 | { 123 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 124 | "type": "tidelift" 125 | } 126 | ], 127 | "time": "2020-06-04T11:16:35+00:00" 128 | }, 129 | { 130 | "name": "doctrine/annotations", 131 | "version": "1.10.3", 132 | "source": { 133 | "type": "git", 134 | "url": "https://github.com/doctrine/annotations.git", 135 | "reference": "5db60a4969eba0e0c197a19c077780aadbc43c5d" 136 | }, 137 | "dist": { 138 | "type": "zip", 139 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/5db60a4969eba0e0c197a19c077780aadbc43c5d", 140 | "reference": "5db60a4969eba0e0c197a19c077780aadbc43c5d", 141 | "shasum": "" 142 | }, 143 | "require": { 144 | "doctrine/lexer": "1.*", 145 | "ext-tokenizer": "*", 146 | "php": "^7.1 || ^8.0" 147 | }, 148 | "require-dev": { 149 | "doctrine/cache": "1.*", 150 | "phpunit/phpunit": "^7.5" 151 | }, 152 | "type": "library", 153 | "extra": { 154 | "branch-alias": { 155 | "dev-master": "1.9.x-dev" 156 | } 157 | }, 158 | "autoload": { 159 | "psr-4": { 160 | "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" 161 | } 162 | }, 163 | "notification-url": "https://packagist.org/downloads/", 164 | "license": [ 165 | "MIT" 166 | ], 167 | "authors": [ 168 | { 169 | "name": "Guilherme Blanco", 170 | "email": "guilhermeblanco@gmail.com" 171 | }, 172 | { 173 | "name": "Roman Borschel", 174 | "email": "roman@code-factory.org" 175 | }, 176 | { 177 | "name": "Benjamin Eberlei", 178 | "email": "kontakt@beberlei.de" 179 | }, 180 | { 181 | "name": "Jonathan Wage", 182 | "email": "jonwage@gmail.com" 183 | }, 184 | { 185 | "name": "Johannes Schmitt", 186 | "email": "schmittjoh@gmail.com" 187 | } 188 | ], 189 | "description": "Docblock Annotations Parser", 190 | "homepage": "http://www.doctrine-project.org", 191 | "keywords": [ 192 | "annotations", 193 | "docblock", 194 | "parser" 195 | ], 196 | "time": "2020-05-25T17:24:27+00:00" 197 | }, 198 | { 199 | "name": "doctrine/instantiator", 200 | "version": "1.3.1", 201 | "source": { 202 | "type": "git", 203 | "url": "https://github.com/doctrine/instantiator.git", 204 | "reference": "f350df0268e904597e3bd9c4685c53e0e333feea" 205 | }, 206 | "dist": { 207 | "type": "zip", 208 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea", 209 | "reference": "f350df0268e904597e3bd9c4685c53e0e333feea", 210 | "shasum": "" 211 | }, 212 | "require": { 213 | "php": "^7.1 || ^8.0" 214 | }, 215 | "require-dev": { 216 | "doctrine/coding-standard": "^6.0", 217 | "ext-pdo": "*", 218 | "ext-phar": "*", 219 | "phpbench/phpbench": "^0.13", 220 | "phpstan/phpstan-phpunit": "^0.11", 221 | "phpstan/phpstan-shim": "^0.11", 222 | "phpunit/phpunit": "^7.0" 223 | }, 224 | "type": "library", 225 | "extra": { 226 | "branch-alias": { 227 | "dev-master": "1.2.x-dev" 228 | } 229 | }, 230 | "autoload": { 231 | "psr-4": { 232 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 233 | } 234 | }, 235 | "notification-url": "https://packagist.org/downloads/", 236 | "license": [ 237 | "MIT" 238 | ], 239 | "authors": [ 240 | { 241 | "name": "Marco Pivetta", 242 | "email": "ocramius@gmail.com", 243 | "homepage": "http://ocramius.github.com/" 244 | } 245 | ], 246 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 247 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 248 | "keywords": [ 249 | "constructor", 250 | "instantiate" 251 | ], 252 | "funding": [ 253 | { 254 | "url": "https://www.doctrine-project.org/sponsorship.html", 255 | "type": "custom" 256 | }, 257 | { 258 | "url": "https://www.patreon.com/phpdoctrine", 259 | "type": "patreon" 260 | }, 261 | { 262 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", 263 | "type": "tidelift" 264 | } 265 | ], 266 | "time": "2020-05-29T17:27:14+00:00" 267 | }, 268 | { 269 | "name": "doctrine/lexer", 270 | "version": "1.2.1", 271 | "source": { 272 | "type": "git", 273 | "url": "https://github.com/doctrine/lexer.git", 274 | "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" 275 | }, 276 | "dist": { 277 | "type": "zip", 278 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", 279 | "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", 280 | "shasum": "" 281 | }, 282 | "require": { 283 | "php": "^7.2 || ^8.0" 284 | }, 285 | "require-dev": { 286 | "doctrine/coding-standard": "^6.0", 287 | "phpstan/phpstan": "^0.11.8", 288 | "phpunit/phpunit": "^8.2" 289 | }, 290 | "type": "library", 291 | "extra": { 292 | "branch-alias": { 293 | "dev-master": "1.2.x-dev" 294 | } 295 | }, 296 | "autoload": { 297 | "psr-4": { 298 | "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" 299 | } 300 | }, 301 | "notification-url": "https://packagist.org/downloads/", 302 | "license": [ 303 | "MIT" 304 | ], 305 | "authors": [ 306 | { 307 | "name": "Guilherme Blanco", 308 | "email": "guilhermeblanco@gmail.com" 309 | }, 310 | { 311 | "name": "Roman Borschel", 312 | "email": "roman@code-factory.org" 313 | }, 314 | { 315 | "name": "Johannes Schmitt", 316 | "email": "schmittjoh@gmail.com" 317 | } 318 | ], 319 | "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", 320 | "homepage": "https://www.doctrine-project.org/projects/lexer.html", 321 | "keywords": [ 322 | "annotations", 323 | "docblock", 324 | "lexer", 325 | "parser", 326 | "php" 327 | ], 328 | "funding": [ 329 | { 330 | "url": "https://www.doctrine-project.org/sponsorship.html", 331 | "type": "custom" 332 | }, 333 | { 334 | "url": "https://www.patreon.com/phpdoctrine", 335 | "type": "patreon" 336 | }, 337 | { 338 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", 339 | "type": "tidelift" 340 | } 341 | ], 342 | "time": "2020-05-25T17:44:05+00:00" 343 | }, 344 | { 345 | "name": "friendsofphp/php-cs-fixer", 346 | "version": "v2.16.4", 347 | "source": { 348 | "type": "git", 349 | "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", 350 | "reference": "1023c3458137ab052f6ff1e09621a721bfdeca13" 351 | }, 352 | "dist": { 353 | "type": "zip", 354 | "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/1023c3458137ab052f6ff1e09621a721bfdeca13", 355 | "reference": "1023c3458137ab052f6ff1e09621a721bfdeca13", 356 | "shasum": "" 357 | }, 358 | "require": { 359 | "composer/semver": "^1.4", 360 | "composer/xdebug-handler": "^1.2", 361 | "doctrine/annotations": "^1.2", 362 | "ext-json": "*", 363 | "ext-tokenizer": "*", 364 | "php": "^5.6 || ^7.0", 365 | "php-cs-fixer/diff": "^1.3", 366 | "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0", 367 | "symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0", 368 | "symfony/filesystem": "^3.0 || ^4.0 || ^5.0", 369 | "symfony/finder": "^3.0 || ^4.0 || ^5.0", 370 | "symfony/options-resolver": "^3.0 || ^4.0 || ^5.0", 371 | "symfony/polyfill-php70": "^1.0", 372 | "symfony/polyfill-php72": "^1.4", 373 | "symfony/process": "^3.0 || ^4.0 || ^5.0", 374 | "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0" 375 | }, 376 | "require-dev": { 377 | "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0", 378 | "justinrainbow/json-schema": "^5.0", 379 | "keradus/cli-executor": "^1.2", 380 | "mikey179/vfsstream": "^1.6", 381 | "php-coveralls/php-coveralls": "^2.1", 382 | "php-cs-fixer/accessible-object": "^1.0", 383 | "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.1", 384 | "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.1", 385 | "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.1", 386 | "phpunitgoodpractices/traits": "^1.8", 387 | "symfony/phpunit-bridge": "^5.1", 388 | "symfony/yaml": "^3.0 || ^4.0 || ^5.0" 389 | }, 390 | "suggest": { 391 | "ext-dom": "For handling output formats in XML", 392 | "ext-mbstring": "For handling non-UTF8 characters.", 393 | "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", 394 | "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", 395 | "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." 396 | }, 397 | "bin": [ 398 | "php-cs-fixer" 399 | ], 400 | "type": "application", 401 | "autoload": { 402 | "psr-4": { 403 | "PhpCsFixer\\": "src/" 404 | }, 405 | "classmap": [ 406 | "tests/Test/AbstractFixerTestCase.php", 407 | "tests/Test/AbstractIntegrationCaseFactory.php", 408 | "tests/Test/AbstractIntegrationTestCase.php", 409 | "tests/Test/Assert/AssertTokensTrait.php", 410 | "tests/Test/IntegrationCase.php", 411 | "tests/Test/IntegrationCaseFactory.php", 412 | "tests/Test/IntegrationCaseFactoryInterface.php", 413 | "tests/Test/InternalIntegrationCaseFactory.php", 414 | "tests/Test/IsIdenticalConstraint.php", 415 | "tests/TestCase.php" 416 | ] 417 | }, 418 | "notification-url": "https://packagist.org/downloads/", 419 | "license": [ 420 | "MIT" 421 | ], 422 | "authors": [ 423 | { 424 | "name": "Fabien Potencier", 425 | "email": "fabien@symfony.com" 426 | }, 427 | { 428 | "name": "Dariusz Rumiński", 429 | "email": "dariusz.ruminski@gmail.com" 430 | } 431 | ], 432 | "description": "A tool to automatically fix PHP code style", 433 | "funding": [ 434 | { 435 | "url": "https://github.com/keradus", 436 | "type": "github" 437 | } 438 | ], 439 | "time": "2020-06-27T23:57:46+00:00" 440 | }, 441 | { 442 | "name": "myclabs/deep-copy", 443 | "version": "1.10.1", 444 | "source": { 445 | "type": "git", 446 | "url": "https://github.com/myclabs/DeepCopy.git", 447 | "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5" 448 | }, 449 | "dist": { 450 | "type": "zip", 451 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", 452 | "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", 453 | "shasum": "" 454 | }, 455 | "require": { 456 | "php": "^7.1 || ^8.0" 457 | }, 458 | "replace": { 459 | "myclabs/deep-copy": "self.version" 460 | }, 461 | "require-dev": { 462 | "doctrine/collections": "^1.0", 463 | "doctrine/common": "^2.6", 464 | "phpunit/phpunit": "^7.1" 465 | }, 466 | "type": "library", 467 | "autoload": { 468 | "psr-4": { 469 | "DeepCopy\\": "src/DeepCopy/" 470 | }, 471 | "files": [ 472 | "src/DeepCopy/deep_copy.php" 473 | ] 474 | }, 475 | "notification-url": "https://packagist.org/downloads/", 476 | "license": [ 477 | "MIT" 478 | ], 479 | "description": "Create deep copies (clones) of your objects", 480 | "keywords": [ 481 | "clone", 482 | "copy", 483 | "duplicate", 484 | "object", 485 | "object graph" 486 | ], 487 | "funding": [ 488 | { 489 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", 490 | "type": "tidelift" 491 | } 492 | ], 493 | "time": "2020-06-29T13:22:24+00:00" 494 | }, 495 | { 496 | "name": "nikic/php-parser", 497 | "version": "v4.8.0", 498 | "source": { 499 | "type": "git", 500 | "url": "https://github.com/nikic/PHP-Parser.git", 501 | "reference": "8c58eb4cd4f3883f82611abeac2efbc3dbed787e" 502 | }, 503 | "dist": { 504 | "type": "zip", 505 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8c58eb4cd4f3883f82611abeac2efbc3dbed787e", 506 | "reference": "8c58eb4cd4f3883f82611abeac2efbc3dbed787e", 507 | "shasum": "" 508 | }, 509 | "require": { 510 | "ext-tokenizer": "*", 511 | "php": ">=7.0" 512 | }, 513 | "require-dev": { 514 | "ircmaxell/php-yacc": "^0.0.6", 515 | "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" 516 | }, 517 | "bin": [ 518 | "bin/php-parse" 519 | ], 520 | "type": "library", 521 | "extra": { 522 | "branch-alias": { 523 | "dev-master": "4.8-dev" 524 | } 525 | }, 526 | "autoload": { 527 | "psr-4": { 528 | "PhpParser\\": "lib/PhpParser" 529 | } 530 | }, 531 | "notification-url": "https://packagist.org/downloads/", 532 | "license": [ 533 | "BSD-3-Clause" 534 | ], 535 | "authors": [ 536 | { 537 | "name": "Nikita Popov" 538 | } 539 | ], 540 | "description": "A PHP parser written in PHP", 541 | "keywords": [ 542 | "parser", 543 | "php" 544 | ], 545 | "time": "2020-08-09T10:23:20+00:00" 546 | }, 547 | { 548 | "name": "paragonie/random_compat", 549 | "version": "v9.99.99", 550 | "source": { 551 | "type": "git", 552 | "url": "https://github.com/paragonie/random_compat.git", 553 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" 554 | }, 555 | "dist": { 556 | "type": "zip", 557 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", 558 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", 559 | "shasum": "" 560 | }, 561 | "require": { 562 | "php": "^7" 563 | }, 564 | "require-dev": { 565 | "phpunit/phpunit": "4.*|5.*", 566 | "vimeo/psalm": "^1" 567 | }, 568 | "suggest": { 569 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 570 | }, 571 | "type": "library", 572 | "notification-url": "https://packagist.org/downloads/", 573 | "license": [ 574 | "MIT" 575 | ], 576 | "authors": [ 577 | { 578 | "name": "Paragon Initiative Enterprises", 579 | "email": "security@paragonie.com", 580 | "homepage": "https://paragonie.com" 581 | } 582 | ], 583 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", 584 | "keywords": [ 585 | "csprng", 586 | "polyfill", 587 | "pseudorandom", 588 | "random" 589 | ], 590 | "time": "2018-07-02T15:55:56+00:00" 591 | }, 592 | { 593 | "name": "phar-io/manifest", 594 | "version": "2.0.1", 595 | "source": { 596 | "type": "git", 597 | "url": "https://github.com/phar-io/manifest.git", 598 | "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" 599 | }, 600 | "dist": { 601 | "type": "zip", 602 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", 603 | "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", 604 | "shasum": "" 605 | }, 606 | "require": { 607 | "ext-dom": "*", 608 | "ext-phar": "*", 609 | "ext-xmlwriter": "*", 610 | "phar-io/version": "^3.0.1", 611 | "php": "^7.2 || ^8.0" 612 | }, 613 | "type": "library", 614 | "extra": { 615 | "branch-alias": { 616 | "dev-master": "2.0.x-dev" 617 | } 618 | }, 619 | "autoload": { 620 | "classmap": [ 621 | "src/" 622 | ] 623 | }, 624 | "notification-url": "https://packagist.org/downloads/", 625 | "license": [ 626 | "BSD-3-Clause" 627 | ], 628 | "authors": [ 629 | { 630 | "name": "Arne Blankerts", 631 | "email": "arne@blankerts.de", 632 | "role": "Developer" 633 | }, 634 | { 635 | "name": "Sebastian Heuer", 636 | "email": "sebastian@phpeople.de", 637 | "role": "Developer" 638 | }, 639 | { 640 | "name": "Sebastian Bergmann", 641 | "email": "sebastian@phpunit.de", 642 | "role": "Developer" 643 | } 644 | ], 645 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 646 | "time": "2020-06-27T14:33:11+00:00" 647 | }, 648 | { 649 | "name": "phar-io/version", 650 | "version": "3.0.2", 651 | "source": { 652 | "type": "git", 653 | "url": "https://github.com/phar-io/version.git", 654 | "reference": "c6bb6825def89e0a32220f88337f8ceaf1975fa0" 655 | }, 656 | "dist": { 657 | "type": "zip", 658 | "url": "https://api.github.com/repos/phar-io/version/zipball/c6bb6825def89e0a32220f88337f8ceaf1975fa0", 659 | "reference": "c6bb6825def89e0a32220f88337f8ceaf1975fa0", 660 | "shasum": "" 661 | }, 662 | "require": { 663 | "php": "^7.2 || ^8.0" 664 | }, 665 | "type": "library", 666 | "autoload": { 667 | "classmap": [ 668 | "src/" 669 | ] 670 | }, 671 | "notification-url": "https://packagist.org/downloads/", 672 | "license": [ 673 | "BSD-3-Clause" 674 | ], 675 | "authors": [ 676 | { 677 | "name": "Arne Blankerts", 678 | "email": "arne@blankerts.de", 679 | "role": "Developer" 680 | }, 681 | { 682 | "name": "Sebastian Heuer", 683 | "email": "sebastian@phpeople.de", 684 | "role": "Developer" 685 | }, 686 | { 687 | "name": "Sebastian Bergmann", 688 | "email": "sebastian@phpunit.de", 689 | "role": "Developer" 690 | } 691 | ], 692 | "description": "Library for handling version information and constraints", 693 | "time": "2020-06-27T14:39:04+00:00" 694 | }, 695 | { 696 | "name": "php-cs-fixer/diff", 697 | "version": "v1.3.0", 698 | "source": { 699 | "type": "git", 700 | "url": "https://github.com/PHP-CS-Fixer/diff.git", 701 | "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756" 702 | }, 703 | "dist": { 704 | "type": "zip", 705 | "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/78bb099e9c16361126c86ce82ec4405ebab8e756", 706 | "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756", 707 | "shasum": "" 708 | }, 709 | "require": { 710 | "php": "^5.6 || ^7.0" 711 | }, 712 | "require-dev": { 713 | "phpunit/phpunit": "^5.7.23 || ^6.4.3", 714 | "symfony/process": "^3.3" 715 | }, 716 | "type": "library", 717 | "autoload": { 718 | "classmap": [ 719 | "src/" 720 | ] 721 | }, 722 | "notification-url": "https://packagist.org/downloads/", 723 | "license": [ 724 | "BSD-3-Clause" 725 | ], 726 | "authors": [ 727 | { 728 | "name": "Kore Nordmann", 729 | "email": "mail@kore-nordmann.de" 730 | }, 731 | { 732 | "name": "Sebastian Bergmann", 733 | "email": "sebastian@phpunit.de" 734 | }, 735 | { 736 | "name": "SpacePossum" 737 | } 738 | ], 739 | "description": "sebastian/diff v2 backport support for PHP5.6", 740 | "homepage": "https://github.com/PHP-CS-Fixer", 741 | "keywords": [ 742 | "diff" 743 | ], 744 | "time": "2018-02-15T16:58:55+00:00" 745 | }, 746 | { 747 | "name": "phpdocumentor/reflection-common", 748 | "version": "2.2.0", 749 | "source": { 750 | "type": "git", 751 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 752 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" 753 | }, 754 | "dist": { 755 | "type": "zip", 756 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", 757 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", 758 | "shasum": "" 759 | }, 760 | "require": { 761 | "php": "^7.2 || ^8.0" 762 | }, 763 | "type": "library", 764 | "extra": { 765 | "branch-alias": { 766 | "dev-2.x": "2.x-dev" 767 | } 768 | }, 769 | "autoload": { 770 | "psr-4": { 771 | "phpDocumentor\\Reflection\\": "src/" 772 | } 773 | }, 774 | "notification-url": "https://packagist.org/downloads/", 775 | "license": [ 776 | "MIT" 777 | ], 778 | "authors": [ 779 | { 780 | "name": "Jaap van Otterdijk", 781 | "email": "opensource@ijaap.nl" 782 | } 783 | ], 784 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 785 | "homepage": "http://www.phpdoc.org", 786 | "keywords": [ 787 | "FQSEN", 788 | "phpDocumentor", 789 | "phpdoc", 790 | "reflection", 791 | "static analysis" 792 | ], 793 | "time": "2020-06-27T09:03:43+00:00" 794 | }, 795 | { 796 | "name": "phpdocumentor/reflection-docblock", 797 | "version": "5.2.0", 798 | "source": { 799 | "type": "git", 800 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 801 | "reference": "3170448f5769fe19f456173d833734e0ff1b84df" 802 | }, 803 | "dist": { 804 | "type": "zip", 805 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/3170448f5769fe19f456173d833734e0ff1b84df", 806 | "reference": "3170448f5769fe19f456173d833734e0ff1b84df", 807 | "shasum": "" 808 | }, 809 | "require": { 810 | "ext-filter": "*", 811 | "php": "^7.2 || ^8.0", 812 | "phpdocumentor/reflection-common": "^2.2", 813 | "phpdocumentor/type-resolver": "^1.3", 814 | "webmozart/assert": "^1.9.1" 815 | }, 816 | "require-dev": { 817 | "mockery/mockery": "~1.3.2" 818 | }, 819 | "type": "library", 820 | "extra": { 821 | "branch-alias": { 822 | "dev-master": "5.x-dev" 823 | } 824 | }, 825 | "autoload": { 826 | "psr-4": { 827 | "phpDocumentor\\Reflection\\": "src" 828 | } 829 | }, 830 | "notification-url": "https://packagist.org/downloads/", 831 | "license": [ 832 | "MIT" 833 | ], 834 | "authors": [ 835 | { 836 | "name": "Mike van Riel", 837 | "email": "me@mikevanriel.com" 838 | }, 839 | { 840 | "name": "Jaap van Otterdijk", 841 | "email": "account@ijaap.nl" 842 | } 843 | ], 844 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 845 | "time": "2020-07-20T20:05:34+00:00" 846 | }, 847 | { 848 | "name": "phpdocumentor/type-resolver", 849 | "version": "1.3.0", 850 | "source": { 851 | "type": "git", 852 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 853 | "reference": "e878a14a65245fbe78f8080eba03b47c3b705651" 854 | }, 855 | "dist": { 856 | "type": "zip", 857 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e878a14a65245fbe78f8080eba03b47c3b705651", 858 | "reference": "e878a14a65245fbe78f8080eba03b47c3b705651", 859 | "shasum": "" 860 | }, 861 | "require": { 862 | "php": "^7.2 || ^8.0", 863 | "phpdocumentor/reflection-common": "^2.0" 864 | }, 865 | "require-dev": { 866 | "ext-tokenizer": "*" 867 | }, 868 | "type": "library", 869 | "extra": { 870 | "branch-alias": { 871 | "dev-1.x": "1.x-dev" 872 | } 873 | }, 874 | "autoload": { 875 | "psr-4": { 876 | "phpDocumentor\\Reflection\\": "src" 877 | } 878 | }, 879 | "notification-url": "https://packagist.org/downloads/", 880 | "license": [ 881 | "MIT" 882 | ], 883 | "authors": [ 884 | { 885 | "name": "Mike van Riel", 886 | "email": "me@mikevanriel.com" 887 | } 888 | ], 889 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 890 | "time": "2020-06-27T10:12:23+00:00" 891 | }, 892 | { 893 | "name": "phpspec/prophecy", 894 | "version": "1.11.1", 895 | "source": { 896 | "type": "git", 897 | "url": "https://github.com/phpspec/prophecy.git", 898 | "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160" 899 | }, 900 | "dist": { 901 | "type": "zip", 902 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b20034be5efcdab4fb60ca3a29cba2949aead160", 903 | "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160", 904 | "shasum": "" 905 | }, 906 | "require": { 907 | "doctrine/instantiator": "^1.2", 908 | "php": "^7.2", 909 | "phpdocumentor/reflection-docblock": "^5.0", 910 | "sebastian/comparator": "^3.0 || ^4.0", 911 | "sebastian/recursion-context": "^3.0 || ^4.0" 912 | }, 913 | "require-dev": { 914 | "phpspec/phpspec": "^6.0", 915 | "phpunit/phpunit": "^8.0" 916 | }, 917 | "type": "library", 918 | "extra": { 919 | "branch-alias": { 920 | "dev-master": "1.11.x-dev" 921 | } 922 | }, 923 | "autoload": { 924 | "psr-4": { 925 | "Prophecy\\": "src/Prophecy" 926 | } 927 | }, 928 | "notification-url": "https://packagist.org/downloads/", 929 | "license": [ 930 | "MIT" 931 | ], 932 | "authors": [ 933 | { 934 | "name": "Konstantin Kudryashov", 935 | "email": "ever.zet@gmail.com", 936 | "homepage": "http://everzet.com" 937 | }, 938 | { 939 | "name": "Marcello Duarte", 940 | "email": "marcello.duarte@gmail.com" 941 | } 942 | ], 943 | "description": "Highly opinionated mocking framework for PHP 5.3+", 944 | "homepage": "https://github.com/phpspec/prophecy", 945 | "keywords": [ 946 | "Double", 947 | "Dummy", 948 | "fake", 949 | "mock", 950 | "spy", 951 | "stub" 952 | ], 953 | "time": "2020-07-08T12:44:21+00:00" 954 | }, 955 | { 956 | "name": "phpunit/php-code-coverage", 957 | "version": "9.1.2", 958 | "source": { 959 | "type": "git", 960 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 961 | "reference": "5210f9269e44e6d34419cb92242ef11aee9351ac" 962 | }, 963 | "dist": { 964 | "type": "zip", 965 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/5210f9269e44e6d34419cb92242ef11aee9351ac", 966 | "reference": "5210f9269e44e6d34419cb92242ef11aee9351ac", 967 | "shasum": "" 968 | }, 969 | "require": { 970 | "ext-dom": "*", 971 | "ext-libxml": "*", 972 | "ext-xmlwriter": "*", 973 | "nikic/php-parser": "^4.7", 974 | "php": "^7.3 || ^8.0", 975 | "phpunit/php-file-iterator": "^3.0.3", 976 | "phpunit/php-text-template": "^2.0.2", 977 | "sebastian/code-unit-reverse-lookup": "^2.0.2", 978 | "sebastian/complexity": "^2.0", 979 | "sebastian/environment": "^5.1.2", 980 | "sebastian/lines-of-code": "^1.0", 981 | "sebastian/version": "^3.0.1", 982 | "theseer/tokenizer": "^1.2.0" 983 | }, 984 | "require-dev": { 985 | "phpunit/phpunit": "^9.3" 986 | }, 987 | "suggest": { 988 | "ext-pcov": "*", 989 | "ext-xdebug": "*" 990 | }, 991 | "type": "library", 992 | "extra": { 993 | "branch-alias": { 994 | "dev-master": "9.1-dev" 995 | } 996 | }, 997 | "autoload": { 998 | "classmap": [ 999 | "src/" 1000 | ] 1001 | }, 1002 | "notification-url": "https://packagist.org/downloads/", 1003 | "license": [ 1004 | "BSD-3-Clause" 1005 | ], 1006 | "authors": [ 1007 | { 1008 | "name": "Sebastian Bergmann", 1009 | "email": "sebastian@phpunit.de", 1010 | "role": "lead" 1011 | } 1012 | ], 1013 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1014 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1015 | "keywords": [ 1016 | "coverage", 1017 | "testing", 1018 | "xunit" 1019 | ], 1020 | "funding": [ 1021 | { 1022 | "url": "https://github.com/sebastianbergmann", 1023 | "type": "github" 1024 | } 1025 | ], 1026 | "time": "2020-08-10T07:24:51+00:00" 1027 | }, 1028 | { 1029 | "name": "phpunit/php-file-iterator", 1030 | "version": "3.0.4", 1031 | "source": { 1032 | "type": "git", 1033 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1034 | "reference": "25fefc5b19835ca653877fe081644a3f8c1d915e" 1035 | }, 1036 | "dist": { 1037 | "type": "zip", 1038 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/25fefc5b19835ca653877fe081644a3f8c1d915e", 1039 | "reference": "25fefc5b19835ca653877fe081644a3f8c1d915e", 1040 | "shasum": "" 1041 | }, 1042 | "require": { 1043 | "php": "^7.3 || ^8.0" 1044 | }, 1045 | "require-dev": { 1046 | "phpunit/phpunit": "^9.0" 1047 | }, 1048 | "type": "library", 1049 | "extra": { 1050 | "branch-alias": { 1051 | "dev-master": "3.0-dev" 1052 | } 1053 | }, 1054 | "autoload": { 1055 | "classmap": [ 1056 | "src/" 1057 | ] 1058 | }, 1059 | "notification-url": "https://packagist.org/downloads/", 1060 | "license": [ 1061 | "BSD-3-Clause" 1062 | ], 1063 | "authors": [ 1064 | { 1065 | "name": "Sebastian Bergmann", 1066 | "email": "sebastian@phpunit.de", 1067 | "role": "lead" 1068 | } 1069 | ], 1070 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1071 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1072 | "keywords": [ 1073 | "filesystem", 1074 | "iterator" 1075 | ], 1076 | "funding": [ 1077 | { 1078 | "url": "https://github.com/sebastianbergmann", 1079 | "type": "github" 1080 | } 1081 | ], 1082 | "time": "2020-07-11T05:18:21+00:00" 1083 | }, 1084 | { 1085 | "name": "phpunit/php-invoker", 1086 | "version": "3.1.0", 1087 | "source": { 1088 | "type": "git", 1089 | "url": "https://github.com/sebastianbergmann/php-invoker.git", 1090 | "reference": "7a85b66acc48cacffdf87dadd3694e7123674298" 1091 | }, 1092 | "dist": { 1093 | "type": "zip", 1094 | "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/7a85b66acc48cacffdf87dadd3694e7123674298", 1095 | "reference": "7a85b66acc48cacffdf87dadd3694e7123674298", 1096 | "shasum": "" 1097 | }, 1098 | "require": { 1099 | "php": "^7.3 || ^8.0" 1100 | }, 1101 | "require-dev": { 1102 | "ext-pcntl": "*", 1103 | "phpunit/phpunit": "^9.0" 1104 | }, 1105 | "suggest": { 1106 | "ext-pcntl": "*" 1107 | }, 1108 | "type": "library", 1109 | "extra": { 1110 | "branch-alias": { 1111 | "dev-master": "3.1-dev" 1112 | } 1113 | }, 1114 | "autoload": { 1115 | "classmap": [ 1116 | "src/" 1117 | ] 1118 | }, 1119 | "notification-url": "https://packagist.org/downloads/", 1120 | "license": [ 1121 | "BSD-3-Clause" 1122 | ], 1123 | "authors": [ 1124 | { 1125 | "name": "Sebastian Bergmann", 1126 | "email": "sebastian@phpunit.de", 1127 | "role": "lead" 1128 | } 1129 | ], 1130 | "description": "Invoke callables with a timeout", 1131 | "homepage": "https://github.com/sebastianbergmann/php-invoker/", 1132 | "keywords": [ 1133 | "process" 1134 | ], 1135 | "funding": [ 1136 | { 1137 | "url": "https://github.com/sebastianbergmann", 1138 | "type": "github" 1139 | } 1140 | ], 1141 | "time": "2020-08-06T07:04:15+00:00" 1142 | }, 1143 | { 1144 | "name": "phpunit/php-text-template", 1145 | "version": "2.0.2", 1146 | "source": { 1147 | "type": "git", 1148 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1149 | "reference": "6ff9c8ea4d3212b88fcf74e25e516e2c51c99324" 1150 | }, 1151 | "dist": { 1152 | "type": "zip", 1153 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/6ff9c8ea4d3212b88fcf74e25e516e2c51c99324", 1154 | "reference": "6ff9c8ea4d3212b88fcf74e25e516e2c51c99324", 1155 | "shasum": "" 1156 | }, 1157 | "require": { 1158 | "php": "^7.3 || ^8.0" 1159 | }, 1160 | "require-dev": { 1161 | "phpunit/phpunit": "^9.0" 1162 | }, 1163 | "type": "library", 1164 | "extra": { 1165 | "branch-alias": { 1166 | "dev-master": "2.0-dev" 1167 | } 1168 | }, 1169 | "autoload": { 1170 | "classmap": [ 1171 | "src/" 1172 | ] 1173 | }, 1174 | "notification-url": "https://packagist.org/downloads/", 1175 | "license": [ 1176 | "BSD-3-Clause" 1177 | ], 1178 | "authors": [ 1179 | { 1180 | "name": "Sebastian Bergmann", 1181 | "email": "sebastian@phpunit.de", 1182 | "role": "lead" 1183 | } 1184 | ], 1185 | "description": "Simple template engine.", 1186 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1187 | "keywords": [ 1188 | "template" 1189 | ], 1190 | "funding": [ 1191 | { 1192 | "url": "https://github.com/sebastianbergmann", 1193 | "type": "github" 1194 | } 1195 | ], 1196 | "time": "2020-06-26T11:55:37+00:00" 1197 | }, 1198 | { 1199 | "name": "phpunit/php-timer", 1200 | "version": "5.0.1", 1201 | "source": { 1202 | "type": "git", 1203 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1204 | "reference": "cc49734779cbb302bf51a44297dab8c4bbf941e7" 1205 | }, 1206 | "dist": { 1207 | "type": "zip", 1208 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/cc49734779cbb302bf51a44297dab8c4bbf941e7", 1209 | "reference": "cc49734779cbb302bf51a44297dab8c4bbf941e7", 1210 | "shasum": "" 1211 | }, 1212 | "require": { 1213 | "php": "^7.3 || ^8.0" 1214 | }, 1215 | "require-dev": { 1216 | "phpunit/phpunit": "^9.2" 1217 | }, 1218 | "type": "library", 1219 | "extra": { 1220 | "branch-alias": { 1221 | "dev-master": "5.0-dev" 1222 | } 1223 | }, 1224 | "autoload": { 1225 | "classmap": [ 1226 | "src/" 1227 | ] 1228 | }, 1229 | "notification-url": "https://packagist.org/downloads/", 1230 | "license": [ 1231 | "BSD-3-Clause" 1232 | ], 1233 | "authors": [ 1234 | { 1235 | "name": "Sebastian Bergmann", 1236 | "email": "sebastian@phpunit.de", 1237 | "role": "lead" 1238 | } 1239 | ], 1240 | "description": "Utility class for timing", 1241 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1242 | "keywords": [ 1243 | "timer" 1244 | ], 1245 | "funding": [ 1246 | { 1247 | "url": "https://github.com/sebastianbergmann", 1248 | "type": "github" 1249 | } 1250 | ], 1251 | "time": "2020-06-26T11:58:13+00:00" 1252 | }, 1253 | { 1254 | "name": "phpunit/phpunit", 1255 | "version": "9.3.5", 1256 | "source": { 1257 | "type": "git", 1258 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1259 | "reference": "7115b00b23bcd4f62a73855c9615694d2f206e71" 1260 | }, 1261 | "dist": { 1262 | "type": "zip", 1263 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7115b00b23bcd4f62a73855c9615694d2f206e71", 1264 | "reference": "7115b00b23bcd4f62a73855c9615694d2f206e71", 1265 | "shasum": "" 1266 | }, 1267 | "require": { 1268 | "doctrine/instantiator": "^1.3.1", 1269 | "ext-dom": "*", 1270 | "ext-json": "*", 1271 | "ext-libxml": "*", 1272 | "ext-mbstring": "*", 1273 | "ext-xml": "*", 1274 | "ext-xmlwriter": "*", 1275 | "myclabs/deep-copy": "^1.10.1", 1276 | "phar-io/manifest": "^2.0.1", 1277 | "phar-io/version": "^3.0.2", 1278 | "php": "^7.3 || ^8.0", 1279 | "phpspec/prophecy": "^1.11.1", 1280 | "phpunit/php-code-coverage": "^9.1.1", 1281 | "phpunit/php-file-iterator": "^3.0.4", 1282 | "phpunit/php-invoker": "^3.1", 1283 | "phpunit/php-text-template": "^2.0.2", 1284 | "phpunit/php-timer": "^5.0.1", 1285 | "sebastian/code-unit": "^1.0.5", 1286 | "sebastian/comparator": "^4.0.3", 1287 | "sebastian/diff": "^4.0.2", 1288 | "sebastian/environment": "^5.1.2", 1289 | "sebastian/exporter": "^4.0.2", 1290 | "sebastian/global-state": "^5.0", 1291 | "sebastian/object-enumerator": "^4.0.2", 1292 | "sebastian/resource-operations": "^3.0.2", 1293 | "sebastian/type": "^2.2.1", 1294 | "sebastian/version": "^3.0.1" 1295 | }, 1296 | "require-dev": { 1297 | "ext-pdo": "*", 1298 | "phpspec/prophecy-phpunit": "^2.0.1" 1299 | }, 1300 | "suggest": { 1301 | "ext-soap": "*", 1302 | "ext-xdebug": "*" 1303 | }, 1304 | "bin": [ 1305 | "phpunit" 1306 | ], 1307 | "type": "library", 1308 | "extra": { 1309 | "branch-alias": { 1310 | "dev-master": "9.3-dev" 1311 | } 1312 | }, 1313 | "autoload": { 1314 | "classmap": [ 1315 | "src/" 1316 | ], 1317 | "files": [ 1318 | "src/Framework/Assert/Functions.php" 1319 | ] 1320 | }, 1321 | "notification-url": "https://packagist.org/downloads/", 1322 | "license": [ 1323 | "BSD-3-Clause" 1324 | ], 1325 | "authors": [ 1326 | { 1327 | "name": "Sebastian Bergmann", 1328 | "email": "sebastian@phpunit.de", 1329 | "role": "lead" 1330 | } 1331 | ], 1332 | "description": "The PHP Unit Testing framework.", 1333 | "homepage": "https://phpunit.de/", 1334 | "keywords": [ 1335 | "phpunit", 1336 | "testing", 1337 | "xunit" 1338 | ], 1339 | "funding": [ 1340 | { 1341 | "url": "https://phpunit.de/donate.html", 1342 | "type": "custom" 1343 | }, 1344 | { 1345 | "url": "https://github.com/sebastianbergmann", 1346 | "type": "github" 1347 | } 1348 | ], 1349 | "time": "2020-08-10T06:50:08+00:00" 1350 | }, 1351 | { 1352 | "name": "psr/container", 1353 | "version": "1.0.0", 1354 | "source": { 1355 | "type": "git", 1356 | "url": "https://github.com/php-fig/container.git", 1357 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 1358 | }, 1359 | "dist": { 1360 | "type": "zip", 1361 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1362 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1363 | "shasum": "" 1364 | }, 1365 | "require": { 1366 | "php": ">=5.3.0" 1367 | }, 1368 | "type": "library", 1369 | "extra": { 1370 | "branch-alias": { 1371 | "dev-master": "1.0.x-dev" 1372 | } 1373 | }, 1374 | "autoload": { 1375 | "psr-4": { 1376 | "Psr\\Container\\": "src/" 1377 | } 1378 | }, 1379 | "notification-url": "https://packagist.org/downloads/", 1380 | "license": [ 1381 | "MIT" 1382 | ], 1383 | "authors": [ 1384 | { 1385 | "name": "PHP-FIG", 1386 | "homepage": "http://www.php-fig.org/" 1387 | } 1388 | ], 1389 | "description": "Common Container Interface (PHP FIG PSR-11)", 1390 | "homepage": "https://github.com/php-fig/container", 1391 | "keywords": [ 1392 | "PSR-11", 1393 | "container", 1394 | "container-interface", 1395 | "container-interop", 1396 | "psr" 1397 | ], 1398 | "time": "2017-02-14T16:28:37+00:00" 1399 | }, 1400 | { 1401 | "name": "psr/event-dispatcher", 1402 | "version": "1.0.0", 1403 | "source": { 1404 | "type": "git", 1405 | "url": "https://github.com/php-fig/event-dispatcher.git", 1406 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" 1407 | }, 1408 | "dist": { 1409 | "type": "zip", 1410 | "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", 1411 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", 1412 | "shasum": "" 1413 | }, 1414 | "require": { 1415 | "php": ">=7.2.0" 1416 | }, 1417 | "type": "library", 1418 | "extra": { 1419 | "branch-alias": { 1420 | "dev-master": "1.0.x-dev" 1421 | } 1422 | }, 1423 | "autoload": { 1424 | "psr-4": { 1425 | "Psr\\EventDispatcher\\": "src/" 1426 | } 1427 | }, 1428 | "notification-url": "https://packagist.org/downloads/", 1429 | "license": [ 1430 | "MIT" 1431 | ], 1432 | "authors": [ 1433 | { 1434 | "name": "PHP-FIG", 1435 | "homepage": "http://www.php-fig.org/" 1436 | } 1437 | ], 1438 | "description": "Standard interfaces for event handling.", 1439 | "keywords": [ 1440 | "events", 1441 | "psr", 1442 | "psr-14" 1443 | ], 1444 | "time": "2019-01-08T18:20:26+00:00" 1445 | }, 1446 | { 1447 | "name": "psr/log", 1448 | "version": "1.1.3", 1449 | "source": { 1450 | "type": "git", 1451 | "url": "https://github.com/php-fig/log.git", 1452 | "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" 1453 | }, 1454 | "dist": { 1455 | "type": "zip", 1456 | "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", 1457 | "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", 1458 | "shasum": "" 1459 | }, 1460 | "require": { 1461 | "php": ">=5.3.0" 1462 | }, 1463 | "type": "library", 1464 | "extra": { 1465 | "branch-alias": { 1466 | "dev-master": "1.1.x-dev" 1467 | } 1468 | }, 1469 | "autoload": { 1470 | "psr-4": { 1471 | "Psr\\Log\\": "Psr/Log/" 1472 | } 1473 | }, 1474 | "notification-url": "https://packagist.org/downloads/", 1475 | "license": [ 1476 | "MIT" 1477 | ], 1478 | "authors": [ 1479 | { 1480 | "name": "PHP-FIG", 1481 | "homepage": "http://www.php-fig.org/" 1482 | } 1483 | ], 1484 | "description": "Common interface for logging libraries", 1485 | "homepage": "https://github.com/php-fig/log", 1486 | "keywords": [ 1487 | "log", 1488 | "psr", 1489 | "psr-3" 1490 | ], 1491 | "time": "2020-03-23T09:12:05+00:00" 1492 | }, 1493 | { 1494 | "name": "sebastian/code-unit", 1495 | "version": "1.0.5", 1496 | "source": { 1497 | "type": "git", 1498 | "url": "https://github.com/sebastianbergmann/code-unit.git", 1499 | "reference": "c1e2df332c905079980b119c4db103117e5e5c90" 1500 | }, 1501 | "dist": { 1502 | "type": "zip", 1503 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/c1e2df332c905079980b119c4db103117e5e5c90", 1504 | "reference": "c1e2df332c905079980b119c4db103117e5e5c90", 1505 | "shasum": "" 1506 | }, 1507 | "require": { 1508 | "php": "^7.3 || ^8.0" 1509 | }, 1510 | "require-dev": { 1511 | "phpunit/phpunit": "^9.0" 1512 | }, 1513 | "type": "library", 1514 | "extra": { 1515 | "branch-alias": { 1516 | "dev-master": "1.0-dev" 1517 | } 1518 | }, 1519 | "autoload": { 1520 | "classmap": [ 1521 | "src/" 1522 | ] 1523 | }, 1524 | "notification-url": "https://packagist.org/downloads/", 1525 | "license": [ 1526 | "BSD-3-Clause" 1527 | ], 1528 | "authors": [ 1529 | { 1530 | "name": "Sebastian Bergmann", 1531 | "email": "sebastian@phpunit.de", 1532 | "role": "lead" 1533 | } 1534 | ], 1535 | "description": "Collection of value objects that represent the PHP code units", 1536 | "homepage": "https://github.com/sebastianbergmann/code-unit", 1537 | "funding": [ 1538 | { 1539 | "url": "https://github.com/sebastianbergmann", 1540 | "type": "github" 1541 | } 1542 | ], 1543 | "time": "2020-06-26T12:50:45+00:00" 1544 | }, 1545 | { 1546 | "name": "sebastian/code-unit-reverse-lookup", 1547 | "version": "2.0.2", 1548 | "source": { 1549 | "type": "git", 1550 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1551 | "reference": "ee51f9bb0c6d8a43337055db3120829fa14da819" 1552 | }, 1553 | "dist": { 1554 | "type": "zip", 1555 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ee51f9bb0c6d8a43337055db3120829fa14da819", 1556 | "reference": "ee51f9bb0c6d8a43337055db3120829fa14da819", 1557 | "shasum": "" 1558 | }, 1559 | "require": { 1560 | "php": "^7.3 || ^8.0" 1561 | }, 1562 | "require-dev": { 1563 | "phpunit/phpunit": "^9.0" 1564 | }, 1565 | "type": "library", 1566 | "extra": { 1567 | "branch-alias": { 1568 | "dev-master": "2.0-dev" 1569 | } 1570 | }, 1571 | "autoload": { 1572 | "classmap": [ 1573 | "src/" 1574 | ] 1575 | }, 1576 | "notification-url": "https://packagist.org/downloads/", 1577 | "license": [ 1578 | "BSD-3-Clause" 1579 | ], 1580 | "authors": [ 1581 | { 1582 | "name": "Sebastian Bergmann", 1583 | "email": "sebastian@phpunit.de" 1584 | } 1585 | ], 1586 | "description": "Looks up which function or method a line of code belongs to", 1587 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1588 | "funding": [ 1589 | { 1590 | "url": "https://github.com/sebastianbergmann", 1591 | "type": "github" 1592 | } 1593 | ], 1594 | "time": "2020-06-26T12:04:00+00:00" 1595 | }, 1596 | { 1597 | "name": "sebastian/comparator", 1598 | "version": "4.0.3", 1599 | "source": { 1600 | "type": "git", 1601 | "url": "https://github.com/sebastianbergmann/comparator.git", 1602 | "reference": "dcc580eadfaa4e7f9d2cf9ae1922134ea962e14f" 1603 | }, 1604 | "dist": { 1605 | "type": "zip", 1606 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/dcc580eadfaa4e7f9d2cf9ae1922134ea962e14f", 1607 | "reference": "dcc580eadfaa4e7f9d2cf9ae1922134ea962e14f", 1608 | "shasum": "" 1609 | }, 1610 | "require": { 1611 | "php": "^7.3 || ^8.0", 1612 | "sebastian/diff": "^4.0", 1613 | "sebastian/exporter": "^4.0" 1614 | }, 1615 | "require-dev": { 1616 | "phpunit/phpunit": "^9.0" 1617 | }, 1618 | "type": "library", 1619 | "extra": { 1620 | "branch-alias": { 1621 | "dev-master": "4.0-dev" 1622 | } 1623 | }, 1624 | "autoload": { 1625 | "classmap": [ 1626 | "src/" 1627 | ] 1628 | }, 1629 | "notification-url": "https://packagist.org/downloads/", 1630 | "license": [ 1631 | "BSD-3-Clause" 1632 | ], 1633 | "authors": [ 1634 | { 1635 | "name": "Sebastian Bergmann", 1636 | "email": "sebastian@phpunit.de" 1637 | }, 1638 | { 1639 | "name": "Jeff Welch", 1640 | "email": "whatthejeff@gmail.com" 1641 | }, 1642 | { 1643 | "name": "Volker Dusch", 1644 | "email": "github@wallbash.com" 1645 | }, 1646 | { 1647 | "name": "Bernhard Schussek", 1648 | "email": "bschussek@2bepublished.at" 1649 | } 1650 | ], 1651 | "description": "Provides the functionality to compare PHP values for equality", 1652 | "homepage": "https://github.com/sebastianbergmann/comparator", 1653 | "keywords": [ 1654 | "comparator", 1655 | "compare", 1656 | "equality" 1657 | ], 1658 | "funding": [ 1659 | { 1660 | "url": "https://github.com/sebastianbergmann", 1661 | "type": "github" 1662 | } 1663 | ], 1664 | "time": "2020-06-26T12:05:46+00:00" 1665 | }, 1666 | { 1667 | "name": "sebastian/complexity", 1668 | "version": "2.0.0", 1669 | "source": { 1670 | "type": "git", 1671 | "url": "https://github.com/sebastianbergmann/complexity.git", 1672 | "reference": "33fcd6a26656c6546f70871244ecba4b4dced097" 1673 | }, 1674 | "dist": { 1675 | "type": "zip", 1676 | "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/33fcd6a26656c6546f70871244ecba4b4dced097", 1677 | "reference": "33fcd6a26656c6546f70871244ecba4b4dced097", 1678 | "shasum": "" 1679 | }, 1680 | "require": { 1681 | "nikic/php-parser": "^4.7", 1682 | "php": "^7.3 || ^8.0" 1683 | }, 1684 | "require-dev": { 1685 | "phpunit/phpunit": "^9.2" 1686 | }, 1687 | "type": "library", 1688 | "extra": { 1689 | "branch-alias": { 1690 | "dev-master": "2.0-dev" 1691 | } 1692 | }, 1693 | "autoload": { 1694 | "classmap": [ 1695 | "src/" 1696 | ] 1697 | }, 1698 | "notification-url": "https://packagist.org/downloads/", 1699 | "license": [ 1700 | "BSD-3-Clause" 1701 | ], 1702 | "authors": [ 1703 | { 1704 | "name": "Sebastian Bergmann", 1705 | "email": "sebastian@phpunit.de", 1706 | "role": "lead" 1707 | } 1708 | ], 1709 | "description": "Library for calculating the complexity of PHP code units", 1710 | "homepage": "https://github.com/sebastianbergmann/complexity", 1711 | "funding": [ 1712 | { 1713 | "url": "https://github.com/sebastianbergmann", 1714 | "type": "github" 1715 | } 1716 | ], 1717 | "time": "2020-07-25T14:01:34+00:00" 1718 | }, 1719 | { 1720 | "name": "sebastian/diff", 1721 | "version": "4.0.2", 1722 | "source": { 1723 | "type": "git", 1724 | "url": "https://github.com/sebastianbergmann/diff.git", 1725 | "reference": "1e90b4cf905a7d06c420b1d2e9d11a4dc8a13113" 1726 | }, 1727 | "dist": { 1728 | "type": "zip", 1729 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/1e90b4cf905a7d06c420b1d2e9d11a4dc8a13113", 1730 | "reference": "1e90b4cf905a7d06c420b1d2e9d11a4dc8a13113", 1731 | "shasum": "" 1732 | }, 1733 | "require": { 1734 | "php": "^7.3 || ^8.0" 1735 | }, 1736 | "require-dev": { 1737 | "phpunit/phpunit": "^9.0", 1738 | "symfony/process": "^4.2 || ^5" 1739 | }, 1740 | "type": "library", 1741 | "extra": { 1742 | "branch-alias": { 1743 | "dev-master": "4.0-dev" 1744 | } 1745 | }, 1746 | "autoload": { 1747 | "classmap": [ 1748 | "src/" 1749 | ] 1750 | }, 1751 | "notification-url": "https://packagist.org/downloads/", 1752 | "license": [ 1753 | "BSD-3-Clause" 1754 | ], 1755 | "authors": [ 1756 | { 1757 | "name": "Sebastian Bergmann", 1758 | "email": "sebastian@phpunit.de" 1759 | }, 1760 | { 1761 | "name": "Kore Nordmann", 1762 | "email": "mail@kore-nordmann.de" 1763 | } 1764 | ], 1765 | "description": "Diff implementation", 1766 | "homepage": "https://github.com/sebastianbergmann/diff", 1767 | "keywords": [ 1768 | "diff", 1769 | "udiff", 1770 | "unidiff", 1771 | "unified diff" 1772 | ], 1773 | "funding": [ 1774 | { 1775 | "url": "https://github.com/sebastianbergmann", 1776 | "type": "github" 1777 | } 1778 | ], 1779 | "time": "2020-06-30T04:46:02+00:00" 1780 | }, 1781 | { 1782 | "name": "sebastian/environment", 1783 | "version": "5.1.2", 1784 | "source": { 1785 | "type": "git", 1786 | "url": "https://github.com/sebastianbergmann/environment.git", 1787 | "reference": "0a757cab9d5b7ef49a619f1143e6c9c1bc0fe9d2" 1788 | }, 1789 | "dist": { 1790 | "type": "zip", 1791 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/0a757cab9d5b7ef49a619f1143e6c9c1bc0fe9d2", 1792 | "reference": "0a757cab9d5b7ef49a619f1143e6c9c1bc0fe9d2", 1793 | "shasum": "" 1794 | }, 1795 | "require": { 1796 | "php": "^7.3 || ^8.0" 1797 | }, 1798 | "require-dev": { 1799 | "phpunit/phpunit": "^9.0" 1800 | }, 1801 | "suggest": { 1802 | "ext-posix": "*" 1803 | }, 1804 | "type": "library", 1805 | "extra": { 1806 | "branch-alias": { 1807 | "dev-master": "5.0-dev" 1808 | } 1809 | }, 1810 | "autoload": { 1811 | "classmap": [ 1812 | "src/" 1813 | ] 1814 | }, 1815 | "notification-url": "https://packagist.org/downloads/", 1816 | "license": [ 1817 | "BSD-3-Clause" 1818 | ], 1819 | "authors": [ 1820 | { 1821 | "name": "Sebastian Bergmann", 1822 | "email": "sebastian@phpunit.de" 1823 | } 1824 | ], 1825 | "description": "Provides functionality to handle HHVM/PHP environments", 1826 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1827 | "keywords": [ 1828 | "Xdebug", 1829 | "environment", 1830 | "hhvm" 1831 | ], 1832 | "funding": [ 1833 | { 1834 | "url": "https://github.com/sebastianbergmann", 1835 | "type": "github" 1836 | } 1837 | ], 1838 | "time": "2020-06-26T12:07:24+00:00" 1839 | }, 1840 | { 1841 | "name": "sebastian/exporter", 1842 | "version": "4.0.2", 1843 | "source": { 1844 | "type": "git", 1845 | "url": "https://github.com/sebastianbergmann/exporter.git", 1846 | "reference": "571d721db4aec847a0e59690b954af33ebf9f023" 1847 | }, 1848 | "dist": { 1849 | "type": "zip", 1850 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/571d721db4aec847a0e59690b954af33ebf9f023", 1851 | "reference": "571d721db4aec847a0e59690b954af33ebf9f023", 1852 | "shasum": "" 1853 | }, 1854 | "require": { 1855 | "php": "^7.3 || ^8.0", 1856 | "sebastian/recursion-context": "^4.0" 1857 | }, 1858 | "require-dev": { 1859 | "ext-mbstring": "*", 1860 | "phpunit/phpunit": "^9.2" 1861 | }, 1862 | "type": "library", 1863 | "extra": { 1864 | "branch-alias": { 1865 | "dev-master": "4.0-dev" 1866 | } 1867 | }, 1868 | "autoload": { 1869 | "classmap": [ 1870 | "src/" 1871 | ] 1872 | }, 1873 | "notification-url": "https://packagist.org/downloads/", 1874 | "license": [ 1875 | "BSD-3-Clause" 1876 | ], 1877 | "authors": [ 1878 | { 1879 | "name": "Sebastian Bergmann", 1880 | "email": "sebastian@phpunit.de" 1881 | }, 1882 | { 1883 | "name": "Jeff Welch", 1884 | "email": "whatthejeff@gmail.com" 1885 | }, 1886 | { 1887 | "name": "Volker Dusch", 1888 | "email": "github@wallbash.com" 1889 | }, 1890 | { 1891 | "name": "Adam Harvey", 1892 | "email": "aharvey@php.net" 1893 | }, 1894 | { 1895 | "name": "Bernhard Schussek", 1896 | "email": "bschussek@gmail.com" 1897 | } 1898 | ], 1899 | "description": "Provides the functionality to export PHP variables for visualization", 1900 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1901 | "keywords": [ 1902 | "export", 1903 | "exporter" 1904 | ], 1905 | "funding": [ 1906 | { 1907 | "url": "https://github.com/sebastianbergmann", 1908 | "type": "github" 1909 | } 1910 | ], 1911 | "time": "2020-06-26T12:08:55+00:00" 1912 | }, 1913 | { 1914 | "name": "sebastian/global-state", 1915 | "version": "5.0.0", 1916 | "source": { 1917 | "type": "git", 1918 | "url": "https://github.com/sebastianbergmann/global-state.git", 1919 | "reference": "22ae663c951bdc39da96603edc3239ed3a299097" 1920 | }, 1921 | "dist": { 1922 | "type": "zip", 1923 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/22ae663c951bdc39da96603edc3239ed3a299097", 1924 | "reference": "22ae663c951bdc39da96603edc3239ed3a299097", 1925 | "shasum": "" 1926 | }, 1927 | "require": { 1928 | "php": "^7.3 || ^8.0", 1929 | "sebastian/object-reflector": "^2.0", 1930 | "sebastian/recursion-context": "^4.0" 1931 | }, 1932 | "require-dev": { 1933 | "ext-dom": "*", 1934 | "phpunit/phpunit": "^9.3" 1935 | }, 1936 | "suggest": { 1937 | "ext-uopz": "*" 1938 | }, 1939 | "type": "library", 1940 | "extra": { 1941 | "branch-alias": { 1942 | "dev-master": "5.0-dev" 1943 | } 1944 | }, 1945 | "autoload": { 1946 | "classmap": [ 1947 | "src/" 1948 | ] 1949 | }, 1950 | "notification-url": "https://packagist.org/downloads/", 1951 | "license": [ 1952 | "BSD-3-Clause" 1953 | ], 1954 | "authors": [ 1955 | { 1956 | "name": "Sebastian Bergmann", 1957 | "email": "sebastian@phpunit.de" 1958 | } 1959 | ], 1960 | "description": "Snapshotting of global state", 1961 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1962 | "keywords": [ 1963 | "global state" 1964 | ], 1965 | "funding": [ 1966 | { 1967 | "url": "https://github.com/sebastianbergmann", 1968 | "type": "github" 1969 | } 1970 | ], 1971 | "time": "2020-08-07T04:09:03+00:00" 1972 | }, 1973 | { 1974 | "name": "sebastian/lines-of-code", 1975 | "version": "1.0.0", 1976 | "source": { 1977 | "type": "git", 1978 | "url": "https://github.com/sebastianbergmann/lines-of-code.git", 1979 | "reference": "e02bf626f404b5daec382a7b8a6a4456e49017e5" 1980 | }, 1981 | "dist": { 1982 | "type": "zip", 1983 | "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e02bf626f404b5daec382a7b8a6a4456e49017e5", 1984 | "reference": "e02bf626f404b5daec382a7b8a6a4456e49017e5", 1985 | "shasum": "" 1986 | }, 1987 | "require": { 1988 | "nikic/php-parser": "^4.6", 1989 | "php": "^7.3 || ^8.0" 1990 | }, 1991 | "require-dev": { 1992 | "phpunit/phpunit": "^9.2" 1993 | }, 1994 | "type": "library", 1995 | "extra": { 1996 | "branch-alias": { 1997 | "dev-master": "1.0-dev" 1998 | } 1999 | }, 2000 | "autoload": { 2001 | "classmap": [ 2002 | "src/" 2003 | ] 2004 | }, 2005 | "notification-url": "https://packagist.org/downloads/", 2006 | "license": [ 2007 | "BSD-3-Clause" 2008 | ], 2009 | "authors": [ 2010 | { 2011 | "name": "Sebastian Bergmann", 2012 | "email": "sebastian@phpunit.de", 2013 | "role": "lead" 2014 | } 2015 | ], 2016 | "description": "Library for counting the lines of code in PHP source code", 2017 | "homepage": "https://github.com/sebastianbergmann/lines-of-code", 2018 | "funding": [ 2019 | { 2020 | "url": "https://github.com/sebastianbergmann", 2021 | "type": "github" 2022 | } 2023 | ], 2024 | "time": "2020-07-22T18:33:42+00:00" 2025 | }, 2026 | { 2027 | "name": "sebastian/object-enumerator", 2028 | "version": "4.0.2", 2029 | "source": { 2030 | "type": "git", 2031 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 2032 | "reference": "074fed2d0a6d08e1677dd8ce9d32aecb384917b8" 2033 | }, 2034 | "dist": { 2035 | "type": "zip", 2036 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/074fed2d0a6d08e1677dd8ce9d32aecb384917b8", 2037 | "reference": "074fed2d0a6d08e1677dd8ce9d32aecb384917b8", 2038 | "shasum": "" 2039 | }, 2040 | "require": { 2041 | "php": "^7.3 || ^8.0", 2042 | "sebastian/object-reflector": "^2.0", 2043 | "sebastian/recursion-context": "^4.0" 2044 | }, 2045 | "require-dev": { 2046 | "phpunit/phpunit": "^9.0" 2047 | }, 2048 | "type": "library", 2049 | "extra": { 2050 | "branch-alias": { 2051 | "dev-master": "4.0-dev" 2052 | } 2053 | }, 2054 | "autoload": { 2055 | "classmap": [ 2056 | "src/" 2057 | ] 2058 | }, 2059 | "notification-url": "https://packagist.org/downloads/", 2060 | "license": [ 2061 | "BSD-3-Clause" 2062 | ], 2063 | "authors": [ 2064 | { 2065 | "name": "Sebastian Bergmann", 2066 | "email": "sebastian@phpunit.de" 2067 | } 2068 | ], 2069 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 2070 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 2071 | "funding": [ 2072 | { 2073 | "url": "https://github.com/sebastianbergmann", 2074 | "type": "github" 2075 | } 2076 | ], 2077 | "time": "2020-06-26T12:11:32+00:00" 2078 | }, 2079 | { 2080 | "name": "sebastian/object-reflector", 2081 | "version": "2.0.2", 2082 | "source": { 2083 | "type": "git", 2084 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 2085 | "reference": "127a46f6b057441b201253526f81d5406d6c7840" 2086 | }, 2087 | "dist": { 2088 | "type": "zip", 2089 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/127a46f6b057441b201253526f81d5406d6c7840", 2090 | "reference": "127a46f6b057441b201253526f81d5406d6c7840", 2091 | "shasum": "" 2092 | }, 2093 | "require": { 2094 | "php": "^7.3 || ^8.0" 2095 | }, 2096 | "require-dev": { 2097 | "phpunit/phpunit": "^9.0" 2098 | }, 2099 | "type": "library", 2100 | "extra": { 2101 | "branch-alias": { 2102 | "dev-master": "2.0-dev" 2103 | } 2104 | }, 2105 | "autoload": { 2106 | "classmap": [ 2107 | "src/" 2108 | ] 2109 | }, 2110 | "notification-url": "https://packagist.org/downloads/", 2111 | "license": [ 2112 | "BSD-3-Clause" 2113 | ], 2114 | "authors": [ 2115 | { 2116 | "name": "Sebastian Bergmann", 2117 | "email": "sebastian@phpunit.de" 2118 | } 2119 | ], 2120 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 2121 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 2122 | "funding": [ 2123 | { 2124 | "url": "https://github.com/sebastianbergmann", 2125 | "type": "github" 2126 | } 2127 | ], 2128 | "time": "2020-06-26T12:12:55+00:00" 2129 | }, 2130 | { 2131 | "name": "sebastian/recursion-context", 2132 | "version": "4.0.2", 2133 | "source": { 2134 | "type": "git", 2135 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 2136 | "reference": "062231bf61d2b9448c4fa5a7643b5e1829c11d63" 2137 | }, 2138 | "dist": { 2139 | "type": "zip", 2140 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/062231bf61d2b9448c4fa5a7643b5e1829c11d63", 2141 | "reference": "062231bf61d2b9448c4fa5a7643b5e1829c11d63", 2142 | "shasum": "" 2143 | }, 2144 | "require": { 2145 | "php": "^7.3 || ^8.0" 2146 | }, 2147 | "require-dev": { 2148 | "phpunit/phpunit": "^9.0" 2149 | }, 2150 | "type": "library", 2151 | "extra": { 2152 | "branch-alias": { 2153 | "dev-master": "4.0-dev" 2154 | } 2155 | }, 2156 | "autoload": { 2157 | "classmap": [ 2158 | "src/" 2159 | ] 2160 | }, 2161 | "notification-url": "https://packagist.org/downloads/", 2162 | "license": [ 2163 | "BSD-3-Clause" 2164 | ], 2165 | "authors": [ 2166 | { 2167 | "name": "Sebastian Bergmann", 2168 | "email": "sebastian@phpunit.de" 2169 | }, 2170 | { 2171 | "name": "Jeff Welch", 2172 | "email": "whatthejeff@gmail.com" 2173 | }, 2174 | { 2175 | "name": "Adam Harvey", 2176 | "email": "aharvey@php.net" 2177 | } 2178 | ], 2179 | "description": "Provides functionality to recursively process PHP variables", 2180 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 2181 | "funding": [ 2182 | { 2183 | "url": "https://github.com/sebastianbergmann", 2184 | "type": "github" 2185 | } 2186 | ], 2187 | "time": "2020-06-26T12:14:17+00:00" 2188 | }, 2189 | { 2190 | "name": "sebastian/resource-operations", 2191 | "version": "3.0.2", 2192 | "source": { 2193 | "type": "git", 2194 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 2195 | "reference": "0653718a5a629b065e91f774595267f8dc32e213" 2196 | }, 2197 | "dist": { 2198 | "type": "zip", 2199 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0653718a5a629b065e91f774595267f8dc32e213", 2200 | "reference": "0653718a5a629b065e91f774595267f8dc32e213", 2201 | "shasum": "" 2202 | }, 2203 | "require": { 2204 | "php": "^7.3 || ^8.0" 2205 | }, 2206 | "require-dev": { 2207 | "phpunit/phpunit": "^9.0" 2208 | }, 2209 | "type": "library", 2210 | "extra": { 2211 | "branch-alias": { 2212 | "dev-master": "3.0-dev" 2213 | } 2214 | }, 2215 | "autoload": { 2216 | "classmap": [ 2217 | "src/" 2218 | ] 2219 | }, 2220 | "notification-url": "https://packagist.org/downloads/", 2221 | "license": [ 2222 | "BSD-3-Clause" 2223 | ], 2224 | "authors": [ 2225 | { 2226 | "name": "Sebastian Bergmann", 2227 | "email": "sebastian@phpunit.de" 2228 | } 2229 | ], 2230 | "description": "Provides a list of PHP built-in functions that operate on resources", 2231 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 2232 | "funding": [ 2233 | { 2234 | "url": "https://github.com/sebastianbergmann", 2235 | "type": "github" 2236 | } 2237 | ], 2238 | "time": "2020-06-26T12:16:22+00:00" 2239 | }, 2240 | { 2241 | "name": "sebastian/type", 2242 | "version": "2.2.1", 2243 | "source": { 2244 | "type": "git", 2245 | "url": "https://github.com/sebastianbergmann/type.git", 2246 | "reference": "86991e2b33446cd96e648c18bcdb1e95afb2c05a" 2247 | }, 2248 | "dist": { 2249 | "type": "zip", 2250 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/86991e2b33446cd96e648c18bcdb1e95afb2c05a", 2251 | "reference": "86991e2b33446cd96e648c18bcdb1e95afb2c05a", 2252 | "shasum": "" 2253 | }, 2254 | "require": { 2255 | "php": "^7.3 || ^8.0" 2256 | }, 2257 | "require-dev": { 2258 | "phpunit/phpunit": "^9.2" 2259 | }, 2260 | "type": "library", 2261 | "extra": { 2262 | "branch-alias": { 2263 | "dev-master": "2.2-dev" 2264 | } 2265 | }, 2266 | "autoload": { 2267 | "classmap": [ 2268 | "src/" 2269 | ] 2270 | }, 2271 | "notification-url": "https://packagist.org/downloads/", 2272 | "license": [ 2273 | "BSD-3-Clause" 2274 | ], 2275 | "authors": [ 2276 | { 2277 | "name": "Sebastian Bergmann", 2278 | "email": "sebastian@phpunit.de", 2279 | "role": "lead" 2280 | } 2281 | ], 2282 | "description": "Collection of value objects that represent the types of the PHP type system", 2283 | "homepage": "https://github.com/sebastianbergmann/type", 2284 | "funding": [ 2285 | { 2286 | "url": "https://github.com/sebastianbergmann", 2287 | "type": "github" 2288 | } 2289 | ], 2290 | "time": "2020-07-05T08:31:53+00:00" 2291 | }, 2292 | { 2293 | "name": "sebastian/version", 2294 | "version": "3.0.1", 2295 | "source": { 2296 | "type": "git", 2297 | "url": "https://github.com/sebastianbergmann/version.git", 2298 | "reference": "626586115d0ed31cb71483be55beb759b5af5a3c" 2299 | }, 2300 | "dist": { 2301 | "type": "zip", 2302 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/626586115d0ed31cb71483be55beb759b5af5a3c", 2303 | "reference": "626586115d0ed31cb71483be55beb759b5af5a3c", 2304 | "shasum": "" 2305 | }, 2306 | "require": { 2307 | "php": "^7.3 || ^8.0" 2308 | }, 2309 | "type": "library", 2310 | "extra": { 2311 | "branch-alias": { 2312 | "dev-master": "3.0-dev" 2313 | } 2314 | }, 2315 | "autoload": { 2316 | "classmap": [ 2317 | "src/" 2318 | ] 2319 | }, 2320 | "notification-url": "https://packagist.org/downloads/", 2321 | "license": [ 2322 | "BSD-3-Clause" 2323 | ], 2324 | "authors": [ 2325 | { 2326 | "name": "Sebastian Bergmann", 2327 | "email": "sebastian@phpunit.de", 2328 | "role": "lead" 2329 | } 2330 | ], 2331 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2332 | "homepage": "https://github.com/sebastianbergmann/version", 2333 | "funding": [ 2334 | { 2335 | "url": "https://github.com/sebastianbergmann", 2336 | "type": "github" 2337 | } 2338 | ], 2339 | "time": "2020-06-26T12:18:43+00:00" 2340 | }, 2341 | { 2342 | "name": "symfony/console", 2343 | "version": "v5.1.3", 2344 | "source": { 2345 | "type": "git", 2346 | "url": "https://github.com/symfony/console.git", 2347 | "reference": "2226c68009627934b8cfc01260b4d287eab070df" 2348 | }, 2349 | "dist": { 2350 | "type": "zip", 2351 | "url": "https://api.github.com/repos/symfony/console/zipball/2226c68009627934b8cfc01260b4d287eab070df", 2352 | "reference": "2226c68009627934b8cfc01260b4d287eab070df", 2353 | "shasum": "" 2354 | }, 2355 | "require": { 2356 | "php": ">=7.2.5", 2357 | "symfony/polyfill-mbstring": "~1.0", 2358 | "symfony/polyfill-php73": "^1.8", 2359 | "symfony/polyfill-php80": "^1.15", 2360 | "symfony/service-contracts": "^1.1|^2", 2361 | "symfony/string": "^5.1" 2362 | }, 2363 | "conflict": { 2364 | "symfony/dependency-injection": "<4.4", 2365 | "symfony/dotenv": "<5.1", 2366 | "symfony/event-dispatcher": "<4.4", 2367 | "symfony/lock": "<4.4", 2368 | "symfony/process": "<4.4" 2369 | }, 2370 | "provide": { 2371 | "psr/log-implementation": "1.0" 2372 | }, 2373 | "require-dev": { 2374 | "psr/log": "~1.0", 2375 | "symfony/config": "^4.4|^5.0", 2376 | "symfony/dependency-injection": "^4.4|^5.0", 2377 | "symfony/event-dispatcher": "^4.4|^5.0", 2378 | "symfony/lock": "^4.4|^5.0", 2379 | "symfony/process": "^4.4|^5.0", 2380 | "symfony/var-dumper": "^4.4|^5.0" 2381 | }, 2382 | "suggest": { 2383 | "psr/log": "For using the console logger", 2384 | "symfony/event-dispatcher": "", 2385 | "symfony/lock": "", 2386 | "symfony/process": "" 2387 | }, 2388 | "type": "library", 2389 | "extra": { 2390 | "branch-alias": { 2391 | "dev-master": "5.1-dev" 2392 | } 2393 | }, 2394 | "autoload": { 2395 | "psr-4": { 2396 | "Symfony\\Component\\Console\\": "" 2397 | }, 2398 | "exclude-from-classmap": [ 2399 | "/Tests/" 2400 | ] 2401 | }, 2402 | "notification-url": "https://packagist.org/downloads/", 2403 | "license": [ 2404 | "MIT" 2405 | ], 2406 | "authors": [ 2407 | { 2408 | "name": "Fabien Potencier", 2409 | "email": "fabien@symfony.com" 2410 | }, 2411 | { 2412 | "name": "Symfony Community", 2413 | "homepage": "https://symfony.com/contributors" 2414 | } 2415 | ], 2416 | "description": "Symfony Console Component", 2417 | "homepage": "https://symfony.com", 2418 | "funding": [ 2419 | { 2420 | "url": "https://symfony.com/sponsor", 2421 | "type": "custom" 2422 | }, 2423 | { 2424 | "url": "https://github.com/fabpot", 2425 | "type": "github" 2426 | }, 2427 | { 2428 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2429 | "type": "tidelift" 2430 | } 2431 | ], 2432 | "time": "2020-07-06T13:23:11+00:00" 2433 | }, 2434 | { 2435 | "name": "symfony/deprecation-contracts", 2436 | "version": "v2.1.3", 2437 | "source": { 2438 | "type": "git", 2439 | "url": "https://github.com/symfony/deprecation-contracts.git", 2440 | "reference": "5e20b83385a77593259c9f8beb2c43cd03b2ac14" 2441 | }, 2442 | "dist": { 2443 | "type": "zip", 2444 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5e20b83385a77593259c9f8beb2c43cd03b2ac14", 2445 | "reference": "5e20b83385a77593259c9f8beb2c43cd03b2ac14", 2446 | "shasum": "" 2447 | }, 2448 | "require": { 2449 | "php": ">=7.1" 2450 | }, 2451 | "type": "library", 2452 | "extra": { 2453 | "branch-alias": { 2454 | "dev-master": "2.1-dev" 2455 | }, 2456 | "thanks": { 2457 | "name": "symfony/contracts", 2458 | "url": "https://github.com/symfony/contracts" 2459 | } 2460 | }, 2461 | "autoload": { 2462 | "files": [ 2463 | "function.php" 2464 | ] 2465 | }, 2466 | "notification-url": "https://packagist.org/downloads/", 2467 | "license": [ 2468 | "MIT" 2469 | ], 2470 | "authors": [ 2471 | { 2472 | "name": "Nicolas Grekas", 2473 | "email": "p@tchwork.com" 2474 | }, 2475 | { 2476 | "name": "Symfony Community", 2477 | "homepage": "https://symfony.com/contributors" 2478 | } 2479 | ], 2480 | "description": "A generic function and convention to trigger deprecation notices", 2481 | "homepage": "https://symfony.com", 2482 | "funding": [ 2483 | { 2484 | "url": "https://symfony.com/sponsor", 2485 | "type": "custom" 2486 | }, 2487 | { 2488 | "url": "https://github.com/fabpot", 2489 | "type": "github" 2490 | }, 2491 | { 2492 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2493 | "type": "tidelift" 2494 | } 2495 | ], 2496 | "time": "2020-06-06T08:49:21+00:00" 2497 | }, 2498 | { 2499 | "name": "symfony/event-dispatcher", 2500 | "version": "v5.1.3", 2501 | "source": { 2502 | "type": "git", 2503 | "url": "https://github.com/symfony/event-dispatcher.git", 2504 | "reference": "7827d55911f91c070fc293ea51a06eec80797d76" 2505 | }, 2506 | "dist": { 2507 | "type": "zip", 2508 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7827d55911f91c070fc293ea51a06eec80797d76", 2509 | "reference": "7827d55911f91c070fc293ea51a06eec80797d76", 2510 | "shasum": "" 2511 | }, 2512 | "require": { 2513 | "php": ">=7.2.5", 2514 | "symfony/deprecation-contracts": "^2.1", 2515 | "symfony/event-dispatcher-contracts": "^2", 2516 | "symfony/polyfill-php80": "^1.15" 2517 | }, 2518 | "conflict": { 2519 | "symfony/dependency-injection": "<4.4" 2520 | }, 2521 | "provide": { 2522 | "psr/event-dispatcher-implementation": "1.0", 2523 | "symfony/event-dispatcher-implementation": "2.0" 2524 | }, 2525 | "require-dev": { 2526 | "psr/log": "~1.0", 2527 | "symfony/config": "^4.4|^5.0", 2528 | "symfony/dependency-injection": "^4.4|^5.0", 2529 | "symfony/expression-language": "^4.4|^5.0", 2530 | "symfony/http-foundation": "^4.4|^5.0", 2531 | "symfony/service-contracts": "^1.1|^2", 2532 | "symfony/stopwatch": "^4.4|^5.0" 2533 | }, 2534 | "suggest": { 2535 | "symfony/dependency-injection": "", 2536 | "symfony/http-kernel": "" 2537 | }, 2538 | "type": "library", 2539 | "extra": { 2540 | "branch-alias": { 2541 | "dev-master": "5.1-dev" 2542 | } 2543 | }, 2544 | "autoload": { 2545 | "psr-4": { 2546 | "Symfony\\Component\\EventDispatcher\\": "" 2547 | }, 2548 | "exclude-from-classmap": [ 2549 | "/Tests/" 2550 | ] 2551 | }, 2552 | "notification-url": "https://packagist.org/downloads/", 2553 | "license": [ 2554 | "MIT" 2555 | ], 2556 | "authors": [ 2557 | { 2558 | "name": "Fabien Potencier", 2559 | "email": "fabien@symfony.com" 2560 | }, 2561 | { 2562 | "name": "Symfony Community", 2563 | "homepage": "https://symfony.com/contributors" 2564 | } 2565 | ], 2566 | "description": "Symfony EventDispatcher Component", 2567 | "homepage": "https://symfony.com", 2568 | "funding": [ 2569 | { 2570 | "url": "https://symfony.com/sponsor", 2571 | "type": "custom" 2572 | }, 2573 | { 2574 | "url": "https://github.com/fabpot", 2575 | "type": "github" 2576 | }, 2577 | { 2578 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2579 | "type": "tidelift" 2580 | } 2581 | ], 2582 | "time": "2020-06-18T18:24:02+00:00" 2583 | }, 2584 | { 2585 | "name": "symfony/event-dispatcher-contracts", 2586 | "version": "v2.1.3", 2587 | "source": { 2588 | "type": "git", 2589 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 2590 | "reference": "f6f613d74cfc5a623fc36294d3451eb7fa5a042b" 2591 | }, 2592 | "dist": { 2593 | "type": "zip", 2594 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f6f613d74cfc5a623fc36294d3451eb7fa5a042b", 2595 | "reference": "f6f613d74cfc5a623fc36294d3451eb7fa5a042b", 2596 | "shasum": "" 2597 | }, 2598 | "require": { 2599 | "php": ">=7.2.5", 2600 | "psr/event-dispatcher": "^1" 2601 | }, 2602 | "suggest": { 2603 | "symfony/event-dispatcher-implementation": "" 2604 | }, 2605 | "type": "library", 2606 | "extra": { 2607 | "branch-alias": { 2608 | "dev-master": "2.1-dev" 2609 | }, 2610 | "thanks": { 2611 | "name": "symfony/contracts", 2612 | "url": "https://github.com/symfony/contracts" 2613 | } 2614 | }, 2615 | "autoload": { 2616 | "psr-4": { 2617 | "Symfony\\Contracts\\EventDispatcher\\": "" 2618 | } 2619 | }, 2620 | "notification-url": "https://packagist.org/downloads/", 2621 | "license": [ 2622 | "MIT" 2623 | ], 2624 | "authors": [ 2625 | { 2626 | "name": "Nicolas Grekas", 2627 | "email": "p@tchwork.com" 2628 | }, 2629 | { 2630 | "name": "Symfony Community", 2631 | "homepage": "https://symfony.com/contributors" 2632 | } 2633 | ], 2634 | "description": "Generic abstractions related to dispatching event", 2635 | "homepage": "https://symfony.com", 2636 | "keywords": [ 2637 | "abstractions", 2638 | "contracts", 2639 | "decoupling", 2640 | "interfaces", 2641 | "interoperability", 2642 | "standards" 2643 | ], 2644 | "funding": [ 2645 | { 2646 | "url": "https://symfony.com/sponsor", 2647 | "type": "custom" 2648 | }, 2649 | { 2650 | "url": "https://github.com/fabpot", 2651 | "type": "github" 2652 | }, 2653 | { 2654 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2655 | "type": "tidelift" 2656 | } 2657 | ], 2658 | "time": "2020-07-06T13:23:11+00:00" 2659 | }, 2660 | { 2661 | "name": "symfony/filesystem", 2662 | "version": "v5.1.3", 2663 | "source": { 2664 | "type": "git", 2665 | "url": "https://github.com/symfony/filesystem.git", 2666 | "reference": "6e4320f06d5f2cce0d96530162491f4465179157" 2667 | }, 2668 | "dist": { 2669 | "type": "zip", 2670 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/6e4320f06d5f2cce0d96530162491f4465179157", 2671 | "reference": "6e4320f06d5f2cce0d96530162491f4465179157", 2672 | "shasum": "" 2673 | }, 2674 | "require": { 2675 | "php": ">=7.2.5", 2676 | "symfony/polyfill-ctype": "~1.8" 2677 | }, 2678 | "type": "library", 2679 | "extra": { 2680 | "branch-alias": { 2681 | "dev-master": "5.1-dev" 2682 | } 2683 | }, 2684 | "autoload": { 2685 | "psr-4": { 2686 | "Symfony\\Component\\Filesystem\\": "" 2687 | }, 2688 | "exclude-from-classmap": [ 2689 | "/Tests/" 2690 | ] 2691 | }, 2692 | "notification-url": "https://packagist.org/downloads/", 2693 | "license": [ 2694 | "MIT" 2695 | ], 2696 | "authors": [ 2697 | { 2698 | "name": "Fabien Potencier", 2699 | "email": "fabien@symfony.com" 2700 | }, 2701 | { 2702 | "name": "Symfony Community", 2703 | "homepage": "https://symfony.com/contributors" 2704 | } 2705 | ], 2706 | "description": "Symfony Filesystem Component", 2707 | "homepage": "https://symfony.com", 2708 | "funding": [ 2709 | { 2710 | "url": "https://symfony.com/sponsor", 2711 | "type": "custom" 2712 | }, 2713 | { 2714 | "url": "https://github.com/fabpot", 2715 | "type": "github" 2716 | }, 2717 | { 2718 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2719 | "type": "tidelift" 2720 | } 2721 | ], 2722 | "time": "2020-05-30T20:35:19+00:00" 2723 | }, 2724 | { 2725 | "name": "symfony/finder", 2726 | "version": "v5.1.3", 2727 | "source": { 2728 | "type": "git", 2729 | "url": "https://github.com/symfony/finder.git", 2730 | "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187" 2731 | }, 2732 | "dist": { 2733 | "type": "zip", 2734 | "url": "https://api.github.com/repos/symfony/finder/zipball/4298870062bfc667cb78d2b379be4bf5dec5f187", 2735 | "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187", 2736 | "shasum": "" 2737 | }, 2738 | "require": { 2739 | "php": ">=7.2.5" 2740 | }, 2741 | "type": "library", 2742 | "extra": { 2743 | "branch-alias": { 2744 | "dev-master": "5.1-dev" 2745 | } 2746 | }, 2747 | "autoload": { 2748 | "psr-4": { 2749 | "Symfony\\Component\\Finder\\": "" 2750 | }, 2751 | "exclude-from-classmap": [ 2752 | "/Tests/" 2753 | ] 2754 | }, 2755 | "notification-url": "https://packagist.org/downloads/", 2756 | "license": [ 2757 | "MIT" 2758 | ], 2759 | "authors": [ 2760 | { 2761 | "name": "Fabien Potencier", 2762 | "email": "fabien@symfony.com" 2763 | }, 2764 | { 2765 | "name": "Symfony Community", 2766 | "homepage": "https://symfony.com/contributors" 2767 | } 2768 | ], 2769 | "description": "Symfony Finder Component", 2770 | "homepage": "https://symfony.com", 2771 | "funding": [ 2772 | { 2773 | "url": "https://symfony.com/sponsor", 2774 | "type": "custom" 2775 | }, 2776 | { 2777 | "url": "https://github.com/fabpot", 2778 | "type": "github" 2779 | }, 2780 | { 2781 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2782 | "type": "tidelift" 2783 | } 2784 | ], 2785 | "time": "2020-05-20T17:43:50+00:00" 2786 | }, 2787 | { 2788 | "name": "symfony/options-resolver", 2789 | "version": "v5.1.3", 2790 | "source": { 2791 | "type": "git", 2792 | "url": "https://github.com/symfony/options-resolver.git", 2793 | "reference": "9ff59517938f88d90b6e65311fef08faa640f681" 2794 | }, 2795 | "dist": { 2796 | "type": "zip", 2797 | "url": "https://api.github.com/repos/symfony/options-resolver/zipball/9ff59517938f88d90b6e65311fef08faa640f681", 2798 | "reference": "9ff59517938f88d90b6e65311fef08faa640f681", 2799 | "shasum": "" 2800 | }, 2801 | "require": { 2802 | "php": ">=7.2.5", 2803 | "symfony/deprecation-contracts": "^2.1", 2804 | "symfony/polyfill-php80": "^1.15" 2805 | }, 2806 | "type": "library", 2807 | "extra": { 2808 | "branch-alias": { 2809 | "dev-master": "5.1-dev" 2810 | } 2811 | }, 2812 | "autoload": { 2813 | "psr-4": { 2814 | "Symfony\\Component\\OptionsResolver\\": "" 2815 | }, 2816 | "exclude-from-classmap": [ 2817 | "/Tests/" 2818 | ] 2819 | }, 2820 | "notification-url": "https://packagist.org/downloads/", 2821 | "license": [ 2822 | "MIT" 2823 | ], 2824 | "authors": [ 2825 | { 2826 | "name": "Fabien Potencier", 2827 | "email": "fabien@symfony.com" 2828 | }, 2829 | { 2830 | "name": "Symfony Community", 2831 | "homepage": "https://symfony.com/contributors" 2832 | } 2833 | ], 2834 | "description": "Symfony OptionsResolver Component", 2835 | "homepage": "https://symfony.com", 2836 | "keywords": [ 2837 | "config", 2838 | "configuration", 2839 | "options" 2840 | ], 2841 | "funding": [ 2842 | { 2843 | "url": "https://symfony.com/sponsor", 2844 | "type": "custom" 2845 | }, 2846 | { 2847 | "url": "https://github.com/fabpot", 2848 | "type": "github" 2849 | }, 2850 | { 2851 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2852 | "type": "tidelift" 2853 | } 2854 | ], 2855 | "time": "2020-07-12T12:58:00+00:00" 2856 | }, 2857 | { 2858 | "name": "symfony/polyfill-ctype", 2859 | "version": "v1.18.1", 2860 | "source": { 2861 | "type": "git", 2862 | "url": "https://github.com/symfony/polyfill-ctype.git", 2863 | "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" 2864 | }, 2865 | "dist": { 2866 | "type": "zip", 2867 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", 2868 | "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", 2869 | "shasum": "" 2870 | }, 2871 | "require": { 2872 | "php": ">=5.3.3" 2873 | }, 2874 | "suggest": { 2875 | "ext-ctype": "For best performance" 2876 | }, 2877 | "type": "library", 2878 | "extra": { 2879 | "branch-alias": { 2880 | "dev-master": "1.18-dev" 2881 | }, 2882 | "thanks": { 2883 | "name": "symfony/polyfill", 2884 | "url": "https://github.com/symfony/polyfill" 2885 | } 2886 | }, 2887 | "autoload": { 2888 | "psr-4": { 2889 | "Symfony\\Polyfill\\Ctype\\": "" 2890 | }, 2891 | "files": [ 2892 | "bootstrap.php" 2893 | ] 2894 | }, 2895 | "notification-url": "https://packagist.org/downloads/", 2896 | "license": [ 2897 | "MIT" 2898 | ], 2899 | "authors": [ 2900 | { 2901 | "name": "Gert de Pagter", 2902 | "email": "BackEndTea@gmail.com" 2903 | }, 2904 | { 2905 | "name": "Symfony Community", 2906 | "homepage": "https://symfony.com/contributors" 2907 | } 2908 | ], 2909 | "description": "Symfony polyfill for ctype functions", 2910 | "homepage": "https://symfony.com", 2911 | "keywords": [ 2912 | "compatibility", 2913 | "ctype", 2914 | "polyfill", 2915 | "portable" 2916 | ], 2917 | "funding": [ 2918 | { 2919 | "url": "https://symfony.com/sponsor", 2920 | "type": "custom" 2921 | }, 2922 | { 2923 | "url": "https://github.com/fabpot", 2924 | "type": "github" 2925 | }, 2926 | { 2927 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2928 | "type": "tidelift" 2929 | } 2930 | ], 2931 | "time": "2020-07-14T12:35:20+00:00" 2932 | }, 2933 | { 2934 | "name": "symfony/polyfill-intl-grapheme", 2935 | "version": "v1.18.1", 2936 | "source": { 2937 | "type": "git", 2938 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 2939 | "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5" 2940 | }, 2941 | "dist": { 2942 | "type": "zip", 2943 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b740103edbdcc39602239ee8860f0f45a8eb9aa5", 2944 | "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5", 2945 | "shasum": "" 2946 | }, 2947 | "require": { 2948 | "php": ">=5.3.3" 2949 | }, 2950 | "suggest": { 2951 | "ext-intl": "For best performance" 2952 | }, 2953 | "type": "library", 2954 | "extra": { 2955 | "branch-alias": { 2956 | "dev-master": "1.18-dev" 2957 | }, 2958 | "thanks": { 2959 | "name": "symfony/polyfill", 2960 | "url": "https://github.com/symfony/polyfill" 2961 | } 2962 | }, 2963 | "autoload": { 2964 | "psr-4": { 2965 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 2966 | }, 2967 | "files": [ 2968 | "bootstrap.php" 2969 | ] 2970 | }, 2971 | "notification-url": "https://packagist.org/downloads/", 2972 | "license": [ 2973 | "MIT" 2974 | ], 2975 | "authors": [ 2976 | { 2977 | "name": "Nicolas Grekas", 2978 | "email": "p@tchwork.com" 2979 | }, 2980 | { 2981 | "name": "Symfony Community", 2982 | "homepage": "https://symfony.com/contributors" 2983 | } 2984 | ], 2985 | "description": "Symfony polyfill for intl's grapheme_* functions", 2986 | "homepage": "https://symfony.com", 2987 | "keywords": [ 2988 | "compatibility", 2989 | "grapheme", 2990 | "intl", 2991 | "polyfill", 2992 | "portable", 2993 | "shim" 2994 | ], 2995 | "funding": [ 2996 | { 2997 | "url": "https://symfony.com/sponsor", 2998 | "type": "custom" 2999 | }, 3000 | { 3001 | "url": "https://github.com/fabpot", 3002 | "type": "github" 3003 | }, 3004 | { 3005 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3006 | "type": "tidelift" 3007 | } 3008 | ], 3009 | "time": "2020-07-14T12:35:20+00:00" 3010 | }, 3011 | { 3012 | "name": "symfony/polyfill-intl-normalizer", 3013 | "version": "v1.18.1", 3014 | "source": { 3015 | "type": "git", 3016 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 3017 | "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e" 3018 | }, 3019 | "dist": { 3020 | "type": "zip", 3021 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", 3022 | "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", 3023 | "shasum": "" 3024 | }, 3025 | "require": { 3026 | "php": ">=5.3.3" 3027 | }, 3028 | "suggest": { 3029 | "ext-intl": "For best performance" 3030 | }, 3031 | "type": "library", 3032 | "extra": { 3033 | "branch-alias": { 3034 | "dev-master": "1.18-dev" 3035 | }, 3036 | "thanks": { 3037 | "name": "symfony/polyfill", 3038 | "url": "https://github.com/symfony/polyfill" 3039 | } 3040 | }, 3041 | "autoload": { 3042 | "psr-4": { 3043 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 3044 | }, 3045 | "files": [ 3046 | "bootstrap.php" 3047 | ], 3048 | "classmap": [ 3049 | "Resources/stubs" 3050 | ] 3051 | }, 3052 | "notification-url": "https://packagist.org/downloads/", 3053 | "license": [ 3054 | "MIT" 3055 | ], 3056 | "authors": [ 3057 | { 3058 | "name": "Nicolas Grekas", 3059 | "email": "p@tchwork.com" 3060 | }, 3061 | { 3062 | "name": "Symfony Community", 3063 | "homepage": "https://symfony.com/contributors" 3064 | } 3065 | ], 3066 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 3067 | "homepage": "https://symfony.com", 3068 | "keywords": [ 3069 | "compatibility", 3070 | "intl", 3071 | "normalizer", 3072 | "polyfill", 3073 | "portable", 3074 | "shim" 3075 | ], 3076 | "funding": [ 3077 | { 3078 | "url": "https://symfony.com/sponsor", 3079 | "type": "custom" 3080 | }, 3081 | { 3082 | "url": "https://github.com/fabpot", 3083 | "type": "github" 3084 | }, 3085 | { 3086 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3087 | "type": "tidelift" 3088 | } 3089 | ], 3090 | "time": "2020-07-14T12:35:20+00:00" 3091 | }, 3092 | { 3093 | "name": "symfony/polyfill-mbstring", 3094 | "version": "v1.18.1", 3095 | "source": { 3096 | "type": "git", 3097 | "url": "https://github.com/symfony/polyfill-mbstring.git", 3098 | "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" 3099 | }, 3100 | "dist": { 3101 | "type": "zip", 3102 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", 3103 | "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", 3104 | "shasum": "" 3105 | }, 3106 | "require": { 3107 | "php": ">=5.3.3" 3108 | }, 3109 | "suggest": { 3110 | "ext-mbstring": "For best performance" 3111 | }, 3112 | "type": "library", 3113 | "extra": { 3114 | "branch-alias": { 3115 | "dev-master": "1.18-dev" 3116 | }, 3117 | "thanks": { 3118 | "name": "symfony/polyfill", 3119 | "url": "https://github.com/symfony/polyfill" 3120 | } 3121 | }, 3122 | "autoload": { 3123 | "psr-4": { 3124 | "Symfony\\Polyfill\\Mbstring\\": "" 3125 | }, 3126 | "files": [ 3127 | "bootstrap.php" 3128 | ] 3129 | }, 3130 | "notification-url": "https://packagist.org/downloads/", 3131 | "license": [ 3132 | "MIT" 3133 | ], 3134 | "authors": [ 3135 | { 3136 | "name": "Nicolas Grekas", 3137 | "email": "p@tchwork.com" 3138 | }, 3139 | { 3140 | "name": "Symfony Community", 3141 | "homepage": "https://symfony.com/contributors" 3142 | } 3143 | ], 3144 | "description": "Symfony polyfill for the Mbstring extension", 3145 | "homepage": "https://symfony.com", 3146 | "keywords": [ 3147 | "compatibility", 3148 | "mbstring", 3149 | "polyfill", 3150 | "portable", 3151 | "shim" 3152 | ], 3153 | "funding": [ 3154 | { 3155 | "url": "https://symfony.com/sponsor", 3156 | "type": "custom" 3157 | }, 3158 | { 3159 | "url": "https://github.com/fabpot", 3160 | "type": "github" 3161 | }, 3162 | { 3163 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3164 | "type": "tidelift" 3165 | } 3166 | ], 3167 | "time": "2020-07-14T12:35:20+00:00" 3168 | }, 3169 | { 3170 | "name": "symfony/polyfill-php70", 3171 | "version": "v1.18.1", 3172 | "source": { 3173 | "type": "git", 3174 | "url": "https://github.com/symfony/polyfill-php70.git", 3175 | "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3" 3176 | }, 3177 | "dist": { 3178 | "type": "zip", 3179 | "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", 3180 | "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", 3181 | "shasum": "" 3182 | }, 3183 | "require": { 3184 | "paragonie/random_compat": "~1.0|~2.0|~9.99", 3185 | "php": ">=5.3.3" 3186 | }, 3187 | "type": "library", 3188 | "extra": { 3189 | "branch-alias": { 3190 | "dev-master": "1.18-dev" 3191 | }, 3192 | "thanks": { 3193 | "name": "symfony/polyfill", 3194 | "url": "https://github.com/symfony/polyfill" 3195 | } 3196 | }, 3197 | "autoload": { 3198 | "psr-4": { 3199 | "Symfony\\Polyfill\\Php70\\": "" 3200 | }, 3201 | "files": [ 3202 | "bootstrap.php" 3203 | ], 3204 | "classmap": [ 3205 | "Resources/stubs" 3206 | ] 3207 | }, 3208 | "notification-url": "https://packagist.org/downloads/", 3209 | "license": [ 3210 | "MIT" 3211 | ], 3212 | "authors": [ 3213 | { 3214 | "name": "Nicolas Grekas", 3215 | "email": "p@tchwork.com" 3216 | }, 3217 | { 3218 | "name": "Symfony Community", 3219 | "homepage": "https://symfony.com/contributors" 3220 | } 3221 | ], 3222 | "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", 3223 | "homepage": "https://symfony.com", 3224 | "keywords": [ 3225 | "compatibility", 3226 | "polyfill", 3227 | "portable", 3228 | "shim" 3229 | ], 3230 | "funding": [ 3231 | { 3232 | "url": "https://symfony.com/sponsor", 3233 | "type": "custom" 3234 | }, 3235 | { 3236 | "url": "https://github.com/fabpot", 3237 | "type": "github" 3238 | }, 3239 | { 3240 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3241 | "type": "tidelift" 3242 | } 3243 | ], 3244 | "time": "2020-07-14T12:35:20+00:00" 3245 | }, 3246 | { 3247 | "name": "symfony/polyfill-php72", 3248 | "version": "v1.18.1", 3249 | "source": { 3250 | "type": "git", 3251 | "url": "https://github.com/symfony/polyfill-php72.git", 3252 | "reference": "639447d008615574653fb3bc60d1986d7172eaae" 3253 | }, 3254 | "dist": { 3255 | "type": "zip", 3256 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae", 3257 | "reference": "639447d008615574653fb3bc60d1986d7172eaae", 3258 | "shasum": "" 3259 | }, 3260 | "require": { 3261 | "php": ">=5.3.3" 3262 | }, 3263 | "type": "library", 3264 | "extra": { 3265 | "branch-alias": { 3266 | "dev-master": "1.18-dev" 3267 | }, 3268 | "thanks": { 3269 | "name": "symfony/polyfill", 3270 | "url": "https://github.com/symfony/polyfill" 3271 | } 3272 | }, 3273 | "autoload": { 3274 | "psr-4": { 3275 | "Symfony\\Polyfill\\Php72\\": "" 3276 | }, 3277 | "files": [ 3278 | "bootstrap.php" 3279 | ] 3280 | }, 3281 | "notification-url": "https://packagist.org/downloads/", 3282 | "license": [ 3283 | "MIT" 3284 | ], 3285 | "authors": [ 3286 | { 3287 | "name": "Nicolas Grekas", 3288 | "email": "p@tchwork.com" 3289 | }, 3290 | { 3291 | "name": "Symfony Community", 3292 | "homepage": "https://symfony.com/contributors" 3293 | } 3294 | ], 3295 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", 3296 | "homepage": "https://symfony.com", 3297 | "keywords": [ 3298 | "compatibility", 3299 | "polyfill", 3300 | "portable", 3301 | "shim" 3302 | ], 3303 | "funding": [ 3304 | { 3305 | "url": "https://symfony.com/sponsor", 3306 | "type": "custom" 3307 | }, 3308 | { 3309 | "url": "https://github.com/fabpot", 3310 | "type": "github" 3311 | }, 3312 | { 3313 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3314 | "type": "tidelift" 3315 | } 3316 | ], 3317 | "time": "2020-07-14T12:35:20+00:00" 3318 | }, 3319 | { 3320 | "name": "symfony/polyfill-php73", 3321 | "version": "v1.18.1", 3322 | "source": { 3323 | "type": "git", 3324 | "url": "https://github.com/symfony/polyfill-php73.git", 3325 | "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca" 3326 | }, 3327 | "dist": { 3328 | "type": "zip", 3329 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca", 3330 | "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca", 3331 | "shasum": "" 3332 | }, 3333 | "require": { 3334 | "php": ">=5.3.3" 3335 | }, 3336 | "type": "library", 3337 | "extra": { 3338 | "branch-alias": { 3339 | "dev-master": "1.18-dev" 3340 | }, 3341 | "thanks": { 3342 | "name": "symfony/polyfill", 3343 | "url": "https://github.com/symfony/polyfill" 3344 | } 3345 | }, 3346 | "autoload": { 3347 | "psr-4": { 3348 | "Symfony\\Polyfill\\Php73\\": "" 3349 | }, 3350 | "files": [ 3351 | "bootstrap.php" 3352 | ], 3353 | "classmap": [ 3354 | "Resources/stubs" 3355 | ] 3356 | }, 3357 | "notification-url": "https://packagist.org/downloads/", 3358 | "license": [ 3359 | "MIT" 3360 | ], 3361 | "authors": [ 3362 | { 3363 | "name": "Nicolas Grekas", 3364 | "email": "p@tchwork.com" 3365 | }, 3366 | { 3367 | "name": "Symfony Community", 3368 | "homepage": "https://symfony.com/contributors" 3369 | } 3370 | ], 3371 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 3372 | "homepage": "https://symfony.com", 3373 | "keywords": [ 3374 | "compatibility", 3375 | "polyfill", 3376 | "portable", 3377 | "shim" 3378 | ], 3379 | "funding": [ 3380 | { 3381 | "url": "https://symfony.com/sponsor", 3382 | "type": "custom" 3383 | }, 3384 | { 3385 | "url": "https://github.com/fabpot", 3386 | "type": "github" 3387 | }, 3388 | { 3389 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3390 | "type": "tidelift" 3391 | } 3392 | ], 3393 | "time": "2020-07-14T12:35:20+00:00" 3394 | }, 3395 | { 3396 | "name": "symfony/polyfill-php80", 3397 | "version": "v1.18.1", 3398 | "source": { 3399 | "type": "git", 3400 | "url": "https://github.com/symfony/polyfill-php80.git", 3401 | "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981" 3402 | }, 3403 | "dist": { 3404 | "type": "zip", 3405 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981", 3406 | "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981", 3407 | "shasum": "" 3408 | }, 3409 | "require": { 3410 | "php": ">=7.0.8" 3411 | }, 3412 | "type": "library", 3413 | "extra": { 3414 | "branch-alias": { 3415 | "dev-master": "1.18-dev" 3416 | }, 3417 | "thanks": { 3418 | "name": "symfony/polyfill", 3419 | "url": "https://github.com/symfony/polyfill" 3420 | } 3421 | }, 3422 | "autoload": { 3423 | "psr-4": { 3424 | "Symfony\\Polyfill\\Php80\\": "" 3425 | }, 3426 | "files": [ 3427 | "bootstrap.php" 3428 | ], 3429 | "classmap": [ 3430 | "Resources/stubs" 3431 | ] 3432 | }, 3433 | "notification-url": "https://packagist.org/downloads/", 3434 | "license": [ 3435 | "MIT" 3436 | ], 3437 | "authors": [ 3438 | { 3439 | "name": "Ion Bazan", 3440 | "email": "ion.bazan@gmail.com" 3441 | }, 3442 | { 3443 | "name": "Nicolas Grekas", 3444 | "email": "p@tchwork.com" 3445 | }, 3446 | { 3447 | "name": "Symfony Community", 3448 | "homepage": "https://symfony.com/contributors" 3449 | } 3450 | ], 3451 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 3452 | "homepage": "https://symfony.com", 3453 | "keywords": [ 3454 | "compatibility", 3455 | "polyfill", 3456 | "portable", 3457 | "shim" 3458 | ], 3459 | "funding": [ 3460 | { 3461 | "url": "https://symfony.com/sponsor", 3462 | "type": "custom" 3463 | }, 3464 | { 3465 | "url": "https://github.com/fabpot", 3466 | "type": "github" 3467 | }, 3468 | { 3469 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3470 | "type": "tidelift" 3471 | } 3472 | ], 3473 | "time": "2020-07-14T12:35:20+00:00" 3474 | }, 3475 | { 3476 | "name": "symfony/process", 3477 | "version": "v5.1.3", 3478 | "source": { 3479 | "type": "git", 3480 | "url": "https://github.com/symfony/process.git", 3481 | "reference": "1864216226af21eb76d9477f691e7cbf198e0402" 3482 | }, 3483 | "dist": { 3484 | "type": "zip", 3485 | "url": "https://api.github.com/repos/symfony/process/zipball/1864216226af21eb76d9477f691e7cbf198e0402", 3486 | "reference": "1864216226af21eb76d9477f691e7cbf198e0402", 3487 | "shasum": "" 3488 | }, 3489 | "require": { 3490 | "php": ">=7.2.5", 3491 | "symfony/polyfill-php80": "^1.15" 3492 | }, 3493 | "type": "library", 3494 | "extra": { 3495 | "branch-alias": { 3496 | "dev-master": "5.1-dev" 3497 | } 3498 | }, 3499 | "autoload": { 3500 | "psr-4": { 3501 | "Symfony\\Component\\Process\\": "" 3502 | }, 3503 | "exclude-from-classmap": [ 3504 | "/Tests/" 3505 | ] 3506 | }, 3507 | "notification-url": "https://packagist.org/downloads/", 3508 | "license": [ 3509 | "MIT" 3510 | ], 3511 | "authors": [ 3512 | { 3513 | "name": "Fabien Potencier", 3514 | "email": "fabien@symfony.com" 3515 | }, 3516 | { 3517 | "name": "Symfony Community", 3518 | "homepage": "https://symfony.com/contributors" 3519 | } 3520 | ], 3521 | "description": "Symfony Process Component", 3522 | "homepage": "https://symfony.com", 3523 | "funding": [ 3524 | { 3525 | "url": "https://symfony.com/sponsor", 3526 | "type": "custom" 3527 | }, 3528 | { 3529 | "url": "https://github.com/fabpot", 3530 | "type": "github" 3531 | }, 3532 | { 3533 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3534 | "type": "tidelift" 3535 | } 3536 | ], 3537 | "time": "2020-07-23T08:36:24+00:00" 3538 | }, 3539 | { 3540 | "name": "symfony/service-contracts", 3541 | "version": "v2.1.3", 3542 | "source": { 3543 | "type": "git", 3544 | "url": "https://github.com/symfony/service-contracts.git", 3545 | "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442" 3546 | }, 3547 | "dist": { 3548 | "type": "zip", 3549 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/58c7475e5457c5492c26cc740cc0ad7464be9442", 3550 | "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442", 3551 | "shasum": "" 3552 | }, 3553 | "require": { 3554 | "php": ">=7.2.5", 3555 | "psr/container": "^1.0" 3556 | }, 3557 | "suggest": { 3558 | "symfony/service-implementation": "" 3559 | }, 3560 | "type": "library", 3561 | "extra": { 3562 | "branch-alias": { 3563 | "dev-master": "2.1-dev" 3564 | }, 3565 | "thanks": { 3566 | "name": "symfony/contracts", 3567 | "url": "https://github.com/symfony/contracts" 3568 | } 3569 | }, 3570 | "autoload": { 3571 | "psr-4": { 3572 | "Symfony\\Contracts\\Service\\": "" 3573 | } 3574 | }, 3575 | "notification-url": "https://packagist.org/downloads/", 3576 | "license": [ 3577 | "MIT" 3578 | ], 3579 | "authors": [ 3580 | { 3581 | "name": "Nicolas Grekas", 3582 | "email": "p@tchwork.com" 3583 | }, 3584 | { 3585 | "name": "Symfony Community", 3586 | "homepage": "https://symfony.com/contributors" 3587 | } 3588 | ], 3589 | "description": "Generic abstractions related to writing services", 3590 | "homepage": "https://symfony.com", 3591 | "keywords": [ 3592 | "abstractions", 3593 | "contracts", 3594 | "decoupling", 3595 | "interfaces", 3596 | "interoperability", 3597 | "standards" 3598 | ], 3599 | "funding": [ 3600 | { 3601 | "url": "https://symfony.com/sponsor", 3602 | "type": "custom" 3603 | }, 3604 | { 3605 | "url": "https://github.com/fabpot", 3606 | "type": "github" 3607 | }, 3608 | { 3609 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3610 | "type": "tidelift" 3611 | } 3612 | ], 3613 | "time": "2020-07-06T13:23:11+00:00" 3614 | }, 3615 | { 3616 | "name": "symfony/stopwatch", 3617 | "version": "v5.1.3", 3618 | "source": { 3619 | "type": "git", 3620 | "url": "https://github.com/symfony/stopwatch.git", 3621 | "reference": "0f7c58cf81dbb5dd67d423a89d577524a2ec0323" 3622 | }, 3623 | "dist": { 3624 | "type": "zip", 3625 | "url": "https://api.github.com/repos/symfony/stopwatch/zipball/0f7c58cf81dbb5dd67d423a89d577524a2ec0323", 3626 | "reference": "0f7c58cf81dbb5dd67d423a89d577524a2ec0323", 3627 | "shasum": "" 3628 | }, 3629 | "require": { 3630 | "php": ">=7.2.5", 3631 | "symfony/service-contracts": "^1.0|^2" 3632 | }, 3633 | "type": "library", 3634 | "extra": { 3635 | "branch-alias": { 3636 | "dev-master": "5.1-dev" 3637 | } 3638 | }, 3639 | "autoload": { 3640 | "psr-4": { 3641 | "Symfony\\Component\\Stopwatch\\": "" 3642 | }, 3643 | "exclude-from-classmap": [ 3644 | "/Tests/" 3645 | ] 3646 | }, 3647 | "notification-url": "https://packagist.org/downloads/", 3648 | "license": [ 3649 | "MIT" 3650 | ], 3651 | "authors": [ 3652 | { 3653 | "name": "Fabien Potencier", 3654 | "email": "fabien@symfony.com" 3655 | }, 3656 | { 3657 | "name": "Symfony Community", 3658 | "homepage": "https://symfony.com/contributors" 3659 | } 3660 | ], 3661 | "description": "Symfony Stopwatch Component", 3662 | "homepage": "https://symfony.com", 3663 | "funding": [ 3664 | { 3665 | "url": "https://symfony.com/sponsor", 3666 | "type": "custom" 3667 | }, 3668 | { 3669 | "url": "https://github.com/fabpot", 3670 | "type": "github" 3671 | }, 3672 | { 3673 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3674 | "type": "tidelift" 3675 | } 3676 | ], 3677 | "time": "2020-05-20T17:43:50+00:00" 3678 | }, 3679 | { 3680 | "name": "symfony/string", 3681 | "version": "v5.1.3", 3682 | "source": { 3683 | "type": "git", 3684 | "url": "https://github.com/symfony/string.git", 3685 | "reference": "f629ba9b611c76224feb21fe2bcbf0b6f992300b" 3686 | }, 3687 | "dist": { 3688 | "type": "zip", 3689 | "url": "https://api.github.com/repos/symfony/string/zipball/f629ba9b611c76224feb21fe2bcbf0b6f992300b", 3690 | "reference": "f629ba9b611c76224feb21fe2bcbf0b6f992300b", 3691 | "shasum": "" 3692 | }, 3693 | "require": { 3694 | "php": ">=7.2.5", 3695 | "symfony/polyfill-ctype": "~1.8", 3696 | "symfony/polyfill-intl-grapheme": "~1.0", 3697 | "symfony/polyfill-intl-normalizer": "~1.0", 3698 | "symfony/polyfill-mbstring": "~1.0", 3699 | "symfony/polyfill-php80": "~1.15" 3700 | }, 3701 | "require-dev": { 3702 | "symfony/error-handler": "^4.4|^5.0", 3703 | "symfony/http-client": "^4.4|^5.0", 3704 | "symfony/translation-contracts": "^1.1|^2", 3705 | "symfony/var-exporter": "^4.4|^5.0" 3706 | }, 3707 | "type": "library", 3708 | "extra": { 3709 | "branch-alias": { 3710 | "dev-master": "5.1-dev" 3711 | } 3712 | }, 3713 | "autoload": { 3714 | "psr-4": { 3715 | "Symfony\\Component\\String\\": "" 3716 | }, 3717 | "files": [ 3718 | "Resources/functions.php" 3719 | ], 3720 | "exclude-from-classmap": [ 3721 | "/Tests/" 3722 | ] 3723 | }, 3724 | "notification-url": "https://packagist.org/downloads/", 3725 | "license": [ 3726 | "MIT" 3727 | ], 3728 | "authors": [ 3729 | { 3730 | "name": "Nicolas Grekas", 3731 | "email": "p@tchwork.com" 3732 | }, 3733 | { 3734 | "name": "Symfony Community", 3735 | "homepage": "https://symfony.com/contributors" 3736 | } 3737 | ], 3738 | "description": "Symfony String component", 3739 | "homepage": "https://symfony.com", 3740 | "keywords": [ 3741 | "grapheme", 3742 | "i18n", 3743 | "string", 3744 | "unicode", 3745 | "utf-8", 3746 | "utf8" 3747 | ], 3748 | "funding": [ 3749 | { 3750 | "url": "https://symfony.com/sponsor", 3751 | "type": "custom" 3752 | }, 3753 | { 3754 | "url": "https://github.com/fabpot", 3755 | "type": "github" 3756 | }, 3757 | { 3758 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3759 | "type": "tidelift" 3760 | } 3761 | ], 3762 | "time": "2020-07-08T08:27:49+00:00" 3763 | }, 3764 | { 3765 | "name": "theseer/tokenizer", 3766 | "version": "1.2.0", 3767 | "source": { 3768 | "type": "git", 3769 | "url": "https://github.com/theseer/tokenizer.git", 3770 | "reference": "75a63c33a8577608444246075ea0af0d052e452a" 3771 | }, 3772 | "dist": { 3773 | "type": "zip", 3774 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", 3775 | "reference": "75a63c33a8577608444246075ea0af0d052e452a", 3776 | "shasum": "" 3777 | }, 3778 | "require": { 3779 | "ext-dom": "*", 3780 | "ext-tokenizer": "*", 3781 | "ext-xmlwriter": "*", 3782 | "php": "^7.2 || ^8.0" 3783 | }, 3784 | "type": "library", 3785 | "autoload": { 3786 | "classmap": [ 3787 | "src/" 3788 | ] 3789 | }, 3790 | "notification-url": "https://packagist.org/downloads/", 3791 | "license": [ 3792 | "BSD-3-Clause" 3793 | ], 3794 | "authors": [ 3795 | { 3796 | "name": "Arne Blankerts", 3797 | "email": "arne@blankerts.de", 3798 | "role": "Developer" 3799 | } 3800 | ], 3801 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 3802 | "funding": [ 3803 | { 3804 | "url": "https://github.com/theseer", 3805 | "type": "github" 3806 | } 3807 | ], 3808 | "time": "2020-07-12T23:59:07+00:00" 3809 | }, 3810 | { 3811 | "name": "webmozart/assert", 3812 | "version": "1.9.1", 3813 | "source": { 3814 | "type": "git", 3815 | "url": "https://github.com/webmozart/assert.git", 3816 | "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" 3817 | }, 3818 | "dist": { 3819 | "type": "zip", 3820 | "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", 3821 | "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", 3822 | "shasum": "" 3823 | }, 3824 | "require": { 3825 | "php": "^5.3.3 || ^7.0 || ^8.0", 3826 | "symfony/polyfill-ctype": "^1.8" 3827 | }, 3828 | "conflict": { 3829 | "phpstan/phpstan": "<0.12.20", 3830 | "vimeo/psalm": "<3.9.1" 3831 | }, 3832 | "require-dev": { 3833 | "phpunit/phpunit": "^4.8.36 || ^7.5.13" 3834 | }, 3835 | "type": "library", 3836 | "autoload": { 3837 | "psr-4": { 3838 | "Webmozart\\Assert\\": "src/" 3839 | } 3840 | }, 3841 | "notification-url": "https://packagist.org/downloads/", 3842 | "license": [ 3843 | "MIT" 3844 | ], 3845 | "authors": [ 3846 | { 3847 | "name": "Bernhard Schussek", 3848 | "email": "bschussek@gmail.com" 3849 | } 3850 | ], 3851 | "description": "Assertions to validate method input/output with nice error messages.", 3852 | "keywords": [ 3853 | "assert", 3854 | "check", 3855 | "validate" 3856 | ], 3857 | "time": "2020-07-08T17:02:28+00:00" 3858 | } 3859 | ], 3860 | "aliases": [], 3861 | "minimum-stability": "stable", 3862 | "stability-flags": [], 3863 | "prefer-stable": false, 3864 | "prefer-lowest": false, 3865 | "platform": [], 3866 | "platform-dev": [], 3867 | "plugin-api-version": "1.1.0" 3868 | } 3869 | -------------------------------------------------------------------------------- /src/Printer.php: -------------------------------------------------------------------------------- 1 | "\e[31m!\e[0m", // red ! 20 | 'F' => "\e[31m\xe2\x9c\x96\e[0m", // red X 21 | 'W' => "\e[33mW\e[0m", // yellow W 22 | 'I' => "\e[33mI\e[0m", // yellow I 23 | 'R' => "\e[33mR\e[0m", // yellow R 24 | 'S' => "\e[36mS\e[0m", // cyan S 25 | '.' => "\e[32m\xe2\x9c\x94\e[0m", // green checkmark 26 | ]; 27 | 28 | /** 29 | * Structure of the outputted test row. 30 | * 31 | * @var string 32 | */ 33 | protected $testRow = ''; 34 | 35 | /** 36 | * {@inheritdoc} 37 | */ 38 | protected function writeProgress(string $progress): void 39 | { 40 | $this->numTestsRun++; 41 | 42 | if ($this->hasReplacementSymbol($progress)) { 43 | $progress = static::$symbols[$progress]; 44 | } 45 | 46 | $padding = str_pad($this->numTestsRun, strlen($this->numTests), ' ', STR_PAD_LEFT); 47 | 48 | $this->write("({$padding}/{$this->numTests}) {$progress} {$this->testRow}".PHP_EOL); 49 | } 50 | 51 | /** 52 | * {@inheritdoc} 53 | */ 54 | public function addError(Test $test, \Throwable $e, float $time): void 55 | { 56 | $this->buildTestRow(get_class($test), $test->getName(), $time, 'fg-red'); 57 | 58 | parent::addError($test, $e, $time); 59 | } 60 | 61 | /** 62 | * {@inheritdoc} 63 | */ 64 | public function addFailure(Test $test, AssertionFailedError $e, float $time): void 65 | { 66 | $this->buildTestRow(get_class($test), $test->getName(), $time, 'fg-red'); 67 | 68 | parent::addFailure($test, $e, $time); 69 | } 70 | 71 | /** 72 | * {@inheritdoc} 73 | */ 74 | public function addWarning(Test $test, Warning $e, float $time): void 75 | { 76 | $this->buildTestRow(get_class($test), $test->getName(), $time, 'fg-yellow'); 77 | 78 | parent::addWarning($test, $e, $time); 79 | } 80 | 81 | /** 82 | * {@inheritdoc} 83 | */ 84 | public function addIncompleteTest(Test $test, \Throwable $e, float $time): void 85 | { 86 | $this->buildTestRow(get_class($test), $test->getName(), $time, 'fg-yellow'); 87 | 88 | parent::addIncompleteTest($test, $e, $time); 89 | } 90 | 91 | /** 92 | * {@inheritdoc} 93 | */ 94 | public function addRiskyTest(Test $test, \Throwable $e, float $time): void 95 | { 96 | $this->buildTestRow(get_class($test), $test->getName(), $time, 'fg-yellow'); 97 | 98 | parent::addRiskyTest($test, $e, $time); 99 | } 100 | 101 | /** 102 | * {@inheritdoc} 103 | */ 104 | public function addSkippedTest(Test $test, \Throwable $e, float $time): void 105 | { 106 | $this->buildTestRow(get_class($test), $test->getName(), $time, 'fg-cyan'); 107 | 108 | parent::addSkippedTest($test, $e, $time); 109 | } 110 | 111 | /** 112 | * {@inheritdoc} 113 | */ 114 | public function endTest(Test $test, float $time): void 115 | { 116 | $testName = UtilTest::describeAsString($test); 117 | 118 | list($className, $methodName) = explode('::', $testName); 119 | 120 | $this->buildTestRow($className, $methodName, $time); 121 | 122 | parent::endTest($test, $time); 123 | } 124 | 125 | /** 126 | * {@inheritdoc} 127 | * 128 | * We'll handle the coloring ourselves. 129 | */ 130 | protected function writeProgressWithColor(string $color, string $buffer): void 131 | { 132 | $this->writeProgress($buffer); 133 | } 134 | 135 | /** 136 | * Formats the results for a single test. 137 | * 138 | * @param $className 139 | * @param $methodName 140 | * @param $time 141 | * @param $color 142 | */ 143 | protected function buildTestRow($className, $methodName, $time, $color = 'fg-white') 144 | { 145 | $this->testRow = sprintf( 146 | '%s (%s)', 147 | $this->colorizeTextBox($color, "{$className}: {$this->formatMethodName($methodName)}"), 148 | $this->formatTestDuration($time) 149 | ); 150 | } 151 | 152 | /** 153 | * Makes the method name more readable. 154 | * 155 | * @param $method 156 | * 157 | * @return mixed 158 | */ 159 | protected function formatMethodName($method) 160 | { 161 | return ucfirst( 162 | $this->splitCamels( 163 | $this->splitSnakes($method) 164 | ) 165 | ); 166 | } 167 | 168 | /** 169 | * Replaces underscores in snake case with spaces. 170 | * 171 | * @param $name 172 | * 173 | * @return string 174 | */ 175 | protected function splitSnakes($name) 176 | { 177 | return str_replace('_', ' ', $name); 178 | } 179 | 180 | /** 181 | * Splits camel-cased names while handling caps sections properly. 182 | * 183 | * @param $name 184 | * 185 | * @return string 186 | */ 187 | protected function splitCamels($name) 188 | { 189 | return preg_replace('/(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])/', ' $1', $name); 190 | } 191 | 192 | /** 193 | * Colours the duration if the test took longer than 500ms. 194 | * 195 | * @param $time 196 | * 197 | * @return string 198 | */ 199 | protected function formatTestDuration($time) 200 | { 201 | $testDurationInMs = round($time * 1000); 202 | 203 | $duration = $testDurationInMs > 500 204 | ? $this->colorizeTextBox('fg-yellow', $testDurationInMs) 205 | : $testDurationInMs; 206 | 207 | return sprintf('%s ms', $duration); 208 | } 209 | 210 | /** 211 | * Verifies if we have a replacement symbol available. 212 | * 213 | * @param $progress 214 | * 215 | * @return bool 216 | */ 217 | protected function hasReplacementSymbol($progress) 218 | { 219 | return $this->colors && in_array($progress, array_keys(static::$symbols)); 220 | } 221 | } 222 | --------------------------------------------------------------------------------