├── .editorconfig ├── .gitignore ├── README.md ├── composer.json ├── composer.lock ├── phpunit.xml └── tests ├── _files ├── raw-acronym-capitalization.txt └── raw-dataproviders.txt ├── bootstrap.php ├── end-to-end ├── acronym-capitilization.phpt └── dataprovider-parameters.phpt └── unit ├── HowToUseThisTutorialTest.php ├── TestDoxAutomaticCapitalizationTest.php └── TestDoxDataProviderTest.php /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | indent_style = space 7 | indent_size = 4 8 | charset = utf-8 9 | 10 | [*.yml] 11 | indent_size = 2 12 | 13 | [tests/_files/*_result_cache.txt] 14 | insert_final_newline = false 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea 2 | /vendor 3 | .phpunit.result.cache 4 | *.iml 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PHPUnit TestDox tutorial 2 | 3 | Download and install the tutorial and PHPUnit using Composer: 4 | ```shell script 5 | composer create-project epdenouden/phpunit-testdox-tutorial 6 | ``` 7 | 8 | Keep self-testing and fixing until everything is green! 9 | ```shell script 10 | cd phpunit-testdox-tutorial/ 11 | composer test 12 | ``` 13 | 14 | ## Topics covered 15 | 16 | | File | Topic | 17 | |------|-------| 18 | | [`unit/HowToUseThisTutorialTest.php`](./tests/unit/HowToUseThisTutorialTest.php) | `@testdox` annotation basics| 19 | | [`unit/TestDoxAutomaticCapitalizationTest.php`](./tests/unit/TestDoxAutomaticCapitalizationTest.php) | improve naming of tests and test suites | 20 | | [`unit/TestDoxDataProviderTest.php`](./tests/unit/TestDoxDataProviderTest.php) | data providers: quickly identify failing scenarios by including parameter values | 21 | | [`end-to-end/*.phpt`](./tests/end-to-end/) | PHPUnit end-to-end (self-)testing | 22 | 23 | ## TestDox manual 24 | - PHPUnit manual on the [`@testdox` annotation](https://phpunit.readthedocs.io/en/9.0/annotations.html#testdox) 25 | - PHPUnit manual on the [`--testdox` command line option](https://phpunit.readthedocs.io/en/9.0/textui.html#testdox) 26 | - [PHPT file format reference](https://qa.php.net/phpt_details.php) 27 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "epdenouden/phpunit-testdox-tutorial", 3 | "description": "Self-guided tutorial for PHPUnit TestDox human-readable reports.", 4 | "type": "project", 5 | "keywords": [ 6 | "phpunit", 7 | "testing", 8 | "tutorial" 9 | ], 10 | "homepage": "https://phpunit.de/", 11 | "license": "BSD-3-Clause", 12 | "authors": [ 13 | { 14 | "name": "Ewout Pieter den Ouden", 15 | "email": "ewoutdenouden@gmail.com", 16 | "role": "Developer" 17 | } 18 | ], 19 | "support": { 20 | "issues": "https://github.com/epdenouden/phpunit-testdox-tutorial/issues" 21 | }, 22 | "prefer-stable": true, 23 | "require": { 24 | "phpunit/phpunit": ">8.0" 25 | }, 26 | "scripts": { 27 | "test": [ 28 | "phpunit --color=always" 29 | ] 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /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": "dcdd64262940d9a3b4e7f00d76cc4a25", 8 | "packages": [ 9 | { 10 | "name": "doctrine/instantiator", 11 | "version": "1.3.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/instantiator.git", 15 | "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", 20 | "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^7.1" 25 | }, 26 | "require-dev": { 27 | "doctrine/coding-standard": "^6.0", 28 | "ext-pdo": "*", 29 | "ext-phar": "*", 30 | "phpbench/phpbench": "^0.13", 31 | "phpstan/phpstan-phpunit": "^0.11", 32 | "phpstan/phpstan-shim": "^0.11", 33 | "phpunit/phpunit": "^7.0" 34 | }, 35 | "type": "library", 36 | "extra": { 37 | "branch-alias": { 38 | "dev-master": "1.2.x-dev" 39 | } 40 | }, 41 | "autoload": { 42 | "psr-4": { 43 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 44 | } 45 | }, 46 | "notification-url": "https://packagist.org/downloads/", 47 | "license": [ 48 | "MIT" 49 | ], 50 | "authors": [ 51 | { 52 | "name": "Marco Pivetta", 53 | "email": "ocramius@gmail.com", 54 | "homepage": "http://ocramius.github.com/" 55 | } 56 | ], 57 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 58 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 59 | "keywords": [ 60 | "constructor", 61 | "instantiate" 62 | ], 63 | "time": "2019-10-21T16:45:58+00:00" 64 | }, 65 | { 66 | "name": "myclabs/deep-copy", 67 | "version": "1.9.5", 68 | "source": { 69 | "type": "git", 70 | "url": "https://github.com/myclabs/DeepCopy.git", 71 | "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" 72 | }, 73 | "dist": { 74 | "type": "zip", 75 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", 76 | "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", 77 | "shasum": "" 78 | }, 79 | "require": { 80 | "php": "^7.1" 81 | }, 82 | "replace": { 83 | "myclabs/deep-copy": "self.version" 84 | }, 85 | "require-dev": { 86 | "doctrine/collections": "^1.0", 87 | "doctrine/common": "^2.6", 88 | "phpunit/phpunit": "^7.1" 89 | }, 90 | "type": "library", 91 | "autoload": { 92 | "psr-4": { 93 | "DeepCopy\\": "src/DeepCopy/" 94 | }, 95 | "files": [ 96 | "src/DeepCopy/deep_copy.php" 97 | ] 98 | }, 99 | "notification-url": "https://packagist.org/downloads/", 100 | "license": [ 101 | "MIT" 102 | ], 103 | "description": "Create deep copies (clones) of your objects", 104 | "keywords": [ 105 | "clone", 106 | "copy", 107 | "duplicate", 108 | "object", 109 | "object graph" 110 | ], 111 | "time": "2020-01-17T21:11:47+00:00" 112 | }, 113 | { 114 | "name": "phar-io/manifest", 115 | "version": "1.0.3", 116 | "source": { 117 | "type": "git", 118 | "url": "https://github.com/phar-io/manifest.git", 119 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" 120 | }, 121 | "dist": { 122 | "type": "zip", 123 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 124 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 125 | "shasum": "" 126 | }, 127 | "require": { 128 | "ext-dom": "*", 129 | "ext-phar": "*", 130 | "phar-io/version": "^2.0", 131 | "php": "^5.6 || ^7.0" 132 | }, 133 | "type": "library", 134 | "extra": { 135 | "branch-alias": { 136 | "dev-master": "1.0.x-dev" 137 | } 138 | }, 139 | "autoload": { 140 | "classmap": [ 141 | "src/" 142 | ] 143 | }, 144 | "notification-url": "https://packagist.org/downloads/", 145 | "license": [ 146 | "BSD-3-Clause" 147 | ], 148 | "authors": [ 149 | { 150 | "name": "Arne Blankerts", 151 | "email": "arne@blankerts.de", 152 | "role": "Developer" 153 | }, 154 | { 155 | "name": "Sebastian Heuer", 156 | "email": "sebastian@phpeople.de", 157 | "role": "Developer" 158 | }, 159 | { 160 | "name": "Sebastian Bergmann", 161 | "email": "sebastian@phpunit.de", 162 | "role": "Developer" 163 | } 164 | ], 165 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 166 | "time": "2018-07-08T19:23:20+00:00" 167 | }, 168 | { 169 | "name": "phar-io/version", 170 | "version": "2.0.1", 171 | "source": { 172 | "type": "git", 173 | "url": "https://github.com/phar-io/version.git", 174 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" 175 | }, 176 | "dist": { 177 | "type": "zip", 178 | "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", 179 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", 180 | "shasum": "" 181 | }, 182 | "require": { 183 | "php": "^5.6 || ^7.0" 184 | }, 185 | "type": "library", 186 | "autoload": { 187 | "classmap": [ 188 | "src/" 189 | ] 190 | }, 191 | "notification-url": "https://packagist.org/downloads/", 192 | "license": [ 193 | "BSD-3-Clause" 194 | ], 195 | "authors": [ 196 | { 197 | "name": "Arne Blankerts", 198 | "email": "arne@blankerts.de", 199 | "role": "Developer" 200 | }, 201 | { 202 | "name": "Sebastian Heuer", 203 | "email": "sebastian@phpeople.de", 204 | "role": "Developer" 205 | }, 206 | { 207 | "name": "Sebastian Bergmann", 208 | "email": "sebastian@phpunit.de", 209 | "role": "Developer" 210 | } 211 | ], 212 | "description": "Library for handling version information and constraints", 213 | "time": "2018-07-08T19:19:57+00:00" 214 | }, 215 | { 216 | "name": "phpdocumentor/reflection-common", 217 | "version": "2.0.0", 218 | "source": { 219 | "type": "git", 220 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 221 | "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" 222 | }, 223 | "dist": { 224 | "type": "zip", 225 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", 226 | "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", 227 | "shasum": "" 228 | }, 229 | "require": { 230 | "php": ">=7.1" 231 | }, 232 | "require-dev": { 233 | "phpunit/phpunit": "~6" 234 | }, 235 | "type": "library", 236 | "extra": { 237 | "branch-alias": { 238 | "dev-master": "2.x-dev" 239 | } 240 | }, 241 | "autoload": { 242 | "psr-4": { 243 | "phpDocumentor\\Reflection\\": "src/" 244 | } 245 | }, 246 | "notification-url": "https://packagist.org/downloads/", 247 | "license": [ 248 | "MIT" 249 | ], 250 | "authors": [ 251 | { 252 | "name": "Jaap van Otterdijk", 253 | "email": "opensource@ijaap.nl" 254 | } 255 | ], 256 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 257 | "homepage": "http://www.phpdoc.org", 258 | "keywords": [ 259 | "FQSEN", 260 | "phpDocumentor", 261 | "phpdoc", 262 | "reflection", 263 | "static analysis" 264 | ], 265 | "time": "2018-08-07T13:53:10+00:00" 266 | }, 267 | { 268 | "name": "phpdocumentor/reflection-docblock", 269 | "version": "5.1.0", 270 | "source": { 271 | "type": "git", 272 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 273 | "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e" 274 | }, 275 | "dist": { 276 | "type": "zip", 277 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", 278 | "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", 279 | "shasum": "" 280 | }, 281 | "require": { 282 | "ext-filter": "^7.1", 283 | "php": "^7.2", 284 | "phpdocumentor/reflection-common": "^2.0", 285 | "phpdocumentor/type-resolver": "^1.0", 286 | "webmozart/assert": "^1" 287 | }, 288 | "require-dev": { 289 | "doctrine/instantiator": "^1", 290 | "mockery/mockery": "^1" 291 | }, 292 | "type": "library", 293 | "extra": { 294 | "branch-alias": { 295 | "dev-master": "5.x-dev" 296 | } 297 | }, 298 | "autoload": { 299 | "psr-4": { 300 | "phpDocumentor\\Reflection\\": "src" 301 | } 302 | }, 303 | "notification-url": "https://packagist.org/downloads/", 304 | "license": [ 305 | "MIT" 306 | ], 307 | "authors": [ 308 | { 309 | "name": "Mike van Riel", 310 | "email": "me@mikevanriel.com" 311 | }, 312 | { 313 | "name": "Jaap van Otterdijk", 314 | "email": "account@ijaap.nl" 315 | } 316 | ], 317 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 318 | "time": "2020-02-22T12:28:44+00:00" 319 | }, 320 | { 321 | "name": "phpdocumentor/type-resolver", 322 | "version": "1.1.0", 323 | "source": { 324 | "type": "git", 325 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 326 | "reference": "7462d5f123dfc080dfdf26897032a6513644fc95" 327 | }, 328 | "dist": { 329 | "type": "zip", 330 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95", 331 | "reference": "7462d5f123dfc080dfdf26897032a6513644fc95", 332 | "shasum": "" 333 | }, 334 | "require": { 335 | "php": "^7.2", 336 | "phpdocumentor/reflection-common": "^2.0" 337 | }, 338 | "require-dev": { 339 | "ext-tokenizer": "^7.2", 340 | "mockery/mockery": "~1" 341 | }, 342 | "type": "library", 343 | "extra": { 344 | "branch-alias": { 345 | "dev-master": "1.x-dev" 346 | } 347 | }, 348 | "autoload": { 349 | "psr-4": { 350 | "phpDocumentor\\Reflection\\": "src" 351 | } 352 | }, 353 | "notification-url": "https://packagist.org/downloads/", 354 | "license": [ 355 | "MIT" 356 | ], 357 | "authors": [ 358 | { 359 | "name": "Mike van Riel", 360 | "email": "me@mikevanriel.com" 361 | } 362 | ], 363 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 364 | "time": "2020-02-18T18:59:58+00:00" 365 | }, 366 | { 367 | "name": "phpspec/prophecy", 368 | "version": "v1.10.3", 369 | "source": { 370 | "type": "git", 371 | "url": "https://github.com/phpspec/prophecy.git", 372 | "reference": "451c3cd1418cf640de218914901e51b064abb093" 373 | }, 374 | "dist": { 375 | "type": "zip", 376 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", 377 | "reference": "451c3cd1418cf640de218914901e51b064abb093", 378 | "shasum": "" 379 | }, 380 | "require": { 381 | "doctrine/instantiator": "^1.0.2", 382 | "php": "^5.3|^7.0", 383 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", 384 | "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", 385 | "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" 386 | }, 387 | "require-dev": { 388 | "phpspec/phpspec": "^2.5 || ^3.2", 389 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" 390 | }, 391 | "type": "library", 392 | "extra": { 393 | "branch-alias": { 394 | "dev-master": "1.10.x-dev" 395 | } 396 | }, 397 | "autoload": { 398 | "psr-4": { 399 | "Prophecy\\": "src/Prophecy" 400 | } 401 | }, 402 | "notification-url": "https://packagist.org/downloads/", 403 | "license": [ 404 | "MIT" 405 | ], 406 | "authors": [ 407 | { 408 | "name": "Konstantin Kudryashov", 409 | "email": "ever.zet@gmail.com", 410 | "homepage": "http://everzet.com" 411 | }, 412 | { 413 | "name": "Marcello Duarte", 414 | "email": "marcello.duarte@gmail.com" 415 | } 416 | ], 417 | "description": "Highly opinionated mocking framework for PHP 5.3+", 418 | "homepage": "https://github.com/phpspec/prophecy", 419 | "keywords": [ 420 | "Double", 421 | "Dummy", 422 | "fake", 423 | "mock", 424 | "spy", 425 | "stub" 426 | ], 427 | "time": "2020-03-05T15:02:03+00:00" 428 | }, 429 | { 430 | "name": "phpunit/php-code-coverage", 431 | "version": "8.0.1", 432 | "source": { 433 | "type": "git", 434 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 435 | "reference": "31e94ccc084025d6abee0585df533eb3a792b96a" 436 | }, 437 | "dist": { 438 | "type": "zip", 439 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/31e94ccc084025d6abee0585df533eb3a792b96a", 440 | "reference": "31e94ccc084025d6abee0585df533eb3a792b96a", 441 | "shasum": "" 442 | }, 443 | "require": { 444 | "ext-dom": "*", 445 | "ext-xmlwriter": "*", 446 | "php": "^7.3", 447 | "phpunit/php-file-iterator": "^3.0", 448 | "phpunit/php-text-template": "^2.0", 449 | "phpunit/php-token-stream": "^4.0", 450 | "sebastian/code-unit-reverse-lookup": "^2.0", 451 | "sebastian/environment": "^5.0", 452 | "sebastian/version": "^3.0", 453 | "theseer/tokenizer": "^1.1.3" 454 | }, 455 | "require-dev": { 456 | "phpunit/phpunit": "^9.0" 457 | }, 458 | "suggest": { 459 | "ext-pcov": "*", 460 | "ext-xdebug": "*" 461 | }, 462 | "type": "library", 463 | "extra": { 464 | "branch-alias": { 465 | "dev-master": "8.0-dev" 466 | } 467 | }, 468 | "autoload": { 469 | "classmap": [ 470 | "src/" 471 | ] 472 | }, 473 | "notification-url": "https://packagist.org/downloads/", 474 | "license": [ 475 | "BSD-3-Clause" 476 | ], 477 | "authors": [ 478 | { 479 | "name": "Sebastian Bergmann", 480 | "email": "sebastian@phpunit.de", 481 | "role": "lead" 482 | } 483 | ], 484 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 485 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 486 | "keywords": [ 487 | "coverage", 488 | "testing", 489 | "xunit" 490 | ], 491 | "time": "2020-02-19T13:41:19+00:00" 492 | }, 493 | { 494 | "name": "phpunit/php-file-iterator", 495 | "version": "3.0.0", 496 | "source": { 497 | "type": "git", 498 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 499 | "reference": "354d4a5faa7449a377a18b94a2026ca3415e3d7a" 500 | }, 501 | "dist": { 502 | "type": "zip", 503 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/354d4a5faa7449a377a18b94a2026ca3415e3d7a", 504 | "reference": "354d4a5faa7449a377a18b94a2026ca3415e3d7a", 505 | "shasum": "" 506 | }, 507 | "require": { 508 | "php": "^7.3" 509 | }, 510 | "require-dev": { 511 | "phpunit/phpunit": "^9.0" 512 | }, 513 | "type": "library", 514 | "extra": { 515 | "branch-alias": { 516 | "dev-master": "3.0-dev" 517 | } 518 | }, 519 | "autoload": { 520 | "classmap": [ 521 | "src/" 522 | ] 523 | }, 524 | "notification-url": "https://packagist.org/downloads/", 525 | "license": [ 526 | "BSD-3-Clause" 527 | ], 528 | "authors": [ 529 | { 530 | "name": "Sebastian Bergmann", 531 | "email": "sebastian@phpunit.de", 532 | "role": "lead" 533 | } 534 | ], 535 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 536 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 537 | "keywords": [ 538 | "filesystem", 539 | "iterator" 540 | ], 541 | "time": "2020-02-07T06:05:22+00:00" 542 | }, 543 | { 544 | "name": "phpunit/php-invoker", 545 | "version": "3.0.0", 546 | "source": { 547 | "type": "git", 548 | "url": "https://github.com/sebastianbergmann/php-invoker.git", 549 | "reference": "7579d5a1ba7f3ac11c80004d205877911315ae7a" 550 | }, 551 | "dist": { 552 | "type": "zip", 553 | "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/7579d5a1ba7f3ac11c80004d205877911315ae7a", 554 | "reference": "7579d5a1ba7f3ac11c80004d205877911315ae7a", 555 | "shasum": "" 556 | }, 557 | "require": { 558 | "php": "^7.3" 559 | }, 560 | "require-dev": { 561 | "ext-pcntl": "*", 562 | "phpunit/phpunit": "^9.0" 563 | }, 564 | "suggest": { 565 | "ext-pcntl": "*" 566 | }, 567 | "type": "library", 568 | "extra": { 569 | "branch-alias": { 570 | "dev-master": "3.0-dev" 571 | } 572 | }, 573 | "autoload": { 574 | "classmap": [ 575 | "src/" 576 | ] 577 | }, 578 | "notification-url": "https://packagist.org/downloads/", 579 | "license": [ 580 | "BSD-3-Clause" 581 | ], 582 | "authors": [ 583 | { 584 | "name": "Sebastian Bergmann", 585 | "email": "sebastian@phpunit.de", 586 | "role": "lead" 587 | } 588 | ], 589 | "description": "Invoke callables with a timeout", 590 | "homepage": "https://github.com/sebastianbergmann/php-invoker/", 591 | "keywords": [ 592 | "process" 593 | ], 594 | "time": "2020-02-07T06:06:11+00:00" 595 | }, 596 | { 597 | "name": "phpunit/php-text-template", 598 | "version": "2.0.0", 599 | "source": { 600 | "type": "git", 601 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 602 | "reference": "526dc996cc0ebdfa428cd2dfccd79b7b53fee346" 603 | }, 604 | "dist": { 605 | "type": "zip", 606 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/526dc996cc0ebdfa428cd2dfccd79b7b53fee346", 607 | "reference": "526dc996cc0ebdfa428cd2dfccd79b7b53fee346", 608 | "shasum": "" 609 | }, 610 | "require": { 611 | "php": "^7.3" 612 | }, 613 | "type": "library", 614 | "extra": { 615 | "branch-alias": { 616 | "dev-master": "2.0-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": "Sebastian Bergmann", 631 | "email": "sebastian@phpunit.de", 632 | "role": "lead" 633 | } 634 | ], 635 | "description": "Simple template engine.", 636 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 637 | "keywords": [ 638 | "template" 639 | ], 640 | "time": "2020-02-01T07:43:44+00:00" 641 | }, 642 | { 643 | "name": "phpunit/php-timer", 644 | "version": "3.0.0", 645 | "source": { 646 | "type": "git", 647 | "url": "https://github.com/sebastianbergmann/php-timer.git", 648 | "reference": "4118013a4d0f97356eae8e7fb2f6c6472575d1df" 649 | }, 650 | "dist": { 651 | "type": "zip", 652 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/4118013a4d0f97356eae8e7fb2f6c6472575d1df", 653 | "reference": "4118013a4d0f97356eae8e7fb2f6c6472575d1df", 654 | "shasum": "" 655 | }, 656 | "require": { 657 | "php": "^7.3" 658 | }, 659 | "require-dev": { 660 | "phpunit/phpunit": "^9.0" 661 | }, 662 | "type": "library", 663 | "extra": { 664 | "branch-alias": { 665 | "dev-master": "3.0-dev" 666 | } 667 | }, 668 | "autoload": { 669 | "classmap": [ 670 | "src/" 671 | ] 672 | }, 673 | "notification-url": "https://packagist.org/downloads/", 674 | "license": [ 675 | "BSD-3-Clause" 676 | ], 677 | "authors": [ 678 | { 679 | "name": "Sebastian Bergmann", 680 | "email": "sebastian@phpunit.de", 681 | "role": "lead" 682 | } 683 | ], 684 | "description": "Utility class for timing", 685 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 686 | "keywords": [ 687 | "timer" 688 | ], 689 | "time": "2020-02-07T06:08:11+00:00" 690 | }, 691 | { 692 | "name": "phpunit/php-token-stream", 693 | "version": "4.0.0", 694 | "source": { 695 | "type": "git", 696 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 697 | "reference": "b2560a0c33f7710e4d7f8780964193e8e8f8effe" 698 | }, 699 | "dist": { 700 | "type": "zip", 701 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/b2560a0c33f7710e4d7f8780964193e8e8f8effe", 702 | "reference": "b2560a0c33f7710e4d7f8780964193e8e8f8effe", 703 | "shasum": "" 704 | }, 705 | "require": { 706 | "ext-tokenizer": "*", 707 | "php": "^7.3" 708 | }, 709 | "require-dev": { 710 | "phpunit/phpunit": "^9.0" 711 | }, 712 | "type": "library", 713 | "extra": { 714 | "branch-alias": { 715 | "dev-master": "4.0-dev" 716 | } 717 | }, 718 | "autoload": { 719 | "classmap": [ 720 | "src/" 721 | ] 722 | }, 723 | "notification-url": "https://packagist.org/downloads/", 724 | "license": [ 725 | "BSD-3-Clause" 726 | ], 727 | "authors": [ 728 | { 729 | "name": "Sebastian Bergmann", 730 | "email": "sebastian@phpunit.de" 731 | } 732 | ], 733 | "description": "Wrapper around PHP's tokenizer extension.", 734 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 735 | "keywords": [ 736 | "tokenizer" 737 | ], 738 | "time": "2020-02-07T06:19:00+00:00" 739 | }, 740 | { 741 | "name": "phpunit/phpunit", 742 | "version": "9.0.1", 743 | "source": { 744 | "type": "git", 745 | "url": "https://github.com/sebastianbergmann/phpunit.git", 746 | "reference": "68d7e5b17a6b9461e17c00446caa409863154f76" 747 | }, 748 | "dist": { 749 | "type": "zip", 750 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/68d7e5b17a6b9461e17c00446caa409863154f76", 751 | "reference": "68d7e5b17a6b9461e17c00446caa409863154f76", 752 | "shasum": "" 753 | }, 754 | "require": { 755 | "doctrine/instantiator": "^1.2.0", 756 | "ext-dom": "*", 757 | "ext-json": "*", 758 | "ext-libxml": "*", 759 | "ext-mbstring": "*", 760 | "ext-xml": "*", 761 | "ext-xmlwriter": "*", 762 | "myclabs/deep-copy": "^1.9.1", 763 | "phar-io/manifest": "^1.0.3", 764 | "phar-io/version": "^2.0.1", 765 | "php": "^7.3", 766 | "phpspec/prophecy": "^1.8.1", 767 | "phpunit/php-code-coverage": "^8.0", 768 | "phpunit/php-file-iterator": "^3.0", 769 | "phpunit/php-invoker": "^3.0", 770 | "phpunit/php-text-template": "^2.0", 771 | "phpunit/php-timer": "^3.0", 772 | "sebastian/comparator": "^4.0", 773 | "sebastian/diff": "^4.0", 774 | "sebastian/environment": "^5.0", 775 | "sebastian/exporter": "^4.0", 776 | "sebastian/global-state": "^4.0", 777 | "sebastian/object-enumerator": "^4.0", 778 | "sebastian/resource-operations": "^3.0", 779 | "sebastian/type": "^2.0", 780 | "sebastian/version": "^3.0" 781 | }, 782 | "require-dev": { 783 | "ext-pdo": "*" 784 | }, 785 | "suggest": { 786 | "ext-soap": "*", 787 | "ext-xdebug": "*" 788 | }, 789 | "bin": [ 790 | "phpunit" 791 | ], 792 | "type": "library", 793 | "extra": { 794 | "branch-alias": { 795 | "dev-master": "9.0-dev" 796 | } 797 | }, 798 | "autoload": { 799 | "classmap": [ 800 | "src/" 801 | ], 802 | "files": [ 803 | "src/Framework/Assert/Functions.php" 804 | ] 805 | }, 806 | "notification-url": "https://packagist.org/downloads/", 807 | "license": [ 808 | "BSD-3-Clause" 809 | ], 810 | "authors": [ 811 | { 812 | "name": "Sebastian Bergmann", 813 | "email": "sebastian@phpunit.de", 814 | "role": "lead" 815 | } 816 | ], 817 | "description": "The PHP Unit Testing framework.", 818 | "homepage": "https://phpunit.de/", 819 | "keywords": [ 820 | "phpunit", 821 | "testing", 822 | "xunit" 823 | ], 824 | "time": "2020-02-13T07:30:12+00:00" 825 | }, 826 | { 827 | "name": "sebastian/code-unit-reverse-lookup", 828 | "version": "2.0.0", 829 | "source": { 830 | "type": "git", 831 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 832 | "reference": "5b5dbe0044085ac41df47e79d34911a15b96d82e" 833 | }, 834 | "dist": { 835 | "type": "zip", 836 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5b5dbe0044085ac41df47e79d34911a15b96d82e", 837 | "reference": "5b5dbe0044085ac41df47e79d34911a15b96d82e", 838 | "shasum": "" 839 | }, 840 | "require": { 841 | "php": "^7.3" 842 | }, 843 | "require-dev": { 844 | "phpunit/phpunit": "^9.0" 845 | }, 846 | "type": "library", 847 | "extra": { 848 | "branch-alias": { 849 | "dev-master": "2.0-dev" 850 | } 851 | }, 852 | "autoload": { 853 | "classmap": [ 854 | "src/" 855 | ] 856 | }, 857 | "notification-url": "https://packagist.org/downloads/", 858 | "license": [ 859 | "BSD-3-Clause" 860 | ], 861 | "authors": [ 862 | { 863 | "name": "Sebastian Bergmann", 864 | "email": "sebastian@phpunit.de" 865 | } 866 | ], 867 | "description": "Looks up which function or method a line of code belongs to", 868 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 869 | "time": "2020-02-07T06:20:13+00:00" 870 | }, 871 | { 872 | "name": "sebastian/comparator", 873 | "version": "4.0.0", 874 | "source": { 875 | "type": "git", 876 | "url": "https://github.com/sebastianbergmann/comparator.git", 877 | "reference": "85b3435da967696ed618ff745f32be3ff4a2b8e8" 878 | }, 879 | "dist": { 880 | "type": "zip", 881 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/85b3435da967696ed618ff745f32be3ff4a2b8e8", 882 | "reference": "85b3435da967696ed618ff745f32be3ff4a2b8e8", 883 | "shasum": "" 884 | }, 885 | "require": { 886 | "php": "^7.3", 887 | "sebastian/diff": "^4.0", 888 | "sebastian/exporter": "^4.0" 889 | }, 890 | "require-dev": { 891 | "phpunit/phpunit": "^9.0" 892 | }, 893 | "type": "library", 894 | "extra": { 895 | "branch-alias": { 896 | "dev-master": "4.0-dev" 897 | } 898 | }, 899 | "autoload": { 900 | "classmap": [ 901 | "src/" 902 | ] 903 | }, 904 | "notification-url": "https://packagist.org/downloads/", 905 | "license": [ 906 | "BSD-3-Clause" 907 | ], 908 | "authors": [ 909 | { 910 | "name": "Sebastian Bergmann", 911 | "email": "sebastian@phpunit.de" 912 | }, 913 | { 914 | "name": "Jeff Welch", 915 | "email": "whatthejeff@gmail.com" 916 | }, 917 | { 918 | "name": "Volker Dusch", 919 | "email": "github@wallbash.com" 920 | }, 921 | { 922 | "name": "Bernhard Schussek", 923 | "email": "bschussek@2bepublished.at" 924 | } 925 | ], 926 | "description": "Provides the functionality to compare PHP values for equality", 927 | "homepage": "https://github.com/sebastianbergmann/comparator", 928 | "keywords": [ 929 | "comparator", 930 | "compare", 931 | "equality" 932 | ], 933 | "time": "2020-02-07T06:08:51+00:00" 934 | }, 935 | { 936 | "name": "sebastian/diff", 937 | "version": "4.0.0", 938 | "source": { 939 | "type": "git", 940 | "url": "https://github.com/sebastianbergmann/diff.git", 941 | "reference": "c0c26c9188b538bfa985ae10c9f05d278f12060d" 942 | }, 943 | "dist": { 944 | "type": "zip", 945 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c0c26c9188b538bfa985ae10c9f05d278f12060d", 946 | "reference": "c0c26c9188b538bfa985ae10c9f05d278f12060d", 947 | "shasum": "" 948 | }, 949 | "require": { 950 | "php": "^7.3" 951 | }, 952 | "require-dev": { 953 | "phpunit/phpunit": "^9.0", 954 | "symfony/process": "^4 || ^5" 955 | }, 956 | "type": "library", 957 | "extra": { 958 | "branch-alias": { 959 | "dev-master": "4.0-dev" 960 | } 961 | }, 962 | "autoload": { 963 | "classmap": [ 964 | "src/" 965 | ] 966 | }, 967 | "notification-url": "https://packagist.org/downloads/", 968 | "license": [ 969 | "BSD-3-Clause" 970 | ], 971 | "authors": [ 972 | { 973 | "name": "Sebastian Bergmann", 974 | "email": "sebastian@phpunit.de" 975 | }, 976 | { 977 | "name": "Kore Nordmann", 978 | "email": "mail@kore-nordmann.de" 979 | } 980 | ], 981 | "description": "Diff implementation", 982 | "homepage": "https://github.com/sebastianbergmann/diff", 983 | "keywords": [ 984 | "diff", 985 | "udiff", 986 | "unidiff", 987 | "unified diff" 988 | ], 989 | "time": "2020-02-07T06:09:38+00:00" 990 | }, 991 | { 992 | "name": "sebastian/environment", 993 | "version": "5.0.1", 994 | "source": { 995 | "type": "git", 996 | "url": "https://github.com/sebastianbergmann/environment.git", 997 | "reference": "9bffdefa7810031a165ddd6275da6a2c1f6f2dfb" 998 | }, 999 | "dist": { 1000 | "type": "zip", 1001 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/9bffdefa7810031a165ddd6275da6a2c1f6f2dfb", 1002 | "reference": "9bffdefa7810031a165ddd6275da6a2c1f6f2dfb", 1003 | "shasum": "" 1004 | }, 1005 | "require": { 1006 | "php": "^7.3" 1007 | }, 1008 | "require-dev": { 1009 | "phpunit/phpunit": "^9.0" 1010 | }, 1011 | "suggest": { 1012 | "ext-posix": "*" 1013 | }, 1014 | "type": "library", 1015 | "extra": { 1016 | "branch-alias": { 1017 | "dev-master": "5.0-dev" 1018 | } 1019 | }, 1020 | "autoload": { 1021 | "classmap": [ 1022 | "src/" 1023 | ] 1024 | }, 1025 | "notification-url": "https://packagist.org/downloads/", 1026 | "license": [ 1027 | "BSD-3-Clause" 1028 | ], 1029 | "authors": [ 1030 | { 1031 | "name": "Sebastian Bergmann", 1032 | "email": "sebastian@phpunit.de" 1033 | } 1034 | ], 1035 | "description": "Provides functionality to handle HHVM/PHP environments", 1036 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1037 | "keywords": [ 1038 | "Xdebug", 1039 | "environment", 1040 | "hhvm" 1041 | ], 1042 | "time": "2020-02-19T13:40:20+00:00" 1043 | }, 1044 | { 1045 | "name": "sebastian/exporter", 1046 | "version": "4.0.0", 1047 | "source": { 1048 | "type": "git", 1049 | "url": "https://github.com/sebastianbergmann/exporter.git", 1050 | "reference": "80c26562e964016538f832f305b2286e1ec29566" 1051 | }, 1052 | "dist": { 1053 | "type": "zip", 1054 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/80c26562e964016538f832f305b2286e1ec29566", 1055 | "reference": "80c26562e964016538f832f305b2286e1ec29566", 1056 | "shasum": "" 1057 | }, 1058 | "require": { 1059 | "php": "^7.3", 1060 | "sebastian/recursion-context": "^4.0" 1061 | }, 1062 | "require-dev": { 1063 | "ext-mbstring": "*", 1064 | "phpunit/phpunit": "^9.0" 1065 | }, 1066 | "type": "library", 1067 | "extra": { 1068 | "branch-alias": { 1069 | "dev-master": "4.0-dev" 1070 | } 1071 | }, 1072 | "autoload": { 1073 | "classmap": [ 1074 | "src/" 1075 | ] 1076 | }, 1077 | "notification-url": "https://packagist.org/downloads/", 1078 | "license": [ 1079 | "BSD-3-Clause" 1080 | ], 1081 | "authors": [ 1082 | { 1083 | "name": "Sebastian Bergmann", 1084 | "email": "sebastian@phpunit.de" 1085 | }, 1086 | { 1087 | "name": "Jeff Welch", 1088 | "email": "whatthejeff@gmail.com" 1089 | }, 1090 | { 1091 | "name": "Volker Dusch", 1092 | "email": "github@wallbash.com" 1093 | }, 1094 | { 1095 | "name": "Adam Harvey", 1096 | "email": "aharvey@php.net" 1097 | }, 1098 | { 1099 | "name": "Bernhard Schussek", 1100 | "email": "bschussek@gmail.com" 1101 | } 1102 | ], 1103 | "description": "Provides the functionality to export PHP variables for visualization", 1104 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1105 | "keywords": [ 1106 | "export", 1107 | "exporter" 1108 | ], 1109 | "time": "2020-02-07T06:10:52+00:00" 1110 | }, 1111 | { 1112 | "name": "sebastian/global-state", 1113 | "version": "4.0.0", 1114 | "source": { 1115 | "type": "git", 1116 | "url": "https://github.com/sebastianbergmann/global-state.git", 1117 | "reference": "bdb1e7c79e592b8c82cb1699be3c8743119b8a72" 1118 | }, 1119 | "dist": { 1120 | "type": "zip", 1121 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bdb1e7c79e592b8c82cb1699be3c8743119b8a72", 1122 | "reference": "bdb1e7c79e592b8c82cb1699be3c8743119b8a72", 1123 | "shasum": "" 1124 | }, 1125 | "require": { 1126 | "php": "^7.3", 1127 | "sebastian/object-reflector": "^2.0", 1128 | "sebastian/recursion-context": "^4.0" 1129 | }, 1130 | "require-dev": { 1131 | "ext-dom": "*", 1132 | "phpunit/phpunit": "^9.0" 1133 | }, 1134 | "suggest": { 1135 | "ext-uopz": "*" 1136 | }, 1137 | "type": "library", 1138 | "extra": { 1139 | "branch-alias": { 1140 | "dev-master": "4.0-dev" 1141 | } 1142 | }, 1143 | "autoload": { 1144 | "classmap": [ 1145 | "src/" 1146 | ] 1147 | }, 1148 | "notification-url": "https://packagist.org/downloads/", 1149 | "license": [ 1150 | "BSD-3-Clause" 1151 | ], 1152 | "authors": [ 1153 | { 1154 | "name": "Sebastian Bergmann", 1155 | "email": "sebastian@phpunit.de" 1156 | } 1157 | ], 1158 | "description": "Snapshotting of global state", 1159 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1160 | "keywords": [ 1161 | "global state" 1162 | ], 1163 | "time": "2020-02-07T06:11:37+00:00" 1164 | }, 1165 | { 1166 | "name": "sebastian/object-enumerator", 1167 | "version": "4.0.0", 1168 | "source": { 1169 | "type": "git", 1170 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 1171 | "reference": "e67516b175550abad905dc952f43285957ef4363" 1172 | }, 1173 | "dist": { 1174 | "type": "zip", 1175 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67516b175550abad905dc952f43285957ef4363", 1176 | "reference": "e67516b175550abad905dc952f43285957ef4363", 1177 | "shasum": "" 1178 | }, 1179 | "require": { 1180 | "php": "^7.3", 1181 | "sebastian/object-reflector": "^2.0", 1182 | "sebastian/recursion-context": "^4.0" 1183 | }, 1184 | "require-dev": { 1185 | "phpunit/phpunit": "^9.0" 1186 | }, 1187 | "type": "library", 1188 | "extra": { 1189 | "branch-alias": { 1190 | "dev-master": "4.0-dev" 1191 | } 1192 | }, 1193 | "autoload": { 1194 | "classmap": [ 1195 | "src/" 1196 | ] 1197 | }, 1198 | "notification-url": "https://packagist.org/downloads/", 1199 | "license": [ 1200 | "BSD-3-Clause" 1201 | ], 1202 | "authors": [ 1203 | { 1204 | "name": "Sebastian Bergmann", 1205 | "email": "sebastian@phpunit.de" 1206 | } 1207 | ], 1208 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 1209 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 1210 | "time": "2020-02-07T06:12:23+00:00" 1211 | }, 1212 | { 1213 | "name": "sebastian/object-reflector", 1214 | "version": "2.0.0", 1215 | "source": { 1216 | "type": "git", 1217 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 1218 | "reference": "f4fd0835cabb0d4a6546d9fe291e5740037aa1e7" 1219 | }, 1220 | "dist": { 1221 | "type": "zip", 1222 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/f4fd0835cabb0d4a6546d9fe291e5740037aa1e7", 1223 | "reference": "f4fd0835cabb0d4a6546d9fe291e5740037aa1e7", 1224 | "shasum": "" 1225 | }, 1226 | "require": { 1227 | "php": "^7.3" 1228 | }, 1229 | "require-dev": { 1230 | "phpunit/phpunit": "^9.0" 1231 | }, 1232 | "type": "library", 1233 | "extra": { 1234 | "branch-alias": { 1235 | "dev-master": "2.0-dev" 1236 | } 1237 | }, 1238 | "autoload": { 1239 | "classmap": [ 1240 | "src/" 1241 | ] 1242 | }, 1243 | "notification-url": "https://packagist.org/downloads/", 1244 | "license": [ 1245 | "BSD-3-Clause" 1246 | ], 1247 | "authors": [ 1248 | { 1249 | "name": "Sebastian Bergmann", 1250 | "email": "sebastian@phpunit.de" 1251 | } 1252 | ], 1253 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 1254 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 1255 | "time": "2020-02-07T06:19:40+00:00" 1256 | }, 1257 | { 1258 | "name": "sebastian/recursion-context", 1259 | "version": "4.0.0", 1260 | "source": { 1261 | "type": "git", 1262 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1263 | "reference": "cdd86616411fc3062368b720b0425de10bd3d579" 1264 | }, 1265 | "dist": { 1266 | "type": "zip", 1267 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cdd86616411fc3062368b720b0425de10bd3d579", 1268 | "reference": "cdd86616411fc3062368b720b0425de10bd3d579", 1269 | "shasum": "" 1270 | }, 1271 | "require": { 1272 | "php": "^7.3" 1273 | }, 1274 | "require-dev": { 1275 | "phpunit/phpunit": "^9.0" 1276 | }, 1277 | "type": "library", 1278 | "extra": { 1279 | "branch-alias": { 1280 | "dev-master": "4.0-dev" 1281 | } 1282 | }, 1283 | "autoload": { 1284 | "classmap": [ 1285 | "src/" 1286 | ] 1287 | }, 1288 | "notification-url": "https://packagist.org/downloads/", 1289 | "license": [ 1290 | "BSD-3-Clause" 1291 | ], 1292 | "authors": [ 1293 | { 1294 | "name": "Sebastian Bergmann", 1295 | "email": "sebastian@phpunit.de" 1296 | }, 1297 | { 1298 | "name": "Jeff Welch", 1299 | "email": "whatthejeff@gmail.com" 1300 | }, 1301 | { 1302 | "name": "Adam Harvey", 1303 | "email": "aharvey@php.net" 1304 | } 1305 | ], 1306 | "description": "Provides functionality to recursively process PHP variables", 1307 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1308 | "time": "2020-02-07T06:18:20+00:00" 1309 | }, 1310 | { 1311 | "name": "sebastian/resource-operations", 1312 | "version": "3.0.0", 1313 | "source": { 1314 | "type": "git", 1315 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 1316 | "reference": "8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98" 1317 | }, 1318 | "dist": { 1319 | "type": "zip", 1320 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98", 1321 | "reference": "8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98", 1322 | "shasum": "" 1323 | }, 1324 | "require": { 1325 | "php": "^7.3" 1326 | }, 1327 | "require-dev": { 1328 | "phpunit/phpunit": "^9.0" 1329 | }, 1330 | "type": "library", 1331 | "extra": { 1332 | "branch-alias": { 1333 | "dev-master": "3.0-dev" 1334 | } 1335 | }, 1336 | "autoload": { 1337 | "classmap": [ 1338 | "src/" 1339 | ] 1340 | }, 1341 | "notification-url": "https://packagist.org/downloads/", 1342 | "license": [ 1343 | "BSD-3-Clause" 1344 | ], 1345 | "authors": [ 1346 | { 1347 | "name": "Sebastian Bergmann", 1348 | "email": "sebastian@phpunit.de" 1349 | } 1350 | ], 1351 | "description": "Provides a list of PHP built-in functions that operate on resources", 1352 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 1353 | "time": "2020-02-07T06:13:02+00:00" 1354 | }, 1355 | { 1356 | "name": "sebastian/type", 1357 | "version": "2.0.0", 1358 | "source": { 1359 | "type": "git", 1360 | "url": "https://github.com/sebastianbergmann/type.git", 1361 | "reference": "9e8f42f740afdea51f5f4e8cec2035580e797ee1" 1362 | }, 1363 | "dist": { 1364 | "type": "zip", 1365 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/9e8f42f740afdea51f5f4e8cec2035580e797ee1", 1366 | "reference": "9e8f42f740afdea51f5f4e8cec2035580e797ee1", 1367 | "shasum": "" 1368 | }, 1369 | "require": { 1370 | "php": "^7.3" 1371 | }, 1372 | "require-dev": { 1373 | "phpunit/phpunit": "^9.0" 1374 | }, 1375 | "type": "library", 1376 | "extra": { 1377 | "branch-alias": { 1378 | "dev-master": "2.0-dev" 1379 | } 1380 | }, 1381 | "autoload": { 1382 | "classmap": [ 1383 | "src/" 1384 | ] 1385 | }, 1386 | "notification-url": "https://packagist.org/downloads/", 1387 | "license": [ 1388 | "BSD-3-Clause" 1389 | ], 1390 | "authors": [ 1391 | { 1392 | "name": "Sebastian Bergmann", 1393 | "email": "sebastian@phpunit.de", 1394 | "role": "lead" 1395 | } 1396 | ], 1397 | "description": "Collection of value objects that represent the types of the PHP type system", 1398 | "homepage": "https://github.com/sebastianbergmann/type", 1399 | "time": "2020-02-07T06:13:43+00:00" 1400 | }, 1401 | { 1402 | "name": "sebastian/version", 1403 | "version": "3.0.0", 1404 | "source": { 1405 | "type": "git", 1406 | "url": "https://github.com/sebastianbergmann/version.git", 1407 | "reference": "0411bde656dce64202b39c2f4473993a9081d39e" 1408 | }, 1409 | "dist": { 1410 | "type": "zip", 1411 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/0411bde656dce64202b39c2f4473993a9081d39e", 1412 | "reference": "0411bde656dce64202b39c2f4473993a9081d39e", 1413 | "shasum": "" 1414 | }, 1415 | "require": { 1416 | "php": "^7.3" 1417 | }, 1418 | "type": "library", 1419 | "extra": { 1420 | "branch-alias": { 1421 | "dev-master": "3.0-dev" 1422 | } 1423 | }, 1424 | "autoload": { 1425 | "classmap": [ 1426 | "src/" 1427 | ] 1428 | }, 1429 | "notification-url": "https://packagist.org/downloads/", 1430 | "license": [ 1431 | "BSD-3-Clause" 1432 | ], 1433 | "authors": [ 1434 | { 1435 | "name": "Sebastian Bergmann", 1436 | "email": "sebastian@phpunit.de", 1437 | "role": "lead" 1438 | } 1439 | ], 1440 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 1441 | "homepage": "https://github.com/sebastianbergmann/version", 1442 | "time": "2020-01-21T06:36:37+00:00" 1443 | }, 1444 | { 1445 | "name": "symfony/polyfill-ctype", 1446 | "version": "v1.14.0", 1447 | "source": { 1448 | "type": "git", 1449 | "url": "https://github.com/symfony/polyfill-ctype.git", 1450 | "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38" 1451 | }, 1452 | "dist": { 1453 | "type": "zip", 1454 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", 1455 | "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", 1456 | "shasum": "" 1457 | }, 1458 | "require": { 1459 | "php": ">=5.3.3" 1460 | }, 1461 | "suggest": { 1462 | "ext-ctype": "For best performance" 1463 | }, 1464 | "type": "library", 1465 | "extra": { 1466 | "branch-alias": { 1467 | "dev-master": "1.14-dev" 1468 | } 1469 | }, 1470 | "autoload": { 1471 | "psr-4": { 1472 | "Symfony\\Polyfill\\Ctype\\": "" 1473 | }, 1474 | "files": [ 1475 | "bootstrap.php" 1476 | ] 1477 | }, 1478 | "notification-url": "https://packagist.org/downloads/", 1479 | "license": [ 1480 | "MIT" 1481 | ], 1482 | "authors": [ 1483 | { 1484 | "name": "Gert de Pagter", 1485 | "email": "BackEndTea@gmail.com" 1486 | }, 1487 | { 1488 | "name": "Symfony Community", 1489 | "homepage": "https://symfony.com/contributors" 1490 | } 1491 | ], 1492 | "description": "Symfony polyfill for ctype functions", 1493 | "homepage": "https://symfony.com", 1494 | "keywords": [ 1495 | "compatibility", 1496 | "ctype", 1497 | "polyfill", 1498 | "portable" 1499 | ], 1500 | "time": "2020-01-13T11:15:53+00:00" 1501 | }, 1502 | { 1503 | "name": "theseer/tokenizer", 1504 | "version": "1.1.3", 1505 | "source": { 1506 | "type": "git", 1507 | "url": "https://github.com/theseer/tokenizer.git", 1508 | "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" 1509 | }, 1510 | "dist": { 1511 | "type": "zip", 1512 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", 1513 | "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", 1514 | "shasum": "" 1515 | }, 1516 | "require": { 1517 | "ext-dom": "*", 1518 | "ext-tokenizer": "*", 1519 | "ext-xmlwriter": "*", 1520 | "php": "^7.0" 1521 | }, 1522 | "type": "library", 1523 | "autoload": { 1524 | "classmap": [ 1525 | "src/" 1526 | ] 1527 | }, 1528 | "notification-url": "https://packagist.org/downloads/", 1529 | "license": [ 1530 | "BSD-3-Clause" 1531 | ], 1532 | "authors": [ 1533 | { 1534 | "name": "Arne Blankerts", 1535 | "email": "arne@blankerts.de", 1536 | "role": "Developer" 1537 | } 1538 | ], 1539 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 1540 | "time": "2019-06-13T22:48:21+00:00" 1541 | }, 1542 | { 1543 | "name": "webmozart/assert", 1544 | "version": "1.7.0", 1545 | "source": { 1546 | "type": "git", 1547 | "url": "https://github.com/webmozart/assert.git", 1548 | "reference": "aed98a490f9a8f78468232db345ab9cf606cf598" 1549 | }, 1550 | "dist": { 1551 | "type": "zip", 1552 | "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598", 1553 | "reference": "aed98a490f9a8f78468232db345ab9cf606cf598", 1554 | "shasum": "" 1555 | }, 1556 | "require": { 1557 | "php": "^5.3.3 || ^7.0", 1558 | "symfony/polyfill-ctype": "^1.8" 1559 | }, 1560 | "conflict": { 1561 | "vimeo/psalm": "<3.6.0" 1562 | }, 1563 | "require-dev": { 1564 | "phpunit/phpunit": "^4.8.36 || ^7.5.13" 1565 | }, 1566 | "type": "library", 1567 | "autoload": { 1568 | "psr-4": { 1569 | "Webmozart\\Assert\\": "src/" 1570 | } 1571 | }, 1572 | "notification-url": "https://packagist.org/downloads/", 1573 | "license": [ 1574 | "MIT" 1575 | ], 1576 | "authors": [ 1577 | { 1578 | "name": "Bernhard Schussek", 1579 | "email": "bschussek@gmail.com" 1580 | } 1581 | ], 1582 | "description": "Assertions to validate method input/output with nice error messages.", 1583 | "keywords": [ 1584 | "assert", 1585 | "check", 1586 | "validate" 1587 | ], 1588 | "time": "2020-02-14T12:15:55+00:00" 1589 | } 1590 | ], 1591 | "packages-dev": [], 1592 | "aliases": [], 1593 | "minimum-stability": "stable", 1594 | "stability-flags": [], 1595 | "prefer-stable": true, 1596 | "prefer-lowest": false, 1597 | "platform": [], 1598 | "platform-dev": [] 1599 | } 1600 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 15 | 16 | tests/unit 17 | 18 | 19 | 20 | tests/end-to-end 21 | 22 | 23 | 24 | 25 | 26 | src 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /tests/_files/raw-acronym-capitalization.txt: -------------------------------------------------------------------------------- 1 | PHPUnit %s by Sebastian Bergmann and contributors. 2 | 3 | TestDox automatic capitalization 4 | ✔ JSON to XML converter 5 | ✔ PHPunit's TestDox is human-readable 6 | 7 | Time: %s, Memory: %s 8 | 9 | OK (2 tests, 2 assertions) 10 | -------------------------------------------------------------------------------- /tests/_files/raw-dataproviders.txt: -------------------------------------------------------------------------------- 1 | PHPUnit %s by Sebastian Bergmann and contributors. 2 | 3 | TestDox @dataProvider parameters 4 | ✔ By default @testdox will show data rows with this postfix: with data set 0 5 | ✔ By default @testdox will show data rows with this postfix: with data set 1 6 | ✔ By default @testdox will show NAMED data rows like this: with positive 7 | ✔ By default @testdox will show NAMED data rows like this: with negative 8 | ✔ toText(1) = "one" 9 | ✔ toText(2) = "two" 10 | ✔ Add positive numbers 1 + 1 = 2 11 | ✔ Add negative numbers 1 + -1 = 0 12 | 13 | Time: %s, Memory: %s 14 | 15 | OK (8 tests, 8 assertions) 16 | -------------------------------------------------------------------------------- /tests/bootstrap.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 17 | } 18 | 19 | /** 20 | * @testdox You can add the @testdox annotation to $location 21 | * @dataProvider annotationLocationProvider 22 | * @group howto 23 | */ 24 | public function testWhereToUseAnnotations(string $location) 25 | { 26 | $this->assertTrue(true); 27 | } 28 | 29 | /** 30 | * @testdox Stuck? Use the source! 31 | * @group howto 32 | */ 33 | public function testUseTheSource() 34 | { 35 | $this->assertTrue(true); 36 | } 37 | 38 | public static function annotationLocationProvider() 39 | { 40 | return [ 41 | ["TestCase classes"], 42 | ["TestCase methods"] 43 | ]; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /tests/unit/TestDoxAutomaticCapitalizationTest.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 9 | } 10 | 11 | public function testPHPUnitsTestDoxIsHumanReadable() { 12 | $this->assertTrue(true); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /tests/unit/TestDoxDataProviderTest.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 14 | } 15 | 16 | /** 17 | * @testdox By default @testdox will show NAMED data rows like this: 18 | * @dataProvider namedDataProvider 19 | */ 20 | public function testTestdoxHasImprovedDefaultOutputForNamedDataProviders(int $a, int $b, int $c) 21 | { 22 | $this->assertTrue(true); 23 | } 24 | 25 | /** 26 | * @dataProvider unnamedDataProvider 27 | */ 28 | public function testTestdoxCanShowParameters(int $number, string $numberText) 29 | { 30 | $this->assertTrue(true); 31 | } 32 | 33 | /** 34 | * @dataProvider namedDataProvider 35 | */ 36 | public function testTestdoxCanShowDataRowIdentifiers(int $a, int $b, int $expected) 37 | { 38 | $this->assertEquals($expected, $a + $b); 39 | } 40 | 41 | public static function unnamedDataProvider(): array 42 | { 43 | return [ 44 | [1, 'one'], 45 | [2, 'two'], 46 | ]; 47 | } 48 | 49 | public static function namedDataProvider(): array 50 | { 51 | return [ 52 | "positive" => [1, 1, 2], 53 | "negative" => [1, -1, 0], 54 | ]; 55 | } 56 | } 57 | --------------------------------------------------------------------------------