From 4eb5b3f65843e76feb2c45bb3e56da91ed7ebde6 Mon Sep 17 00:00:00 2001 From: Steve Grunwell Date: Sun, 14 Jan 2018 14:12:38 -0500 Subject: [PATCH 01/15] Move the Tests namespace into a development-only autoloader. This prevents the tests from being loaded within projects using the library, which could cause conflicts. Fixes #7. --- composer.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 0bc1ab3..3ee0e70 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,11 @@ }, "autoload": { "psr-4": { - "SteveGrunwell\\PHPUnit_Markup_Assertions\\": "src/", + "SteveGrunwell\\PHPUnit_Markup_Assertions\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { "Tests\\": "tests/" } } From 831395461a3fb6791c9b47afd02a3f8d463f0518 Mon Sep 17 00:00:00 2001 From: Steve Grunwell Date: Sun, 14 Jan 2018 14:21:26 -0500 Subject: [PATCH 02/15] Add a changelog, according to the Keep a Changelog standards (http://keepachangelog.com) --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..8b7d3b5 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,18 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +* Moved the `Tests` namespace into a development-only autoloader, to prevent them from potentially being included in projects using this library ([#7]). + +## [1.0.0] - 2017-10-24 + +* Initial release of the PHPUnit Markup Assertions Composer package. + + +[Unreleased]: https://github.com/stevegrunwell/phpunit-markup-assertions/compare/master...develop +[1.0.0]: https://github.com/stevegrunwell/phpunit-markup-assertions/releases/tag/v1.0.0 +[#7]: https://github.com/stevegrunwell/phpunit-markup-assertions/issues/7 From 6f1fd489b03f1e89bb85b927aa8e2dbd32df5bef Mon Sep 17 00:00:00 2001 From: Steve Grunwell Date: Sun, 14 Jan 2018 14:27:07 -0500 Subject: [PATCH 03/15] Remove the composer.lock file from the library. The logic for doing so comes from Martin Hujer's "17 Tips for Using Composer Efficiently" article (https://blog.martinhujer.cz/17-tips-for-using-composer-efficiently/): > ## Tip #6: Put composer.lock into .gitignore in libraries > If you are creating a library (let's call it acme/my-library), you should not commit a composer.lock file. It does not have any effect on the projects that are using your library. > > Imagine that the acme/my-library uses monolog/monolog as a dependency. If you have committed a composer.lock, everyone who is developing the acme/my-library would be using an older version of Monolog. But when the library is finished, and you use it in a real project, a newer version of Monolog may be installed, and it may not be compatible with the library. But you didn't notice it before, because of the composer.lock! > > It is best to put composer.lock into your .gitignore so you won't commit it accidentally. Fixes #8. --- .gitignore | 1 + CHANGELOG.md | 2 + composer.lock | 1516 ------------------------------------------------- 3 files changed, 3 insertions(+), 1516 deletions(-) delete mode 100644 composer.lock diff --git a/.gitignore b/.gitignore index 22fa3f5..c6d1959 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ +composer.lock tests/coverage vendor diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b7d3b5..b86c43f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] * Moved the `Tests` namespace into a development-only autoloader, to prevent them from potentially being included in projects using this library ([#7]). +* [Based on this article by Martin Hujer](https://blog.martinhujer.cz/17-tips-for-using-composer-efficiently/#tip-%236%3A-put-%60composer.lock%60-into-%60.gitignore%60-in-libraries), remove the `composer.lock` file from the library ([#8]). ## [1.0.0] - 2017-10-24 @@ -16,3 +17,4 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. [Unreleased]: https://github.com/stevegrunwell/phpunit-markup-assertions/compare/master...develop [1.0.0]: https://github.com/stevegrunwell/phpunit-markup-assertions/releases/tag/v1.0.0 [#7]: https://github.com/stevegrunwell/phpunit-markup-assertions/issues/7 +[#8]: https://github.com/stevegrunwell/phpunit-markup-assertions/issues/8 diff --git a/composer.lock b/composer.lock deleted file mode 100644 index 9a01121..0000000 --- a/composer.lock +++ /dev/null @@ -1,1516 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", - "This file is @generated automatically" - ], - "content-hash": "a73ee8ce55f3c6dfe4d9161a5987758b", - "packages": [ - { - "name": "zendframework/zend-dom", - "version": "2.6.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-dom.git", - "reference": "a9e145b2b52fe6de5a7a6b0ddb5c773c2c72d59e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-dom/zipball/a9e145b2b52fe6de5a7a6b0ddb5c773c2c72d59e", - "reference": "a9e145b2b52fe6de5a7a6b0ddb5c773c2c72d59e", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev", - "dev-develop": "2.6-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\Dom\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "provides tools for working with DOM documents and structures", - "homepage": "https://github.com/zendframework/zend-dom", - "keywords": [ - "dom", - "zf2" - ], - "time": "2015-10-14T03:37:48+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", - "shasum": "" - }, - "require": { - "php": ">=5.3,<8.0-DEV" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2015-06-14T21:17:01+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.7.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "time": "2017-10-19T19:58:43+00:00" - }, - { - "name": "phar-io/manifest", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "phar-io/version": "^1.0.1", - "php": "^5.6 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2017-03-05T18:14:27+00:00" - }, - { - "name": "phar-io/version", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "time": "2017-03-05T17:38:23+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "time": "2017-09-11T18:02:19+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "4.1.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "2d3d238c433cf69caeb4842e97a3223a116f94b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/2d3d238c433cf69caeb4842e97a3223a116f94b2", - "reference": "2d3d238c433cf69caeb4842e97a3223a116f94b2", - "shasum": "" - }, - "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0@dev", - "phpdocumentor/type-resolver": "^0.4.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-08-30T18:51:59+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "0.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "time": "2017-07-14T14:27:02+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.7.2", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6", - "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8 || ^5.6.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7.x-dev" - } - }, - "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2017-09-04T11:05:03+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "5.2.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "8ed1902a57849e117b5651fc1a5c48110946c06b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/8ed1902a57849e117b5651fc1a5c48110946c06b", - "reference": "8ed1902a57849e117b5651fc1a5c48110946c06b", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-xmlwriter": "*", - "php": "^7.0", - "phpunit/php-file-iterator": "^1.4.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^1.4.11 || ^2.0", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.0", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" - }, - "require-dev": { - "ext-xdebug": "^2.5", - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-xdebug": "^2.5.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2017-08-03T12:40:43+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.4.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2016-10-03T07:40:28+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2015-06-21T13:50:34+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.9", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2017-02-26T11:10:40+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9a02332089ac48e704c70f6cefed30c224e3c0b0", - "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2017-08-20T05:47:52+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "6.4.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "06b28548fd2b4a20c3cd6e247dc86331a7d4db13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/06b28548fd2b4a20c3cd6e247dc86331a7d4db13", - "reference": "06b28548fd2b4a20c3cd6e247dc86331a7d4db13", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "myclabs/deep-copy": "^1.6.1", - "phar-io/manifest": "^1.0.1", - "phar-io/version": "^1.0", - "php": "^7.0", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.2.2", - "phpunit/php-file-iterator": "^1.4.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^4.0.3", - "sebastian/comparator": "^2.0.2", - "sebastian/diff": "^2.0", - "sebastian/environment": "^3.1", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^1.0", - "sebastian/version": "^2.0.1" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2", - "phpunit/dbunit": "<3.0" - }, - "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-xdebug": "*", - "phpunit/php-invoker": "^1.1" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.4.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2017-10-16T13:18:59+00:00" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "2f789b59ab89669015ad984afa350c4ec577ade0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/2f789b59ab89669015ad984afa350c4ec577ade0", - "reference": "2f789b59ab89669015ad984afa350c4ec577ade0", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.5", - "php": "^7.0", - "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.0" - }, - "conflict": { - "phpunit/phpunit": "<6.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2017-08-03T14:08:16+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" - }, - { - "name": "sebastian/comparator", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "ae068fede81d06e7bb9bb46a367210a3d3e1fe6a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/ae068fede81d06e7bb9bb46a367210a3d3e1fe6a", - "reference": "ae068fede81d06e7bb9bb46a367210a3d3e1fe6a", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/diff": "^2.0", - "sebastian/exporter": "^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2017-08-03T07:14:59+00:00" - }, - { - "name": "sebastian/diff", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2017-08-03T08:09:46+00:00" - }, - { - "name": "sebastian/environment", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "time": "2017-07-01T08:51:00+00:00" - }, - { - "name": "sebastian/exporter", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2017-04-03T13:19:02+00:00" - }, - { - "name": "sebastian/global-state", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "time": "2017-04-27T15:39:26+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03T12:35:26+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29T09:07:27+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" - }, - { - "name": "sebastian/version", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2016-11-23T20:04:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": [], - "platform-dev": [] -} From a3abdac438ef0833d3ac2e9e4c17318bab537066 Mon Sep 17 00:00:00 2001 From: Steve Grunwell Date: Sun, 14 Jan 2018 15:02:24 -0500 Subject: [PATCH 04/15] Lower the minimum-required version of zendframework/zend-dom to 2.2.5. Versions prior to 2.2.5 would cause the tests for this package to emit errors like the following: 1) Tests\MarkupAssertionsTraitTest::testAssertContainsSelector with data set "Tag with href attribute" ('a[href="https://example.com"]') ErrorException: DOMXPath::query(): Invalid predicate /phpunit-markup-assertions/vendor/zendframework/zend-dom/src/Query.php:317 /phpunit-markup-assertions/vendor/zendframework/zend-dom/src/Query.php:269 /phpunit-markup-assertions/vendor/zendframework/zend-dom/src/Query.php:214 /phpunit-markup-assertions/src/MarkupAssertionsTrait.php:106 /phpunit-markup-assertions/src/MarkupAssertionsTrait.php:26 /phpunit-markup-assertions/tests/MarkupAssertionsTraitTest.php:31 Refs #9. --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 3ee0e70..e7861cf 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ "source": "https://github.com/stevegrunwell/phpunit-markup-assertions/" }, "require": { - "zendframework/zend-dom": "^2.6" + "zendframework/zend-dom": "^2.2.5" }, "require-dev": { "phpunit/phpunit": "^6.4" From e4f3a7d25c639df81eaddcb5acc03c64400b9052 Mon Sep 17 00:00:00 2001 From: Steve Grunwell Date: Sun, 14 Jan 2018 15:08:47 -0500 Subject: [PATCH 05/15] When running Travis, try it both with the latest and lowest-supported versions of the dependencies. --- .travis.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index dd30c51..1e4acb9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,10 +7,15 @@ php: sudo: false +env: + matrix: + - PREFER_LOWEST="--prefer-lowest --prefer-stable" + - PREFER_LOWEST="" + install: - wget https://github.com/php-coveralls/php-coveralls/releases/download/v1.0.0/coveralls.phar - chmod +x coveralls.phar - - composer install --no-interaction --prefer-dist + - composer install --no-interaction --prefer-dist $PREFER_LOWEST script: - mkdir -p build/logs From c3d201bbf3867ea2059ff34fe321bcd5189908df Mon Sep 17 00:00:00 2001 From: Steve Grunwell Date: Sun, 14 Jan 2018 15:09:31 -0500 Subject: [PATCH 06/15] Include PHP 5.5 and 5.6 in the Travis matrix --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 1e4acb9..6f44312 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,8 @@ language: php php: + - 5.5 + - 5.6 - 7.0 - 7.1 - 7.2 From aac559719515d7f4e16cc2a0187f66b6a10639a5 Mon Sep 17 00:00:00 2001 From: Steve Grunwell Date: Sun, 14 Jan 2018 15:14:03 -0500 Subject: [PATCH 07/15] Add a CHANGELOG entry for #9 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b86c43f..f28613f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. * Moved the `Tests` namespace into a development-only autoloader, to prevent them from potentially being included in projects using this library ([#7]). * [Based on this article by Martin Hujer](https://blog.martinhujer.cz/17-tips-for-using-composer-efficiently/#tip-%236%3A-put-%60composer.lock%60-into-%60.gitignore%60-in-libraries), remove the `composer.lock` file from the library ([#8]). +* _Lower_ the minimum version of [zendframework/zend-dom](https://packagist.org/packages/zendframework/zend-dom) to 2.2.5 for maximum portability ([#9]). ## [1.0.0] - 2017-10-24 @@ -18,3 +19,4 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. [1.0.0]: https://github.com/stevegrunwell/phpunit-markup-assertions/releases/tag/v1.0.0 [#7]: https://github.com/stevegrunwell/phpunit-markup-assertions/issues/7 [#8]: https://github.com/stevegrunwell/phpunit-markup-assertions/issues/8 +[#9]: https://github.com/stevegrunwell/phpunit-markup-assertions/issues/9 From d4e28f91708485f3a17dc8617d640a28e0ad15a5 Mon Sep 17 00:00:00 2001 From: Steve Grunwell Date: Sun, 14 Jan 2018 15:14:59 -0500 Subject: [PATCH 08/15] Apparently `composer install` doesn't accept `--prefer-lowest`, so the Travis CI script will now use `composer update` --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6f44312..6babf0a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,7 @@ env: install: - wget https://github.com/php-coveralls/php-coveralls/releases/download/v1.0.0/coveralls.phar - chmod +x coveralls.phar - - composer install --no-interaction --prefer-dist $PREFER_LOWEST + - composer update --no-interaction --prefer-dist $PREFER_LOWEST script: - mkdir -p build/logs From 2a8a1ce90e4ae24dbe8bd06822fb7666adec3fbe Mon Sep 17 00:00:00 2001 From: Steve Grunwell Date: Sun, 14 Jan 2018 15:20:25 -0500 Subject: [PATCH 09/15] Drop PHP 5.5 and 5.6 from the testing matrix, as PHPUnit < 6.0 requires tests to be structured differently, and 6.0+ requires PHP 7.0+. --- .travis.yml | 2 -- composer.json | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6babf0a..103845a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,6 @@ language: php php: - - 5.5 - - 5.6 - 7.0 - 7.1 - 7.2 diff --git a/composer.json b/composer.json index e7861cf..3dc90af 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ "zendframework/zend-dom": "^2.2.5" }, "require-dev": { - "phpunit/phpunit": "^6.4" + "phpunit/phpunit": ">=6.0" }, "scripts": { "test-coverage": [ From 19a7f87f7ff261f3741fb7a8ce6321fd117503da Mon Sep 17 00:00:00 2001 From: Steve Grunwell Date: Sun, 14 Jan 2018 16:20:25 -0500 Subject: [PATCH 10/15] Introduce the assertElementContains() and assertElementNotContains() assertions. These assertions perform a DOM Query, collect the innerHTML of each of the matches, then checks the contents using PHPUnit's assertContains() or assertNotContains(). Refs #6. --- src/MarkupAssertionsTrait.php | 59 ++++++++++++++++++++++++++ tests/MarkupAssertionsTraitTest.php | 66 +++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+) diff --git a/src/MarkupAssertionsTrait.php b/src/MarkupAssertionsTrait.php index f0581e7..33b5b29 100644 --- a/src/MarkupAssertionsTrait.php +++ b/src/MarkupAssertionsTrait.php @@ -8,6 +8,7 @@ namespace SteveGrunwell\PHPUnit_Markup_Assertions; +use DOMDocument; use PHPUnit\Framework\RiskyTestError; use Zend\Dom\Query; @@ -91,6 +92,40 @@ public function assertNotHasElementWithAttributes($attributes = [], $output = '' ); } + /** + * Assert an element's contents contain the given string. + * + * @param string $contents The string to look for within the DOM node's contents. + * @param string $selector A query selector for the element to find. + * @param string $output The output that should contain the $selector. + * @param string $message A message to display if the assertion fails. + */ + public function assertElementContains($contents, $selector = '', $output = '', $message = '') + { + $this->assertContains( + $contents, + $this->getInnerHtmlOfMatchedElements($output, $selector), + $message + ); + } + + /** + * Assert an element's contents do not contain the given string. + * + * @param string $contents The string to look for within the DOM node's contents. + * @param string $selector A query selector for the element to find. + * @param string $output The output that should not contain the $selector. + * @param string $message A message to display if the assertion fails. + */ + public function assertElementNotContains($contents, $selector = '', $output = '', $message = '') + { + $this->assertNotContains( + $contents, + $this->getInnerHtmlOfMatchedElements($output, $selector), + $message + ); + } + /** * Build a new DOMDocument from the given markup, then execute a query against it. * @@ -132,4 +167,28 @@ protected function flattenAttributeArray(array $attributes) return implode('', $attributes); } + + /** + * Given HTML markup and a DOM selector query, collect the innerHTML of the matched selectors. + * + * @param string $markup The HTML for the DOMDocument. + * @param string $query The DOM selector query. + * + * @return string The concatenated innerHTML of any matched selectors. + */ + protected function getInnerHtmlOfMatchedElements($markup, $query) + { + $results = $this->executeDomQuery($markup, $query); + $contents = []; + + // Loop through results and collect their innerHTML values. + foreach ($results as $result) { + $document = new DOMDocument; + $document->appendChild($document->importNode($result->firstChild, true)); + + $contents[] = trim($document->saveHTML()); + } + + return implode(PHP_EOL, $contents); + } } diff --git a/tests/MarkupAssertionsTraitTest.php b/tests/MarkupAssertionsTraitTest.php index 794919d..995e56c 100644 --- a/tests/MarkupAssertionsTraitTest.php +++ b/tests/MarkupAssertionsTraitTest.php @@ -2,6 +2,7 @@ namespace Tests; +use PHPUnit\Framework\AssertionFailedError; use PHPUnit\Framework\RiskyTestError; use PHPUnit\Framework\TestCase; use ReflectionMethod; @@ -82,6 +83,37 @@ public function testAssertNotHasElementWithAttributes() ); } + public function testAssertElementContains() + { + $this->testcase->assertElementContains( + 'ipsum', + '#main', + '
Lorem ipsum
Lorem ipsum
' + ); + } + + public function testAssertElementContainsScopesToSelector() + { + $this->expectException(AssertionFailedError::class); + $this->expectExceptionMessage('The #main div does not contain the string "ipsum".'); + + $this->testcase->assertElementContains( + 'ipsum', + '#main', + '
Lorem ipsum
Foo bar baz
', + 'The #main div does not contain the string "ipsum".' + ); + } + + public function testAssertElementNotContains() + { + $this->testcase->assertElementNotContains( + 'ipsum', + '#main', + '
Foo bar baz
Some string
' + ); + } + /** * @dataProvider attributeProvider() */ @@ -104,6 +136,16 @@ public function testFlattenAttributeArrayThrowsRiskyTestError() $method->invoke($this->testcase, []); } + /** + * @dataProvider innerHtmlProvider(). + */ + public function testGetInnerHtmlOfMatchedElements($markup, $selector, $expected) { + $method = new ReflectionMethod($this->testcase, 'getInnerHtmlOfMatchedElements'); + $method->setAccessible(true); + + $this->assertEquals($expected, $method->invoke($this->testcase, $markup, $selector)); + } + /** * Data provider for testFlattenAttributeArray(). */ @@ -144,6 +186,30 @@ public function attributeProvider() ]; } + /** + * Data provider for testGetInnerHtmlOfMatchedElements(). + */ + public function innerHtmlProvider() + { + return [ + 'A single match' => [ + 'Foo bar baz', + 'body', + 'Foo bar baz', + ], + 'Multiple matching elements' => [ + '
  • Foo
  • Bar
  • Baz
  • ', + 'li', + 'Foo' . PHP_EOL . 'Bar' . PHP_EOL . 'Baz', + ], + 'Nested elements' => [ + '

    Example site

    ', + 'h1', + 'Example site', + ], + ]; + } + /** * Data provider for testAssertContainsSelector(). */ From 3dead7907ab40ed289a04a5cf0cf16914ce6fb81 Mon Sep 17 00:00:00 2001 From: Steve Grunwell Date: Sun, 14 Jan 2018 16:28:52 -0500 Subject: [PATCH 11/15] Add the assertElementRegExp() and assertElementNotRegExp() assertions, which act the same as the assertElementContains() or assertElementNotContains() methods (respectively), but using regular expressions for matching. Refs #6. --- src/MarkupAssertionsTrait.php | 34 +++++++++++++++++++++++++++++ tests/MarkupAssertionsTraitTest.php | 27 +++++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/src/MarkupAssertionsTrait.php b/src/MarkupAssertionsTrait.php index 33b5b29..9317e71 100644 --- a/src/MarkupAssertionsTrait.php +++ b/src/MarkupAssertionsTrait.php @@ -126,6 +126,40 @@ public function assertElementNotContains($contents, $selector = '', $output = '' ); } + /** + * Assert an element's contents contain the given regular expression pattern. + * + * @param string $regexp The regular expression pattern to look for within the DOM node. + * @param string $selector A query selector for the element to find. + * @param string $output The output that should contain the $selector. + * @param string $message A message to display if the assertion fails. + */ + public function assertElementRegExp($regexp, $selector = '', $output = '', $message = '') + { + $this->assertRegExp( + $regexp, + $this->getInnerHtmlOfMatchedElements($output, $selector), + $message + ); + } + + /** + * Assert an element's contents do not contain the given regular expression pattern. + * + * @param string $regexp The regular expression pattern to look for within the DOM node. + * @param string $selector A query selector for the element to find. + * @param string $output The output that should not contain the $selector. + * @param string $message A message to display if the assertion fails. + */ + public function assertElementNotRegExp($regexp, $selector = '', $output = '', $message = '') + { + $this->assertNotRegExp( + $regexp, + $this->getInnerHtmlOfMatchedElements($output, $selector), + $message + ); + } + /** * Build a new DOMDocument from the given markup, then execute a query against it. * diff --git a/tests/MarkupAssertionsTraitTest.php b/tests/MarkupAssertionsTraitTest.php index 995e56c..a2145e3 100644 --- a/tests/MarkupAssertionsTraitTest.php +++ b/tests/MarkupAssertionsTraitTest.php @@ -114,6 +114,33 @@ public function testAssertElementNotContains() ); } + public function testAssertElementRegExp() + { + $this->testcase->assertElementRegExp( + '/[A-Z0-9-]+/', + '#main', + '
    Lorem ipsum
    ABC123
    ' + ); + } + + public function testAssertElementRegExpWithNestedElements() + { + $this->testcase->assertElementRegExp( + '/[A-Z]+/', + '#main', + '
    Lorem ipsum
    ABC
    ' + ); + } + + public function testAssertElementNotRegExp() + { + $this->testcase->assertElementNotRegExp( + '/[0-9-]+/', + '#main', + '
    Foo bar baz
    ABC
    ' + ); + } + /** * @dataProvider attributeProvider() */ From 1899e4905152a5b28cb5aef787e1dc09d87af5f1 Mon Sep 17 00:00:00 2001 From: Steve Grunwell Date: Sun, 14 Jan 2018 16:43:06 -0500 Subject: [PATCH 12/15] Add documentation for the assertElementContains() and assertElementRegExp() assertions --- CHANGELOG.md | 2 ++ README.md | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f28613f..a3099b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +* Added the `assertElementContains()`, `assertElementNotContains()`, `assertElementRegExp()`, and `assertElementNotRegExp()` assertions, for verifying the contents of elements that match the given DOM query ([#6]). * Moved the `Tests` namespace into a development-only autoloader, to prevent them from potentially being included in projects using this library ([#7]). * [Based on this article by Martin Hujer](https://blog.martinhujer.cz/17-tips-for-using-composer-efficiently/#tip-%236%3A-put-%60composer.lock%60-into-%60.gitignore%60-in-libraries), remove the `composer.lock` file from the library ([#8]). * _Lower_ the minimum version of [zendframework/zend-dom](https://packagist.org/packages/zendframework/zend-dom) to 2.2.5 for maximum portability ([#9]). @@ -17,6 +18,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. [Unreleased]: https://github.com/stevegrunwell/phpunit-markup-assertions/compare/master...develop [1.0.0]: https://github.com/stevegrunwell/phpunit-markup-assertions/releases/tag/v1.0.0 +[#6]: https://github.com/stevegrunwell/phpunit-markup-assertions/issues/6 [#7]: https://github.com/stevegrunwell/phpunit-markup-assertions/issues/7 [#8]: https://github.com/stevegrunwell/phpunit-markup-assertions/issues/8 [#9]: https://github.com/stevegrunwell/phpunit-markup-assertions/issues/9 diff --git a/README.md b/README.md index 98fb5a5..cff6271 100644 --- a/README.md +++ b/README.md @@ -205,3 +205,86 @@ Assert that an element with the given attributes does not exist in the given mar
    (string) $message
    A message to display if the assertion fails.
    + +### assertElementContains() + +Assert that the element with the given selector contains a string. + +
    +
    (string) $contents
    +
    The string to look for within the DOM node's contents.
    +
    (string) $selector
    +
    A query selector for the element to find.
    +
    (string) $output
    +
    The output that should contain the $selector.
    +
    (string) $message
    +
    A message to display if the assertion fails.
    +
    + +#### Example + +```php +public function testColumnShowsUserEmail() +{ + $user = getUser(); + $table = getTableMarkup(); + + $this->assertElementContains( + $user->email, + 'td.email', + $table, + 'The should contain the user\'s email address.' + ); +} +``` + +### assertElementNotContains() + +Assert that the element with the given selector does not contain a string. + +This method is the inverse of [`assertElementContains()`](#assertelementcontains). + +
    +
    (string) $contents
    +
    The string to look for within the DOM node's contents.
    +
    (string) $selector
    +
    A query selector for the element to find.
    +
    (string) $output
    +
    The output that should contain the $selector.
    +
    (string) $message
    +
    A message to display if the assertion fails.
    +
    + +### assertElementRegExp() + +Assert that the element with the given selector contains a string. + +This method works just like [`assertElementContains()`](#assertelementcontains), but uses regular expressions instead of simple string matching. + +
    +
    (string) $regexp
    +
    The regular expression pattern to look for within the DOM node.
    +
    (string) $selector
    +
    A query selector for the element to find.
    +
    (string) $output
    +
    The output that should contain the $selector.
    +
    (string) $message
    +
    A message to display if the assertion fails.
    +
    + +### assertElementNotRegExp() + +Assert that the element with the given selector does not contain a string. + +This method is the inverse of [`assertElementRegExp()`](#assertelementregexp) and behaves like [`assertElementNotContains`](#assertelementnotcontains) except with regular expressions instead of simple string matching. + +
    +
    (string) $regexp
    +
    The regular expression pattern to look for within the DOM node.
    +
    (string) $selector
    +
    A query selector for the element to find.
    +
    (string) $output
    +
    The output that should contain the $selector.
    +
    (string) $message
    +
    A message to display if the assertion fails.
    +
    From e85146dc8018f0e486092fc7ab7a46e7648f5392 Mon Sep 17 00:00:00 2001 From: Steve Grunwell Date: Sun, 14 Jan 2018 16:46:31 -0500 Subject: [PATCH 13/15] Update the table of contents under 'Available Methods' in the README --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cff6271..817859e 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,11 @@ These are the assertions made available to PHPUnit via the `MarkupAssertionsTrai * [`assertHasElementWithAttributes()`](#asserthaselementwithattributes) * [`assertNotHasElementWithAttributes()`](#assertnothaselementwithattributes) +* [`assertElementContains()`](#assertelementcontains) +* [`assertElementNotContains()`](#assertelementnotcontains) +* [`assertElementRegExp()`](#assertelementregexp) +* [`assertElementNotRegExp()`](#assertelementnotregexp) + ### assertContainsSelector() Assert that the given string contains an element matching the given selector. @@ -276,7 +281,7 @@ This method works just like [`assertElementContains()`](#assertelementcontains), Assert that the element with the given selector does not contain a string. -This method is the inverse of [`assertElementRegExp()`](#assertelementregexp) and behaves like [`assertElementNotContains`](#assertelementnotcontains) except with regular expressions instead of simple string matching. +This method is the inverse of [`assertElementRegExp()`](#assertelementregexp) and behaves like [`assertElementNotContains()`](#assertelementnotcontains) except with regular expressions instead of simple string matching.
    (string) $regexp
    From 1be82d7036e14d14c45cc37ae11520122c066e73 Mon Sep 17 00:00:00 2001 From: Steve Grunwell Date: Sun, 14 Jan 2018 17:00:21 -0500 Subject: [PATCH 14/15] Add @since DocBlock tags to the codebase to help track when assertions were added. --- src/MarkupAssertionsTrait.php | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/MarkupAssertionsTrait.php b/src/MarkupAssertionsTrait.php index 9317e71..58cc8ff 100644 --- a/src/MarkupAssertionsTrait.php +++ b/src/MarkupAssertionsTrait.php @@ -18,6 +18,8 @@ trait MarkupAssertionsTrait /** * Assert that the given string contains an element matching the given selector. * + * @since 1.0.0 + * * @param string $selector A query selector for the element to find. * @param string $output The output that should contain the $selector. * @param string $message A message to display if the assertion fails. @@ -32,6 +34,8 @@ public function assertContainsSelector($selector, $output = '', $message = '') /** * Assert that the given string does not contain an element matching the given selector. * + * @since 1.0.0 + * * @param string $selector A query selector for the element to find. * @param string $output The output that should not contain the $selector. * @param string $message A message to display if the assertion fails. @@ -46,6 +50,8 @@ public function assertNotContainsSelector($selector, $output = '', $message = '' /** * Assert the number of times an element matching the given selector is found. * + * @since 1.0.0 + * * @param int $count The number of matching elements expected. * @param string $selector A query selector for the element to find. * @param string $output The markup to run the assertion against. @@ -61,6 +67,8 @@ public function assertSelectorCount($count, $selector, $output = '', $message = /** * Assert that an element with the given attributes exists in the given markup. * + * @since 1.0.0 + * * @param array $attributes An array of HTML attributes that should be found on the element. * @param string $output The output that should contain an element with the * provided $attributes. @@ -78,6 +86,8 @@ public function assertHasElementWithAttributes($attributes = [], $output = '', $ /** * Assert that an element with the given attributes does not exist in the given markup. * + * @since 1.0.0 + * * @param array $attributes An array of HTML attributes that should be found on the element. * @param string $output The output that should not contain an element with the * provided $attributes. @@ -95,6 +105,8 @@ public function assertNotHasElementWithAttributes($attributes = [], $output = '' /** * Assert an element's contents contain the given string. * + * @since 1.1.0 + * * @param string $contents The string to look for within the DOM node's contents. * @param string $selector A query selector for the element to find. * @param string $output The output that should contain the $selector. @@ -112,6 +124,8 @@ public function assertElementContains($contents, $selector = '', $output = '', $ /** * Assert an element's contents do not contain the given string. * + * @since 1.1.0 + * * @param string $contents The string to look for within the DOM node's contents. * @param string $selector A query selector for the element to find. * @param string $output The output that should not contain the $selector. @@ -129,6 +143,8 @@ public function assertElementNotContains($contents, $selector = '', $output = '' /** * Assert an element's contents contain the given regular expression pattern. * + * @since 1.1.0 + * * @param string $regexp The regular expression pattern to look for within the DOM node. * @param string $selector A query selector for the element to find. * @param string $output The output that should contain the $selector. @@ -146,6 +162,8 @@ public function assertElementRegExp($regexp, $selector = '', $output = '', $mess /** * Assert an element's contents do not contain the given regular expression pattern. * + * @since 1.1.0 + * * @param string $regexp The regular expression pattern to look for within the DOM node. * @param string $selector A query selector for the element to find. * @param string $output The output that should not contain the $selector. @@ -163,6 +181,8 @@ public function assertElementNotRegExp($regexp, $selector = '', $output = '', $m /** * Build a new DOMDocument from the given markup, then execute a query against it. * + * @since 1.0.0 + * * @param string $markup The HTML for the DOMDocument. * @param string $query The DOM selector query. * @@ -178,6 +198,8 @@ protected function executeDomQuery($markup, $query) /** * Given an array of HTML attributes, flatten them into a XPath attribute selector. * + * @since 1.0.0 + * * @throws RiskyTestError When the $attributes array is empty. * * @param array $attributes HTML attributes and their values. @@ -205,6 +227,8 @@ protected function flattenAttributeArray(array $attributes) /** * Given HTML markup and a DOM selector query, collect the innerHTML of the matched selectors. * + * @since 1.1.0 + * * @param string $markup The HTML for the DOMDocument. * @param string $query The DOM selector query. * From f40ed15ad591e60928e92c888f551a8972b74203 Mon Sep 17 00:00:00 2001 From: Steve Grunwell Date: Sun, 14 Jan 2018 17:00:34 -0500 Subject: [PATCH 15/15] Version bump to 1.1.0 --- CHANGELOG.md | 3 ++- README.md | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3099b8..dc02bc3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [1.1.0] - 2018-01-14 * Added the `assertElementContains()`, `assertElementNotContains()`, `assertElementRegExp()`, and `assertElementNotRegExp()` assertions, for verifying the contents of elements that match the given DOM query ([#6]). * Moved the `Tests` namespace into a development-only autoloader, to prevent them from potentially being included in projects using this library ([#7]). @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. [Unreleased]: https://github.com/stevegrunwell/phpunit-markup-assertions/compare/master...develop +[1.1.0]: https://github.com/stevegrunwell/phpunit-markup-assertions/releases/tag/v1.1.0 [1.0.0]: https://github.com/stevegrunwell/phpunit-markup-assertions/releases/tag/v1.0.0 [#6]: https://github.com/stevegrunwell/phpunit-markup-assertions/issues/6 [#7]: https://github.com/stevegrunwell/phpunit-markup-assertions/issues/7 diff --git a/README.md b/README.md index 817859e..8c66e88 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,6 @@ These are the assertions made available to PHPUnit via the `MarkupAssertionsTrai * [`assertSelectorCount()`](#assertselectorcount) * [`assertHasElementWithAttributes()`](#asserthaselementwithattributes) * [`assertNotHasElementWithAttributes()`](#assertnothaselementwithattributes) - * [`assertElementContains()`](#assertelementcontains) * [`assertElementNotContains()`](#assertelementnotcontains) * [`assertElementRegExp()`](#assertelementregexp)