diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..915a6af --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +BASE_PATH=./ diff --git a/.gitignore b/.gitignore index 0da1451..afe0cde 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ /.idea/vagrant.xml /.idea/misc.xml /.idea/inspectionProfiles/ +/.env diff --git a/.idea/module-interface.iml b/.idea/module-interface.iml index e0223de..f1cc48a 100644 --- a/.idea/module-interface.iml +++ b/.idea/module-interface.iml @@ -2,10 +2,43 @@ + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.idea/php-test-framework.xml b/.idea/php-test-framework.xml index 4c73bb7..0852cf9 100644 --- a/.idea/php-test-framework.xml +++ b/.idea/php-test-framework.xml @@ -5,7 +5,7 @@ - + diff --git a/.idea/php.xml b/.idea/php.xml index 6f9f274..381f1ed 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -1,53 +1,156 @@ + + + + + - - - + + + + + + + - - - - - - - - - - - - - + + + + - - - - - + + - - - + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + /etc/php/7.1/cli/conf.d/10-mysqlnd.ini, /etc/php/7.1/cli/conf.d/10-opcache.ini, /etc/php/7.1/cli/conf.d/10-pdo.ini, /etc/php/7.1/cli/conf.d/15-xml.ini, /etc/php/7.1/cli/conf.d/20-apcu.ini, /etc/php/7.1/cli/conf.d/20-bcmath.ini, /etc/php/7.1/cli/conf.d/20-bz2.ini, /etc/php/7.1/cli/conf.d/20-calendar.ini, /etc/php/7.1/cli/conf.d/20-ctype.ini, /etc/php/7.1/cli/conf.d/20-curl.ini, /etc/php/7.1/cli/conf.d/20-dom.ini, /etc/php/7.1/cli/conf.d/20-exif.ini, /etc/php/7.1/cli/conf.d/20-fileinfo.ini, /etc/php/7.1/cli/conf.d/20-ftp.ini, /etc/php/7.1/cli/conf.d/20-gd.ini, /etc/php/7.1/cli/conf.d/20-geoip.ini, /etc/php/7.1/cli/conf.d/20-gettext.ini, /etc/php/7.1/cli/conf.d/20-iconv.ini, /etc/php/7.1/cli/conf.d/20-igbinary.ini, /etc/php/7.1/cli/conf.d/20-imagick.ini, /etc/php/7.1/cli/conf.d/20-imap.ini, /etc/php/7.1/cli/conf.d/20-intl.ini, /etc/php/7.1/cli/conf.d/20-json.ini, /etc/php/7.1/cli/conf.d/20-ldap.ini, /etc/php/7.1/cli/conf.d/20-mbstring.ini, /etc/php/7.1/cli/conf.d/20-mcrypt.ini, /etc/php/7.1/cli/conf.d/20-mongodb.ini, /etc/php/7.1/cli/conf.d/20-msgpack.ini, /etc/php/7.1/cli/conf.d/20-mysqli.ini, /etc/php/7.1/cli/conf.d/20-pdo_mysql.ini, /etc/php/7.1/cli/conf.d/20-pdo_pgsql.ini, /etc/php/7.1/cli/conf.d/20-pdo_sqlite.ini, /etc/php/7.1/cli/conf.d/20-pgsql.ini, /etc/php/7.1/cli/conf.d/20-phar.ini, /etc/php/7.1/cli/conf.d/20-posix.ini, /etc/php/7.1/cli/conf.d/20-readline.ini, /etc/php/7.1/cli/conf.d/20-redis.ini, /etc/php/7.1/cli/conf.d/20-shmop.ini, /etc/php/7.1/cli/conf.d/20-simplexml.ini, /etc/php/7.1/cli/conf.d/20-soap.ini, /etc/php/7.1/cli/conf.d/20-sockets.ini, /etc/php/7.1/cli/conf.d/20-sqlite3.ini, /etc/php/7.1/cli/conf.d/20-ssh2.ini, /etc/php/7.1/cli/conf.d/20-sysvmsg.ini, /etc/php/7.1/cli/conf.d/20-sysvsem.ini, /etc/php/7.1/cli/conf.d/20-sysvshm.ini, /etc/php/7.1/cli/conf.d/20-tokenizer.ini, /etc/php/7.1/cli/conf.d/20-wddx.ini, /etc/php/7.1/cli/conf.d/20-xdebug.ini, /etc/php/7.1/cli/conf.d/20-xmlreader.ini, /etc/php/7.1/cli/conf.d/20-xmlrpc.ini, /etc/php/7.1/cli/conf.d/20-xmlwriter.ini, /etc/php/7.1/cli/conf.d/20-xsl.ini, /etc/php/7.1/cli/conf.d/20-zip.ini, /etc/php/7.1/cli/conf.d/25-apcu_bc.ini, /etc/php/7.1/cli/conf.d/25-memcached.ini, /etc/php/7.1/cli/conf.d/999-custom.ini + /etc/php/7.1/cli/php.ini + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + \ No newline at end of file diff --git a/.idea/remote-mappings.xml b/.idea/remote-mappings.xml new file mode 100644 index 0000000..d4adda7 --- /dev/null +++ b/.idea/remote-mappings.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..d9bd5da --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,14 @@ + + + + + + + + + $PROJECT_DIR$/composer.json + + + + + diff --git a/.travis.yml b/.travis.yml index b3bb65b..ec3545e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,9 @@ language: php -dist: precise php: - - '5.3' - - '5.4' - - '5.5' - - '5.6' - - '7.0' - '7.1' - '7.2' - '7.3' + - '7.4' - nightly matrix: @@ -17,7 +12,6 @@ matrix: fast_finish: true before_script: - - phpenv config-add travis.php.ini - composer update --prefer-dist script: - vendor/bin/phpunit diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f59df5..ce33ec6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,15 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). ## [[*next-version*]] - YYYY-MM-DD +### Changed +- Module `setup()` now returns a `ServiceProviderInterface` instance. +- Module `run()` now requires the `ContainerInterface` argument. +- Modules are no longer key-aware. + +### Removed +- `DependenciesAwareInterface` has been removed. +- `ModuleFactoryInterface` has been removed. +- `ModuleKeyAwareInterface` has been removed. ## [0.1] - 2019-11-05 Stable release diff --git a/README.md b/README.md index 0cb635c..e4f17ff 100644 --- a/README.md +++ b/README.md @@ -4,27 +4,287 @@ [![Code Climate](https://codeclimate.com/github/Dhii/module-interface/badges/gpa.svg)](https://codeclimate.com/github/Dhii/module-interface) [![Test Coverage](https://codeclimate.com/github/Dhii/module-interface/badges/coverage.svg)](https://codeclimate.com/github/Dhii/module-interface/coverage) [![Latest Stable Version](https://poser.pugx.org/dhii/module-interface/version)](https://packagist.org/packages/dhii/module-interface) -[![This package complies with Dhii standards](https://img.shields.io/badge/Dhii-Compliant-green.svg?style=flat-square)][Dhii] ## Details This package contains interfaces that are useful in describing modules and their attributes and behaviour. + +### Requirements +- PHP: 7.1 and up, until 8. + + Officially supports at least up to php 7.4.x. ### Interfaces -- [`ModuleInterface`][ModuleInterface] - Represents a module. A module MUST have a key, and MUST be able to be set up -and run separately in order to have the chance to prepare itself and let other potential modules to do the same. The -`setup()` method MAY return a container with the services provided by that module. The `run()` method MAY accept an -optional container with the services provided by the application, but MUST handle the case where no container is provided. -The container provided to `run()` MAY be the same container returned from `setup()`. Implementations that consume -their own services SHOULD therefore rely only on what is provided to `run()`, which gives the application the means -to add or override services. Nevertheless, implementations MUST NOT assume that the container received by `run()` is -the same container returned from `setup()`. +- [`ModuleInterface`][] - The interface for a module. A module is an object that represents an +application fragment. Modules are prepared using `setup()`, which returns a `ServiceProviderInterface` instance that +the application may consume, and invoked using `run()`, consuming the application's DI container. +- [`ModuleAwareInterface`][] - Something that can have a module retrieved. +- [`ModuleExceptionInterface`][] - An exception thrown by a module. -### Requirements -This package officially supports PHP 5.3 until PHP 7.3. Theoretically, it should work on higher versions of PHP just -the same, at the very least until PHP 8. However, it does not appear possible to build on PHP 5.3 and 7.4 at the same -time, because there seems to be no distro which has both of those in its toolchain. +### Usage +#### Module Package +In your module's pacakge, create a file that returns a module factory. This factory MUST return an instance +of `ModuleInterface` from this pacakge. By convention, this file has +the name `module.php`, and is located in the root directory. Below is a very basic example. In real life, +the service provider and the module will often have named classes of their own, and factories and extensions +will be located in `services.php` and `extensions.php` respectively, by convention. + +```php +// module.php +use Dhii\Modular\Module\ModuleInterface; +use Interop\Container\ServiceProviderInterface; +use Psr\Container\ContainerInterface; + +return function () { + return new class () implements ModuleInterface { + + /** + * Declares services of this module. + * + * @return ServiceProviderInterface The service provider with the factories and extensions of this module. + */ + public function setup() : ServiceProviderInterface + { + return new class () implements ServiceProviderInterface + { + /** + * Only the factory of the last module in load order is applied. + * + * @return array|callable[] A map of service names to service definitions. + */ + public function getFactories() + { + return [ + // A factory always gets one parameter: the container. + 'my_module/my_service' => function (ContainerInterface $c) { + // Create and return your service instance + return new MyService(); + }, + ]; + } + + /** + * All extensions are always applied, in load order. + * + * @return array|callable[] A map of service names to extensions. + */ + public function getExtensions() + { + return [ + // An extension gets an additional parameter: + // the value returned by the factory or the previously applied extensions. + 'other_module/other_service' => function ( + ContainerInterface $c, + OtherServiceInterface $previous + ): OtherServiceInterface { + // Perhaps decorate $previous and return the decorator + return new MyDecorator($previous); + }, + ]; + } + }; + } + + /** + * Consumes services of this and other modules. + * + * @param ContainerInterface $c A container with the services of all modules. + */ + public function run(ContainerInterface $c) + { + $myService = $c->get('my_module/my_service'); + $myService->doSomething(); + } + }; +}; +``` + +In the above example, the module declares a service `my_module/my_service`, and an extension +for the `other_module/other_service`, which may be found in another module. Note that by convention, +the service name contains the module name prefix, separated by forward slash `/`. It's possible +to further "nest" services by adding slash-separated "levels". In the future, some container +implementations will add benefits for modules that use this convention. + +Applications would often need the ability to do something with the arbitrary set of +modules they require. In order for an application to be able to group all modules +together, declare the package type in your `composer.json` to be `dhii-mod` by convention. +Following this convention would allow all modules written by all authors to be treated +uniformly. + +```json +{ + "name": "me/my_module", + "type": "dhii-mod" +} +``` + +What's important here: + +1. A module's `setup()` method should not cause side effects. + + The setup method is intended for the modules to prepare for action. Modules should not actually + peform the actions during this method. The container is not available in this method, and therefore + the module cannot use any services, whether of itself or of other modules, in this method. Do not + try to make the module use its own services here. + +2. Implement the correct interfaces. + + A module MUST implement `ModuleInterface`. The module's `setup()` method MUST return `ServiceProviderInterface`. + Even though the [Service Provider][`container-interop/service-provider`] standard is experimental, and has been experimental for a long time, the + module standard relies heavily on it. If the module standard becomes ubiquitous, this could push + FIG to go forward with the Service Provider standard, hopefully making it into a PSR. + +3. Observe conventions. + + It is important that conventions outlined here are observed. Some are necessary for smooth operation of + modules and/or consuming applications. Some others may not make a difference right now, but could + add benefits in the future. Please observe these conventions to ensure an optimal experience + for yourself and for other users of the standard. + +#### Consumer Package +##### Module Installation +The package that consumes modules, which is usually the application, would need to require the modules. +The below example uses the [`oomphinc/composer-installers-extender`][] lib to configure Composer +so that it installs all `dhii-mod` packages into the `modules` directory in the application root. +Packages `me/my_module` and `me/my_other_module` would therefore go into `modules/me/my_module` and +`modules/me/my_other_module` respectively. + +```json +{ + "name": "me/my_app", + "require": { + "me/my_module": "^0.1", + "me/my_other_module": "^0.1", + "oomphinc/composer-installers-extender": "^1.1" + }, + + "extra": { + "installer-types": ["dhii-mod"], + "installer-paths": { + "modules/{$vendor}/{$name}": ["type:dhii-mod"] + } + } +} +``` + +##### Module Loading +Once a module has been required, it must be loaded. Module files must be explicitly loaded by the +application, because the application is what determines module load order. The load order is +the fundamental principle that allows modules to extend and override each other's services +in a simple and intuitive way: + +1. Factories in modules that are loaded later will completely override factories of modules loaded earlier. + + Ultimately, for each service, only one factory will be used: the one declared last. So if `my_other_module` + is loaded after `my_module`, and it declares a service `my_module/my_service`, + then it will override the `my_module/my_service` service declared by `my_module`. + In short: **last factory wins**. + +2. Extensions in modules that are loaded later will be applied after extensions of modules loaded earlier. + + Ultimately, extensions from _all_ modules will be applied on top of what is returned by the factory. + So if `my_other_module` declares an extension `other_module/other_service`, it will be applied after + the extension `other_module/other_service` declared by `my_module`. + In short: **later extensions extend previous extensions**. + +Continuing from the examples above, if something in the application requests the service `other_module/other_service` +declared by `my_other_module`, this is what is going to happen: + +1. The factory in `my_other_module` is invoked. +2. The extension in `my_module` is invoked, and receives the result of the above factory as `$previous`. +3. The extension in `my_other_module` is invoked, and receives the result of the above extension as `$previous` +4. The caller of `get('other_module/other_service')` receives the result of the above extension. + +Thus, any module can override and/or extend services from any other module. Below is an example of what +an application's bootstrap code could look like. This example uses classes from [`dhii/containers`][]. + +```php +// bootstrap.php + +use Dhii\Modular\Module\ModuleInterface; +use Interop\Container\ServiceProviderInterface; +use Dhii\Container\CompositeCachingServiceProvider; +use Dhii\Container\DelegatingContainer; +use Dhii\Container\CachingContainer; + +(function ($file) { + $baseDir = dirname($file); + $modulesDir = "$baseDir/modules"; + + // Order is important! + $moduleNames = [ + 'me/my_module', + 'me/my_other_module', + ]; + + // Create and load all modules + /* @var $modules ModuleInterface[] */ + $modules = []; + foreach ($moduleNames as $moduleName) { + $moduleFactory = require_once("$modulesDir/$moduleName/module.php"); + $module = $moduleFactory(); + $modules[$moduleName] = $module; + } + + // Retrieve all modules' service providers + /* @var $providers ServiceProviderInterface[] */ + $providers = []; + foreach ($modules as $module) { + $providers[] = $module->setup(); + } + + // Group all service providers into one + $provider = new CompositeCachingServiceProvider(); + $container = new CachingContainer(new DelegatingContainer($provider, $parentContainer = null)); + + // Run all modules + foreach ($modules as $module) { + $module->run($container); + } +})(__FILE__); +``` + +The above will load, setup, and run modules `me/my_module` and `me/my_other_module`, in that order, +from the `modules` directory, provided that conventions have been followed by those modules. +What's important to note here: + +1. First _all_ modules are set up, and then _all_ modules are run. + + If you set up and run modules in the same step, it will not work, because the bootstrap + will not have the opportunity to configure the application's DI container with services + from all modules. + +2. The `CompositeCachingServiceProvider` is what is responsible for resolving services correctly. + + This relieves the application, as the process can seem complicated, and is quite re-usable. + The usage of this class is recommended. + +3. The `DelegatingContainer` optionally accepts a parent container. + + If your application is a module itself, and needs to be part of a larger application with its + own DI container, supply it as the 2nd parameter. This will ensure that services will always + be retrieved from the top-most container, regardless of where the definition is declared. + +4. The `CachingContainer` ensures services are cached. + + Effectively, this means that all services are singletons, i.e. there will only be one instance + of each service in the application. This is most commonly the desired behaviour. Without the + `CachingContainer`, i.e. with just the `DelegatingContainer`, service definitions will get + invoked every time `get()` is called, which is usually undesirable. + +5. Conventions are important. + + If modules did not place the `module.php` file into their root directories, the bootstrap + would not be able to load each module by just its package name. Modules which do not + follow that convention must have their `module.php` file loaded separately, which would + make the bootstrap code more complicated. [Dhii]: https://github.com/Dhii/dhii -[ModuleInterface]: src/ModuleInterface.php +[`dhii/containers`]: https://packagist.org/packages/dhii/containers +[`oomphinc/composer-installers-extender`]: https://packagist.org/packages/oomphinc/composer-installers-extender +[`container-interop/service-provider`]: https://packagist.org/packages/container-interop/service-provider + +[`ModuleInterface`]: src/ModuleInterface.php +[`ModuleAwareInterface`]: src/ModuleAwareInterface.php +[`ModuleExceptionInterface`]: src/Exception/ModuleExceptionInterface.php diff --git a/composer.json b/composer.json index 4a7474c..eac7567 100644 --- a/composer.json +++ b/composer.json @@ -12,18 +12,12 @@ "prefer-stable": true, "minimum-stability": "dev", "require": { - "php": "^5.3 | ^7.0", - "dhii/exception-interface": "^0.1 | ^0.2", - "dhii/data-key-value-aware-interface": "^0.1", - "dhii/factory-interface": "^0.1-alpha1" + "php": "^7.1", + "psr/container": "^1.0", + "container-interop/service-provider": "^0.4" }, "require-dev": { - "phpunit/phpunit": "^4.8", - "ptrofimov/xpmock": "^1.1", - "dhii/php-cs-fixer-config": "dev-php-5.3", - "codeclimate/php-test-reporter": "<=0.3.2", - "dhii/stringable-interface": "^0.1", - "psr/container": "^1.0" + "phpunit/phpunit": "^6.0 | ^7.0" }, "autoload": { "psr-4": { @@ -33,12 +27,12 @@ "autoload-dev": { "psr-4": { "Dhii\\Modular\\Module\\UnitTest\\": "test/unit", - "Dhii\\Modular\\Module\\FuncTest\\": "test/functional" + "Dhii\\Modular\\Module\\FuncTest\\": "test/functional", + "Dhii\\Modular\\Module\\Test\\": "test/stubs" } }, "scripts": { - "test": "phpunit", - "csfix": "php-cs-fixer fix -vvv" + "test": "phpunit" }, "extra": { "branch-alias": { diff --git a/composer.lock b/composer.lock index 9d192c2..5a5626a 100644 --- a/composer.lock +++ b/composer.lock @@ -1,187 +1,41 @@ { "_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", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4f41100b19f16fdce2a5697d205f73c0", + "content-hash": "f870e9a04e6a5595167e21a6ec1938cf", "packages": [ { - "name": "dhii/data-key-value-aware-interface", - "version": "v0.1", + "name": "container-interop/service-provider", + "version": "v0.4.0", "source": { "type": "git", - "url": "https://github.com/Dhii/data-key-value-aware-interface.git", - "reference": "220232bc9040fab78a6c039f5a4a5f9542317bdc" + "url": "https://github.com/container-interop/service-provider.git", + "reference": "4969b9e49460690b7430b3f1a87cab07be61418a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dhii/data-key-value-aware-interface/zipball/220232bc9040fab78a6c039f5a4a5f9542317bdc", - "reference": "220232bc9040fab78a6c039f5a4a5f9542317bdc", + "url": "https://api.github.com/repos/container-interop/service-provider/zipball/4969b9e49460690b7430b3f1a87cab07be61418a", + "reference": "4969b9e49460690b7430b3f1a87cab07be61418a", "shasum": "" }, "require": { - "php": "^5.3 | ^7.0" - }, - "require-dev": { - "codeclimate/php-test-reporter": "<=0.3.2", - "dhii/php-cs-fixer-config": "dev-php-5.3", - "phpunit/phpunit": "4.*", - "ptrofimov/xpmock": "^1.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Dhii\\Data\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dhii Team", - "email": "development@dhii.co" - } - ], - "description": "Interfaces that aim to increase interoperability of value objects", - "time": "2017-01-21T17:35:30+00:00" - }, - { - "name": "dhii/exception-interface", - "version": "v0.1", - "source": { - "type": "git", - "url": "https://github.com/Dhii/exception-interface.git", - "reference": "fe64b30f67830474683357f77dc4a097bf84767e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Dhii/exception-interface/zipball/fe64b30f67830474683357f77dc4a097bf84767e", - "reference": "fe64b30f67830474683357f77dc4a097bf84767e", - "shasum": "" - }, - "require": { - "dhii/stringable-interface": "^0.1", - "php": "^5.3 | ^7.0" - }, - "require-dev": { - "codeclimate/php-test-reporter": "<=0.3.2", - "dhii/php-cs-fixer-config": "dev-php-5.3", - "phpunit/phpunit": "^4.8", - "ptrofimov/xpmock": "^1.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Dhii\\Exception\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dhii Team", - "email": "development@dhii.co" - } - ], - "description": "Interfaces for most common exceptions", - "time": "2017-09-01T18:00:26+00:00" - }, - { - "name": "dhii/factory-interface", - "version": "v0.1-alpha2", - "source": { - "type": "git", - "url": "https://github.com/Dhii/factory-interface.git", - "reference": "f5180bde74ba778a8e7269bf92e8420f7527c512" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Dhii/factory-interface/zipball/f5180bde74ba778a8e7269bf92e8420f7527c512", - "reference": "f5180bde74ba778a8e7269bf92e8420f7527c512", - "shasum": "" - }, - "require": { - "dhii/exception-interface": "^0.1|^0.2", - "php": "^5.3 | ^7.0" - }, - "require-dev": { - "codeclimate/php-test-reporter": "<=0.3.2", - "dhii/php-cs-fixer-config": "dev-php-5.3", - "dhii/stringable-interface": "^0.1", - "phpunit/phpunit": "^4.8", - "psr/container": "^1.0", - "ptrofimov/xpmock": "^1.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "0.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Dhii\\Factory\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dhii Team", - "email": "development@dhii.co" - } - ], - "description": "Interfaces for working with factories.", - "time": "2018-03-07T11:08:40+00:00" - }, - { - "name": "dhii/stringable-interface", - "version": "v0.1", - "source": { - "type": "git", - "url": "https://github.com/Dhii/stringable-interface.git", - "reference": "b6653905eef2ebf377749feb80a6d18abbe913ef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Dhii/stringable-interface/zipball/b6653905eef2ebf377749feb80a6d18abbe913ef", - "reference": "b6653905eef2ebf377749feb80a6d18abbe913ef", - "shasum": "" - }, - "require": { - "php": "^5.3 | ^7.0" - }, - "require-dev": { - "codeclimate/php-test-reporter": "<=0.3.2", - "dhii/php-cs-fixer-config": "dev-php-5.3", - "phpunit/phpunit": "^4.8", - "ptrofimov/xpmock": "^1.1" + "psr/container": "^1.0" }, "type": "library", "autoload": { "psr-4": { - "Dhii\\Util\\String\\": "src/" + "Interop\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Dhii Team", - "email": "development@dhii.co" - } - ], - "description": "Interoperability interface for objects that can be cast to string", - "time": "2017-01-23T15:08:20+00:00" + "description": "Promoting container interoperability through standard service providers", + "homepage": "https://github.com/container-interop/service-provider", + "time": "2017-09-20T14:13:36+00:00" }, { "name": "psr/container", @@ -235,42 +89,40 @@ ], "packages-dev": [ { - "name": "codeclimate/php-test-reporter", - "version": "v0.3.2", + "name": "doctrine/instantiator", + "version": "1.3.0", "source": { "type": "git", - "url": "https://github.com/codeclimate/php-test-reporter.git", - "reference": "3a2d3ebdc1df5acf372458c15041af240a6fc016" + "url": "https://github.com/doctrine/instantiator.git", + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeclimate/php-test-reporter/zipball/3a2d3ebdc1df5acf372458c15041af240a6fc016", - "reference": "3a2d3ebdc1df5acf372458c15041af240a6fc016", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", "shasum": "" }, "require": { - "ext-curl": "*", - "php": ">=5.3", - "satooshi/php-coveralls": "1.0.*", - "symfony/console": ">=2.0" + "php": "^7.1" }, "require-dev": { - "ext-xdebug": "*", - "phpunit/phpunit": "3.7.*@stable" + "doctrine/coding-standard": "^6.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, - "bin": [ - "composer/bin/test-reporter" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "0.3.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { - "psr-0": { - "CodeClimate\\Component": "src/", - "CodeClimate\\Bundle": "src/" + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" } }, "notification-url": "https://packagist.org/downloads/", @@ -279,82 +131,86 @@ ], "authors": [ { - "name": "Code Climate", - "email": "hello@codeclimate.com", - "homepage": "https://codeclimate.com" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" } ], - "description": "PHP client for reporting test coverage to Code Climate", - "homepage": "https://github.com/codeclimate/php-test-reporter", + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ - "codeclimate", - "coverage" + "constructor", + "instantiate" ], - "time": "2016-04-19T16:54:33+00:00" + "time": "2019-10-21T16:45:58+00:00" }, { - "name": "dhii/php-cs-fixer-config", - "version": "dev-php-5.3", + "name": "myclabs/deep-copy", + "version": "1.9.5", "source": { "type": "git", - "url": "https://github.com/Dhii/php-cs-fixer-config.git", - "reference": "ee3cc6c906a1aa4dca2bcbfcfef684dbd1ebb8ca" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dhii/php-cs-fixer-config/zipball/ee3cc6c906a1aa4dca2bcbfcfef684dbd1ebb8ca", - "reference": "ee3cc6c906a1aa4dca2bcbfcfef684dbd1ebb8ca", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", "shasum": "" }, "require": { - "friendsofphp/php-cs-fixer": ">=1.11 <1.12", - "php": "^5.3 | ^7.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { - "phpunit/phpunit": "^4.8" + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { "psr-4": { - "Dhii\\Configuration\\PHPCSFixer\\": "src/" - } + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Dhii Team", - "email": "development@dhii.co" - } + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" ], - "description": "A default PHP CS Fixer config implementation", - "time": "2016-09-03T14:45:03+00:00" + "time": "2020-01-17T21:11:47+00:00" }, { - "name": "doctrine/instantiator", - "version": "1.0.5", + "name": "phar-io/manifest", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", + "ext-dom": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" }, "type": "library", "extra": { @@ -363,152 +219,110 @@ } }, "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "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": "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" + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2018-07-08T19:23:20+00:00" }, { - "name": "friendsofphp/php-cs-fixer", - "version": "v1.11.8", + "name": "phar-io/version", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "117137e9970054d022b7656209f094dab852b90c" + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/117137e9970054d022b7656209f094dab852b90c", - "reference": "117137e9970054d022b7656209f094dab852b90c", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=5.3.6", - "sebastian/diff": "~1.1", - "symfony/console": "~2.3|~3.0", - "symfony/event-dispatcher": "~2.1|~3.0", - "symfony/filesystem": "~2.1|~3.0", - "symfony/finder": "~2.1|~3.0", - "symfony/process": "~2.3|~3.0", - "symfony/stopwatch": "~2.5|~3.0" - }, - "conflict": { - "hhvm": "<3.9" - }, - "require-dev": { - "phpunit/phpunit": "^4.5|^5", - "satooshi/php-coveralls": "^0.7.1" + "php": "^5.6 || ^7.0" }, - "bin": [ - "php-cs-fixer" - ], - "type": "application", + "type": "library", "autoload": { - "psr-4": { - "Symfony\\CS\\": "Symfony/CS/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Dariusz RumiƄski", - "email": "dariusz.ruminski@gmail.com" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" }, { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "description": "A tool to automatically fix PHP code style", - "time": "2016-08-16T23:31:05+00:00" + "description": "Library for handling version information and constraints", + "time": "2018-07-08T19:19:57+00:00" }, { - "name": "guzzle/guzzle", - "version": "v3.9.3", + "name": "phpdocumentor/reflection-common", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle3.git", - "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9", - "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", "shasum": "" }, "require": { - "ext-curl": "*", - "php": ">=5.3.3", - "symfony/event-dispatcher": "~2.1" - }, - "replace": { - "guzzle/batch": "self.version", - "guzzle/cache": "self.version", - "guzzle/common": "self.version", - "guzzle/http": "self.version", - "guzzle/inflection": "self.version", - "guzzle/iterator": "self.version", - "guzzle/log": "self.version", - "guzzle/parser": "self.version", - "guzzle/plugin": "self.version", - "guzzle/plugin-async": "self.version", - "guzzle/plugin-backoff": "self.version", - "guzzle/plugin-cache": "self.version", - "guzzle/plugin-cookie": "self.version", - "guzzle/plugin-curlauth": "self.version", - "guzzle/plugin-error-response": "self.version", - "guzzle/plugin-history": "self.version", - "guzzle/plugin-log": "self.version", - "guzzle/plugin-md5": "self.version", - "guzzle/plugin-mock": "self.version", - "guzzle/plugin-oauth": "self.version", - "guzzle/service": "self.version", - "guzzle/stream": "self.version" + "php": ">=7.1" }, "require-dev": { - "doctrine/cache": "~1.3", - "monolog/monolog": "~1.0", - "phpunit/phpunit": "3.7.*", - "psr/log": "~1.0", - "symfony/class-loader": "~2.1", - "zendframework/zend-cache": "2.*,<2.3", - "zendframework/zend-log": "2.*,<2.3" - }, - "suggest": { - "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated." + "phpunit/phpunit": "~6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.9-dev" + "dev-master": "2.x-dev" } }, "autoload": { - "psr-0": { - "Guzzle": "src/", - "Guzzle\\Tests": "tests/" + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -517,62 +331,56 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Guzzle Community", - "homepage": "https://github.com/guzzle/guzzle/contributors" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle", - "homepage": "http://guzzlephp.org/", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "abandoned": "guzzlehttp/guzzle", - "time": "2015-03-18T18:23:50+00:00" + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2018-08-07T13:53:10+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "2.0.5", + "version": "4.3.4", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b" + "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e6a969a640b00d8daa3c66518b0405fb41ae0c4b", - "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", + "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", + "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", + "webmozart/assert": "^1.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" + "doctrine/instantiator": "^1.0.5", + "mockery/mockery": "^1.0", + "phpdocumentor/type-resolver": "0.4.*", + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "4.x-dev" } }, "autoload": { - "psr-0": { - "phpDocumentor": [ + "psr-4": { + "phpDocumentor\\Reflection\\": [ "src/" ] } @@ -584,45 +392,93 @@ "authors": [ { "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" + "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": "2019-12-28T18:55:12+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "shasum": "" + }, + "require": { + "php": "^7.1", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "^7.1", + "mockery/mockery": "~1", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.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": "2016-01-25T08:17:30+00:00" + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2019-08-22T18:11:29+00:00" }, { "name": "phpspec/prophecy", - "version": "1.7.6", + "version": "v1.10.3", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712" + "reference": "451c3cd1418cf640de218914901e51b064abb093" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712", - "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", + "reference": "451c3cd1418cf640de218914901e51b064abb093", "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|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", + "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" }, "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + "phpspec/phpspec": "^2.5 || ^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7.x-dev" + "dev-master": "1.10.x-dev" } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -650,43 +506,44 @@ "spy", "stub" ], - "time": "2018-04-18T13:57:24+00:00" + "time": "2020-03-05T15:02:03+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "2.2.4", + "version": "6.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", "shasum": "" }, "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.2", - "phpunit/php-token-stream": "~1.3", - "sebastian/environment": "^1.3.2", - "sebastian/version": "~1.0" + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.1 || ^4.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" }, "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4" + "phpunit/phpunit": "^7.0" }, "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" + "ext-xdebug": "^2.6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" + "dev-master": "6.1-dev" } }, "autoload": { @@ -701,7 +558,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -712,29 +569,32 @@ "testing", "xunit" ], - "time": "2015-10-06T15:47:00+00:00" + "time": "2018-10-31T16:06:48+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.5", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + "reference": "050bedf145a257b1ff02746c31894800e5122946" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -749,7 +609,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -759,7 +619,7 @@ "filesystem", "iterator" ], - "time": "2017-11-27T13:52:08+00:00" + "time": "2018-09-13T20:33:42+00:00" }, { "name": "phpunit/php-text-template", @@ -804,28 +664,28 @@ }, { "name": "phpunit/php-timer", - "version": "1.0.9", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -840,7 +700,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -849,33 +709,33 @@ "keywords": [ "timer" ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2019-06-07T04:22:29+00:00" }, { "name": "phpunit/php-token-stream", - "version": "1.4.12", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -898,45 +758,57 @@ "keywords": [ "tokenizer" ], - "time": "2017-12-04T08:55:13+00:00" + "time": "2019-09-17T06:23:10+00:00" }, { "name": "phpunit/phpunit", - "version": "4.8.36", + "version": "7.5.20", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "46023de9a91eec7dfb06cc56cb4e260017298517" + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517", - "reference": "46023de9a91eec7dfb06cc56cb4e260017298517", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.1", "ext-dom": "*", "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpspec/prophecy": "^1.3.1", - "phpunit/php-code-coverage": "~2.1", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "~2.3", - "sebastian/comparator": "~1.2.2", - "sebastian/diff": "~1.2", - "sebastian/environment": "~1.3", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/version": "~1.0", - "symfony/yaml": "~2.1|~3.0" + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.1", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^4.0", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpunit/phpunit-mock-objects": "*" + }, + "require-dev": { + "ext-pdo": "*" }, "suggest": { - "phpunit/php-invoker": "~1.1" + "ext-soap": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0" }, "bin": [ "phpunit" @@ -944,7 +816,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.8.x-dev" + "dev-master": "7.5-dev" } }, "autoload": { @@ -970,38 +842,32 @@ "testing", "xunit" ], - "time": "2017-06-21T08:07:12+00:00" + "time": "2020-01-08T08:45:45+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "2.3.8", + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2", - "sebastian/exporter": "~1.2" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "suggest": { - "ext-soap": "*" + "phpunit/phpunit": "^5.7 || ^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -1016,195 +882,49 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2015-10-02T06:51:40+00:00" + "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": "psr/log", - "version": "1.0.2", + "name": "sebastian/comparator", + "version": "3.0.2", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2016-10-10T12:19:37+00:00" - }, - { - "name": "ptrofimov/xpmock", - "version": "1.1.5", - "source": { - "type": "git", - "url": "https://github.com/ptrofimov/xpmock.git", - "reference": "5b95ace33624b66bf4e854071b8856722fde515e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ptrofimov/xpmock/zipball/5b95ace33624b66bf4e854071b8856722fde515e", - "reference": "5b95ace33624b66bf4e854071b8856722fde515e", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "3.7.*" - }, - "type": "library", - "autoload": { - "psr-0": { - "Xpmock": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPUnit: simple syntax to create mock-objects", - "time": "2014-01-02T16:42:27+00:00" - }, - { - "name": "satooshi/php-coveralls", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-coveralls/php-coveralls.git", - "reference": "9c07b63acbc9709344948b6fd4f63a32b2ef4127" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/9c07b63acbc9709344948b6fd4f63a32b2ef4127", - "reference": "9c07b63acbc9709344948b6fd4f63a32b2ef4127", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-simplexml": "*", - "guzzle/guzzle": "^2.8 || ^3.0", - "php": "^5.3.3 || ^7.0", - "psr/log": "^1.0", - "symfony/config": "^2.1 || ^3.0 || ^4.0", - "symfony/console": "^2.1 || ^3.0 || ^4.0", - "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0", - "symfony/yaml": "^2.0 || ^3.0 || ^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0" - }, - "suggest": { - "symfony/http-kernel": "Allows Symfony integration" - }, - "bin": [ - "bin/coveralls" - ], - "type": "library", - "autoload": { - "psr-4": { - "Satooshi\\": "src/Satooshi/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kitamura Satoshi", - "email": "with.no.parachute@gmail.com", - "homepage": "https://www.facebook.com/satooshi.jp" - } - ], - "description": "PHP client library for Coveralls API", - "homepage": "https://github.com/php-coveralls/php-coveralls", - "keywords": [ - "ci", - "coverage", - "github", - "test" - ], - "time": "2017-10-14T23:15:34+00:00" - }, - { - "name": "sebastian/comparator", - "version": "1.2.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" + "BSD-3-Clause" ], "authors": [ { @@ -1225,38 +945,39 @@ } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2017-01-29T09:50:25+00:00" + "time": "2018-07-12T15:12:46+00:00" }, { "name": "sebastian/diff", - "version": "1.4.3", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1281,34 +1002,40 @@ "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2017-05-22T07:24:03+00:00" + "time": "2019-02-04T06:01:07+00:00" }, { "name": "sebastian/environment", - "version": "1.3.8", + "version": "4.2.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0" + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -1333,34 +1060,34 @@ "environment", "hhvm" ], - "time": "2016-08-18T05:49:44+00:00" + "time": "2019-11-20T08:46:58+00:00" }, { "name": "sebastian/exporter", - "version": "1.2.2", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" + "php": "^7.0", + "sebastian/recursion-context": "^3.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -1373,6 +1100,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -1381,17 +1112,13 @@ "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" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], "description": "Provides the functionality to export PHP variables for visualization", @@ -1400,27 +1127,27 @@ "export", "exporter" ], - "time": "2016-06-17T09:04:28+00:00" + "time": "2019-09-14T09:02:43+00:00" }, { "name": "sebastian/global-state", - "version": "1.1.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.0" }, "suggest": { "ext-uopz": "*" @@ -1428,7 +1155,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1451,32 +1178,34 @@ "keywords": [ "global state" ], - "time": "2015-10-12T03:26:01+00:00" + "time": "2017-04-27T15:39:26+00:00" }, { - "name": "sebastian/recursion-context", - "version": "1.0.5", + "name": "sebastian/object-enumerator", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -1489,419 +1218,227 @@ "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": "2016-10-03T07:41:43+00:00" - }, - { - "name": "sebastian/version", - "version": "1.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", - "shasum": "" - }, - "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": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-06-21T13:59:46+00:00" - }, - { - "name": "symfony/config", - "version": "v2.8.39", - "source": { - "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "ecacddeaf76732231eea1657f6f5b062dade94c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/ecacddeaf76732231eea1657f6f5b062dade94c9", - "reference": "ecacddeaf76732231eea1657f6f5b062dade94c9", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/filesystem": "~2.3|~3.0.0" - }, - "require-dev": { - "symfony/yaml": "~2.7|~3.0.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Config Component", - "homepage": "https://symfony.com", - "time": "2018-03-19T21:11:56+00:00" + "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": "symfony/console", - "version": "v2.8.39", + "name": "sebastian/object-reflector", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "932d1e4f7f33ee37d3534f5f452474daa66283c2" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/932d1e4f7f33ee37d3534f5f452474daa66283c2", - "reference": "932d1e4f7f33ee37d3534f5f452474daa66283c2", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/debug": "^2.7.2|~3.0.0", - "symfony/polyfill-mbstring": "~1.0" + "php": "^7.0" }, "require-dev": { - "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.1|~3.0.0", - "symfony/process": "~2.1|~3.0.0" - }, - "suggest": { - "psr/log-implementation": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/process": "" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "1.1-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2018-04-30T01:21:07+00:00" + "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": "symfony/debug", - "version": "v2.8.39", + "name": "sebastian/recursion-context", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "4486d2be5e068b51fece4c8551c14e709f573c8d" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/4486d2be5e068b51fece4c8551c14e709f573c8d", - "reference": "4486d2be5e068b51fece4c8551c14e709f573c8d", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", "shasum": "" }, "require": { - "php": ">=5.3.9", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + "php": "^7.0" }, "require-dev": { - "symfony/class-loader": "~2.2|~3.0.0", - "symfony/http-kernel": "~2.3.24|~2.5.9|^2.6.2|~3.0.0" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "time": "2018-04-03T05:20:27+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v2.8.39", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "9b69aad7d4c086dc94ebade2d5eb9145da5dac8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9b69aad7d4c086dc94ebade2d5eb9145da5dac8c", - "reference": "9b69aad7d4c086dc94ebade2d5eb9145da5dac8c", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^2.0.5|~3.0.0", - "symfony/dependency-injection": "~2.6|~3.0.0", - "symfony/expression-language": "~2.6|~3.0.0", - "symfony/stopwatch": "~2.3|~3.0.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2018-04-06T07:35:03+00:00" + "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": "symfony/filesystem", - "version": "v2.8.39", + "name": "sebastian/resource-operations", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "125403a59e4cb4e3ebf46d0162fabcde613d2b97" + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/125403a59e4cb4e3ebf46d0162fabcde613d2b97", - "reference": "125403a59e4cb4e3ebf46d0162fabcde613d2b97", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "2.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "time": "2018-02-19T16:23:47+00:00" + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2018-10-04T04:07:39+00:00" }, { - "name": "symfony/finder", - "version": "v2.8.39", + "name": "sebastian/version", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "423746fc18ccf31f9abec43e4f078bb6e024b2d5" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/423746fc18ccf31f9abec43e4f078bb6e024b2d5", - "reference": "423746fc18ccf31f9abec43e4f078bb6e024b2d5", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2018-04-04T13:38:31+00:00" + "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": "symfony/polyfill-mbstring", - "version": "v1.8.0", + "name": "symfony/polyfill-ctype", + "version": "v1.14.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "3296adf6a6454a050679cde90f95350ad604b171" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171", - "reference": "3296adf6a6454a050679cde90f95350ad604b171", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", + "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", "shasum": "" }, "require": { "php": ">=5.3.3" }, "suggest": { - "ext-mbstring": "For best performance" + "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.14-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "Symfony\\Polyfill\\Ctype\\": "" }, "files": [ "bootstrap.php" @@ -1913,153 +1450,93 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "mbstring", + "ctype", "polyfill", - "portable", - "shim" + "portable" ], - "time": "2018-04-26T10:06:28+00:00" + "time": "2020-01-13T11:15:53+00:00" }, { - "name": "symfony/process", - "version": "v2.8.39", + "name": "theseer/tokenizer", + "version": "1.1.3", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "ee2c91470ff262b1a00aec27875d38594aa87629" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/ee2c91470ff262b1a00aec27875d38594aa87629", - "reference": "ee2c91470ff262b1a00aec27875d38594aa87629", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", "shasum": "" }, "require": { - "php": ">=5.3.9" + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" } ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2018-04-03T05:20:27+00:00" + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2019-06-13T22:48:21+00:00" }, { - "name": "symfony/stopwatch", - "version": "v2.8.39", + "name": "webmozart/assert", + "version": "1.7.0", "source": { "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "57021208ad9830f8f8390c1a9d7bb390f32be89e" + "url": "https://github.com/webmozart/assert.git", + "reference": "aed98a490f9a8f78468232db345ab9cf606cf598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/57021208ad9830f8f8390c1a9d7bb390f32be89e", - "reference": "57021208ad9830f8f8390c1a9d7bb390f32be89e", + "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598", + "reference": "aed98a490f9a8f78468232db345ab9cf606cf598", "shasum": "" }, "require": { - "php": ">=5.3.9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Stopwatch Component", - "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" - }, - { - "name": "symfony/yaml", - "version": "v2.8.39", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "d20bd2bdee063863e426297af41eda45ccad6f7e" + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/d20bd2bdee063863e426297af41eda45ccad6f7e", - "reference": "d20bd2bdee063863e426297af41eda45ccad6f7e", - "shasum": "" + "conflict": { + "vimeo/psalm": "<3.6.0" }, - "require": { - "php": ">=5.3.9" + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^7.5.13" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Webmozart\\Assert\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2067,28 +1544,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2018-04-08T07:53:13+00:00" + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2020-02-14T12:15:55+00:00" } ], "aliases": [], "minimum-stability": "dev", - "stability-flags": { - "dhii/php-cs-fixer-config": 20 - }, + "stability-flags": [], "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^5.3 | ^7.0" + "php": "^7.1" }, "platform-dev": [] } diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..175ffe7 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,8 @@ +version: '3.1' +services: + php: + build: + context: docker + dockerfile: Dockerfile_php + volumes: + - ${BASE_PATH}:/srv/ diff --git a/docker/Dockerfile_php b/docker/Dockerfile_php new file mode 100644 index 0000000..6602fcf --- /dev/null +++ b/docker/Dockerfile_php @@ -0,0 +1,6 @@ +FROM dockette/php:7.1 + +RUN apt-get update \ + && apt-get -y install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates \ + && add-apt-repository -y ppa:ondrej/php \ + && apt-get install -y php7.1-xdebug diff --git a/nbproject/project.properties b/nbproject/project.properties deleted file mode 100644 index f00d07b..0000000 --- a/nbproject/project.properties +++ /dev/null @@ -1,27 +0,0 @@ -auxiliary.org-netbeans-modules-php-phpunit.bootstrap_2e_create_2e_tests=false -auxiliary.org-netbeans-modules-php-phpunit.bootstrap_2e_enabled=true -auxiliary.org-netbeans-modules-php-phpunit.bootstrap_2e_path=test/bootstrap.php -auxiliary.org-netbeans-modules-php-phpunit.configuration_2e_enabled=true -auxiliary.org-netbeans-modules-php-phpunit.configuration_2e_path=build.xml -auxiliary.org-netbeans-modules-php-phpunit.customSuite_2e_enabled=false -auxiliary.org-netbeans-modules-php-phpunit.customSuite_2e_path= -auxiliary.org-netbeans-modules-php-phpunit.phpUnit_2e_enabled=false -auxiliary.org-netbeans-modules-php-phpunit.phpUnit_2e_path= -auxiliary.org-netbeans-modules-php-phpunit.test_2e_groups_2e_ask=false -auxiliary.org-netbeans-modules-php-phpunit.test_2e_run_2e_all=false -auxiliary.org-netbeans-modules-php-phpunit.test_2e_run_2e_phpunit_2e_only=true -file.reference.module-interface-vendor=vendor -file.reference.test-functional=test/functional -file.reference.test-unit=test/unit -include.path=\ - ${php.global.include.path}:\ - ${file.reference.module-interface-vendor} -php.version=PHP_53 -source.encoding=UTF-8 -src.dir=src -tags.asp=false -tags.short=false -test.src.dir=${file.reference.test-functional} -test.src.dir2=${file.reference.test-unit} -testing.providers=PhpUnit -web.root=. diff --git a/nbproject/project.xml b/nbproject/project.xml deleted file mode 100644 index d18ecdd..0000000 --- a/nbproject/project.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - org.netbeans.modules.php.project - - - dhii - module-interface - - - diff --git a/src/DependenciesAwareInterface.php b/src/DependenciesAwareInterface.php deleted file mode 100644 index 888c18b..0000000 --- a/src/DependenciesAwareInterface.php +++ /dev/null @@ -1,24 +0,0 @@ -getMockBuilder($className); + } + + /** + * Retrieves a mock builder for the specified classname. + * + * @param string $className + * @return MockBuilder The builder. + */ + abstract public function getMockBuilder($className): MockBuilder; +} diff --git a/test/unit/DependenciesAwareInterfaceTest.php b/test/unit/DependenciesAwareInterfaceTest.php deleted file mode 100644 index 5f030ac..0000000 --- a/test/unit/DependenciesAwareInterfaceTest.php +++ /dev/null @@ -1,52 +0,0 @@ -mock(static::TEST_SUBJECT_CLASSNAME) - ->getDependencies(); - - return $mock->new(); - } - - /** - * Tests whether a valid instance of the test subject can be created. - * - * @since [*next-version*] - */ - public function testCanBeCreated() - { - $subject = $this->createInstance(); - - $this->assertInstanceOf( - static::TEST_SUBJECT_CLASSNAME, - $subject, - 'A valid instance of the test subject could not be created.' - ); - } -} diff --git a/test/unit/Exception/ModuleExceptionInterfaceTest.php b/test/unit/Exception/ModuleExceptionInterfaceTest.php index d8dd142..b72b8d7 100644 --- a/test/unit/Exception/ModuleExceptionInterfaceTest.php +++ b/test/unit/Exception/ModuleExceptionInterfaceTest.php @@ -3,7 +3,11 @@ namespace Dhii\Modular\UnitTest\Exception; use Dhii\Modular\Module\Exception\ModuleExceptionInterface as TestSubject; -use Xpmock\TestCase; +use Dhii\Modular\Module\ModuleAwareInterface; +use Dhii\Modular\Module\Test\GetImplementingMockBuilderCapableTrait; +use Exception; +use PHPUnit\Framework\MockObject\MockObject; +use PHPUnit\Framework\TestCase; /** * Tests {@see TestSubject}. @@ -12,34 +16,20 @@ */ class ModuleExceptionInterfaceTest extends TestCase { - /** - * The name of the test subject. - * - * @since [*next-version*] - */ - const TEST_SUBJECT_CLASSNAME = 'Dhii\Modular\Module\Exception\ModuleExceptionInterface'; + use GetImplementingMockBuilderCapableTrait; /** * Creates a new instance of the test subject. * * @since [*next-version*] * - * @return TestSubject + * @return TestSubject&MockObject */ public function createInstance() { - $mock = $this->mock(static::TEST_SUBJECT_CLASSNAME) - ->getMessage() - ->getCode() - ->getPrevious() - ->getFile() - ->getLine() - ->getTrace() - ->getTraceAsString() - ->__toString() - - ->getModule() - ->new(); + $mock = $this->getImplementingMockBuilder(Exception::class, [TestSubject::class]) + ->setMethods([]) + ->getMock(); return $mock; } @@ -54,13 +44,19 @@ public function testCanBeCreated() $subject = $this->createInstance(); $this->assertInstanceOf( - static::TEST_SUBJECT_CLASSNAME, + TestSubject::class, $subject, 'A valid instance of the test subject could not be created' ); $this->assertInstanceOf( - 'Dhii\Modular\Module\ModuleAwareInterface', + 'Throwable', + $subject, + 'Exception must be throwable' + ); + + $this->assertInstanceOf( + ModuleAwareInterface::class, $subject, 'Subject does not implement required interface' ); diff --git a/test/unit/ModuleAwareInterfaceTest.php b/test/unit/ModuleAwareInterfaceTest.php index 55fc52b..d8aae4a 100644 --- a/test/unit/ModuleAwareInterfaceTest.php +++ b/test/unit/ModuleAwareInterfaceTest.php @@ -3,7 +3,8 @@ namespace Dhii\Modular\UnitTest\Module; use Dhii\Modular\Module\ModuleAwareInterface as TestSubject; -use Xpmock\TestCase; +use PHPUnit_Framework_MockObject_MockObject as MockObject; +use PHPUnit\Framework\TestCase; /** * Tests {@see TestSubject}. @@ -12,25 +13,17 @@ */ class ModuleAwareInterfaceTest extends TestCase { - /** - * The name of the test subject. - * - * @since [*next-version*] - */ - const TEST_SUBJECT_CLASSNAME = 'Dhii\Modular\Module\ModuleAwareInterface'; - /** * Creates a new instance of the test subject. * * @since [*next-version*] * - * @return TestSubject + * @return TestSubject&MockObject */ public function createInstance() { - $mock = $this->mock(static::TEST_SUBJECT_CLASSNAME) - ->getModule() - ->new(); + $mock = $this->getMockBuilder(TestSubject::class) + ->getMock(); return $mock; } @@ -45,7 +38,7 @@ public function testCanBeCreated() $subject = $this->createInstance(); $this->assertInstanceOf( - static::TEST_SUBJECT_CLASSNAME, + TestSubject::class, $subject, 'A valid instance of the test subject could not be created' ); diff --git a/test/unit/ModuleFactoryInterfaceTest.php b/test/unit/ModuleFactoryInterfaceTest.php deleted file mode 100644 index 73907fd..0000000 --- a/test/unit/ModuleFactoryInterfaceTest.php +++ /dev/null @@ -1,58 +0,0 @@ -mock(static::TEST_SUBJECT_CLASSNAME) - ->make(); - - return $mock->new(); - } - - /** - * Tests whether a valid instance of the test subject can be created. - * - * @since [*next-version*] - */ - public function testCanBeCreated() - { - $subject = $this->createInstance(); - - $this->assertInstanceOf( - static::TEST_SUBJECT_CLASSNAME, - $subject, - 'A valid instance of the test subject could not be created.' - ); - - $this->assertInstanceOf( - 'Dhii\Factory\FactoryInterface', - $subject, - 'Test subject does not implement expected interface.' - ); - } -} diff --git a/test/unit/ModuleInterfaceTest.php b/test/unit/ModuleInterfaceTest.php index 64407b4..9f312a8 100644 --- a/test/unit/ModuleInterfaceTest.php +++ b/test/unit/ModuleInterfaceTest.php @@ -3,7 +3,8 @@ namespace Dhii\Modular\UnitTest\Module; use Dhii\Modular\Module\ModuleInterface as TestSubject; -use Xpmock\TestCase; +use PHPUnit\Framework\MockObject\MockObject as MockObject; +use PHPUnit\Framework\TestCase; /** * Tests {@see TestSubject}. @@ -12,27 +13,17 @@ */ class ModuleInterfaceTest extends TestCase { - /** - * The name of the test subject. - * - * @since [*next-version*] - */ - const TEST_SUBJECT_CLASSNAME = 'Dhii\Modular\Module\ModuleInterface'; - /** * Creates a new instance of the test subject. * * @since [*next-version*] * - * @return TestSubject + * @return TestSubject&MockObject */ public function createInstance() { - $mock = $this->mock(static::TEST_SUBJECT_CLASSNAME) - ->getKey() - ->setup() - ->run() - ->new(); + $mock = $this->getMockBuilder(TestSubject::class) + ->getMock(); return $mock; } @@ -47,15 +38,9 @@ public function testCanBeCreated() $subject = $this->createInstance(); $this->assertInstanceOf( - static::TEST_SUBJECT_CLASSNAME, + TestSubject::class, $subject, 'A valid instance of the test subject could not be created' ); - - $this->assertInstanceOf( - 'Dhii\Data\KeyAwareInterface', - $subject, - 'Subject does not implement a required interface' - ); } } diff --git a/test/unit/ModuleKeyAwareInterfaceTest.php b/test/unit/ModuleKeyAwareInterfaceTest.php deleted file mode 100644 index 95e7f8c..0000000 --- a/test/unit/ModuleKeyAwareInterfaceTest.php +++ /dev/null @@ -1,53 +0,0 @@ -mock(static::TEST_SUBJECT_CLASSNAME) - ->getModuleKey() - ->new(); - - return $mock; - } - - /** - * Tests whether a valid instance of the test subject can be created. - * - * @since [*next-version*] - */ - public function testCanBeCreated() - { - $subject = $this->createInstance(); - - $this->assertInstanceOf( - static::TEST_SUBJECT_CLASSNAME, - $subject, - 'A valid instance of the test subject could not be created' - ); - } -} diff --git a/travis.php.ini b/travis.php.ini deleted file mode 100644 index 90b6eff..0000000 --- a/travis.php.ini +++ /dev/null @@ -1 +0,0 @@ -memory_limit = 2048M \ No newline at end of file