Compare commits

..

10 Commits

Author SHA1 Message Date
69f6a22121 docs: updates changelog 2020-05-21 22:22:34 +02:00
9a179d2891 chore: coding style 2020-05-21 21:48:47 +02:00
6c4be0190e feat: adds plugin uses api 2020-05-21 21:44:05 +02:00
5c6bb43d8d docs: updates readme badges 2020-05-20 01:30:05 +02:00
e536c28e34 docs: updates readme 2020-05-16 22:58:45 +02:00
67bb23cda3 Update README.md 2020-05-16 22:57:48 +02:00
59398cfcf8 docs: updates license 2020-05-16 22:37:50 +02:00
182377abe3 docs: adds twitter link 2020-05-16 22:34:00 +02:00
242e74964b docs: updates readme banner 2020-05-16 22:24:20 +02:00
9a2c7e45f7 docs: updates discord link 2020-05-15 18:19:56 +02:00
8 changed files with 69 additions and 11 deletions

View File

@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
## [Unreleased]
## [v0.1.3 (2020-05-21)](https://github.com/pestphp/pest/compare/v0.1.2...v0.1.3)
### Added
- `Plugin::uses()` method for making traits globally available ([6c4be01](https://github.com/pestphp/pest/commit/6c4be0190e9493702a976b996bbbf5150cc6bb53))
## [v0.1.2 (2020-05-15)](https://github.com/pestphp/pest/compare/v0.1.1...v0.1.2)
### Added
- Support to custom helpers ([#7](https://github.com/pestphp/pest/pull/7))

View File

@ -1,10 +1,10 @@
<p align="center">
<img src="https://next.pestphp.com/assets/img/og.png" width="600" alt="PEST Preview">
<img src="https://raw.githubusercontent.com/pestphp/art/master/readme.png" width="600" alt="PEST">
<p align="center">
<a href="https://github.com/pestphp/pest/actions"><img src="https://github.com/pest/pestphp/workflows/tests/badge.svg" alt="Build Status"></a>
<a href="https://packagist.org/packages/pestphp/pest"><img src="https://poser.pugx.org/pestphp/pest/d/total.svg" alt="Total Downloads"></a>
<a href="https://packagist.org/packages/pestphp/pest"><img src="https://poser.pugx.org/pestphp/pest/v/stable.svg" alt="Latest Version"></a>
<a href="https://packagist.org/packages/pestphp/pest"><img src="https://poser.pugx.org/pestphp/pest/license.svg" alt="License"></a>
<a href="https://github.com/pestphp/pest/actions"><img alt="GitHub Workflow Status (master)" src="https://img.shields.io/github/workflow/status/pestphp/pest/Continuous Integration/master"></a>
<a href="https://packagist.org/packages/pestphp/pest"><img alt="Total Downloads" src="https://img.shields.io/packagist/dt/pestphp/pest"></a>
<a href="https://packagist.org/packages/pestphp/pest"><img alt="Latest Version" src="https://img.shields.io/packagist/v/pestphp/pest"></a>
<a href="https://packagist.org/packages/pestphp/pest"><img alt="License" src="https://img.shields.io/packagist/l/pestphp/pest"></a>
</p>
</p>
@ -12,6 +12,7 @@
**Pest** it's an elegant PHP Testing Framework with a focus on simplicity. It was carefully crafted to bring the joy of testing to PHP.
- Explore the docs: **[pestphp.com »](https://pestphp.com)**
- Join the Discord Server: **[discord.gg/4UMHUb5 »](https://discord.gg/4UMHUb5)**
- Follow us on Twitter: **[@pestphp »](https://twitter.com/pestphp)**
- Join us on the Discord Server: **[discord.gg/bMAJv82 »](https://discord.gg/bMAJv82)**
Pest was created by **[Nuno Maduro](https://twitter.com/enunomaduro)** and is open-sourced software licensed under the **[MIT license](https://opensource.org/licenses/MIT)**.
Pest was created by **[Nuno Maduro](https://twitter.com/enunomaduro)** under the **[Sponsorware license](https://github.com/sponsorware/docs)**. It got open-sourced and is now licensed under the **[MIT license](https://opensource.org/licenses/MIT)**.

View File

@ -34,7 +34,10 @@
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/PHPUnit/"
}
},
"files": [
"tests/Autoload.php"
]
},
"require-dev": {
"ergebnis/phpstan-rules": "^0.14.4",

28
src/Plugin.php Normal file
View File

@ -0,0 +1,28 @@
<?php
declare(strict_types=1);
namespace Pest;
final class Plugin
{
/**
* The lazy callables to be executed
* once the test suite boots.
*
* @var array<int, callable>
*
* @internal
*/
public static $callables = [];
/**
* Lazy loads an `uses` call on the context of plugins.
*/
public static function uses(string ...$traits): void
{
self::$callables[] = function () use ($traits): void {
uses(...$traits)->in(TestSuite::getInstance()->rootPath . DIRECTORY_SEPARATOR . 'tests');
};
}
}

View File

@ -106,7 +106,13 @@ final class TestSuite
public static function getInstance(string $rootPath = null): TestSuite
{
if (is_string($rootPath)) {
return self::$instance ?? self::$instance = new TestSuite($rootPath);
self::$instance = new TestSuite($rootPath);
foreach (Plugin::$callables as $callable) {
$callable();
}
return self::$instance;
}
if (self::$instance === null) {

View File

@ -95,6 +95,9 @@
PASS Tests\Playground
✓ basic
PASS Tests\Plugins\Traits
✓ it allows global uses
PASS Tests\Unit\Actions\AddsCoverage
✓ it adds coverage if --coverage exist
✓ it adds coverage if --min exist
@ -132,5 +135,5 @@
WARN Tests\Visual\Success
s visual snapshot of test suite on success
Tests: 6 skipped, 69 passed
Time: 2.63s
Tests: 6 skipped, 70 passed
Time: 2.68s

View File

@ -3,3 +3,13 @@
if (class_exists(NunoMaduro\Collision\Provider::class)) {
(new NunoMaduro\Collision\Provider())->register();
}
trait PluginTrait
{
public function assertPluginTraitGotRegistered(): void
{
assertTrue(true);
}
}
Pest\Plugin::uses(PluginTrait::class);

3
tests/Plugins/Traits.php Normal file
View File

@ -0,0 +1,3 @@
<?php
it('allows global uses')->assertPluginTraitGotRegistered();