diff --git a/.github/workflows/test-application.yaml b/.github/workflows/test-application.yaml
index 3fb7c6c..e2af8ed 100644
--- a/.github/workflows/test-application.yaml
+++ b/.github/workflows/test-application.yaml
@@ -22,9 +22,15 @@ jobs:
include:
- php-version: '8.0'
dependencies: 'lowest'
+ phpunit-config: 'phpunit-9.xml.dist'
- php-version: '8.0'
+ phpunit-config: 'phpunit-9.xml.dist'
- php-version: '8.1'
+ - php-version: '8.2'
+ - php-version: '8.3'
coverage: 'true'
+ - php-version: '8.4'
+ composer-flags: '--ignore-platform-reqs'
steps:
- name: Checkout project
@@ -44,10 +50,10 @@ jobs:
uses: ramsey/composer-install@v2
with:
dependency-versions: ${{ matrix.dependencies }}
- composer-options: --prefer-dist --no-suggest
+ composer-options: --prefer-dist --no-suggest ${{ matrix.composer-flags }}
- name: Execute test
- run: vendor/bin/simple-phpunit -c phpunit.xml.dist --coverage-clover=coverage.clover
+ run: vendor/bin/phpunit --config ${{ matrix.phpunit-config || 'phpunit.xml.dist' }} --coverage-clover=coverage.clover
- name: Coverage
if: ${{ matrix.coverage }}
diff --git a/.gitignore b/.gitignore
index ccb14bc..5084260 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@ composer.phar
*.iml
.idea
+.phpunit.cache
diff --git a/composer.json b/composer.json
index 6892573..99deee0 100644
--- a/composer.json
+++ b/composer.json
@@ -10,16 +10,18 @@
}
],
"require": {
- "php": "^8.0 || ^8.1",
- "doctrine/collections": "^1.0",
+ "php": "^8.0",
+ "doctrine/collections": "^1.0 || ^2.0",
"ramsey/uuid": "^3.1 || ^4.0",
- "symfony/event-dispatcher": "^5.4 || ^6.0",
+ "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0",
"dragonmantank/cron-expression": "^1.1 || ^2.0 || ^3.0"
},
"require-dev": {
"mikey179/vfsstream": "^1.6.7",
- "psr/log": "^1.0",
- "symfony/phpunit-bridge": "^5.4 || ^6.0"
+ "psr/log": "^1.0 || ^2.0 || ^3.0",
+ "phpunit/phpunit": "^9.6.5 || ^10 || ^11",
+ "phpspec/prophecy-phpunit": "^2.0.1",
+ "phpspec/prophecy": "^1.14"
},
"autoload": {
"psr-4": {
diff --git a/phpunit-9.xml.dist b/phpunit-9.xml.dist
new file mode 100644
index 0000000..2ad0045
--- /dev/null
+++ b/phpunit-9.xml.dist
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+ ./tests/
+
+
+
+
+
+ ./
+
+ ./vendor
+ ./tests
+
+
+
+
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index 8bd5097..4e8f76b 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -1,15 +1,12 @@
-
-
-
-
-
+
+
@@ -18,13 +15,14 @@
-
-
+
+
./
-
- ./vendor
- ./tests
-
-
-
+
+
+
+ ./vendor
+ ./tests
+
+
diff --git a/tests/Unit/Builder/TaskBuilderFactoryTest.php b/tests/Unit/Builder/TaskBuilderFactoryTest.php
index a66b253..c29f9df 100644
--- a/tests/Unit/Builder/TaskBuilderFactoryTest.php
+++ b/tests/Unit/Builder/TaskBuilderFactoryTest.php
@@ -12,6 +12,7 @@
namespace Task\Tests\Unit\Builder;
use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
use Task\Builder\TaskBuilderFactory;
use Task\Builder\TaskBuilderInterface;
use Task\Scheduler\TaskSchedulerInterface;
@@ -22,6 +23,8 @@
*/
class TaskBuilderFactoryTest extends TestCase
{
+ use ProphecyTrait;
+
public function testCreate()
{
$task = $this->prophesize(TaskInterface::class);
diff --git a/tests/Unit/Builder/TaskBuilderTest.php b/tests/Unit/Builder/TaskBuilderTest.php
index 0269da0..f11dac3 100644
--- a/tests/Unit/Builder/TaskBuilderTest.php
+++ b/tests/Unit/Builder/TaskBuilderTest.php
@@ -13,6 +13,7 @@
use Cron\CronExpression;
use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
use Task\Builder\TaskBuilder;
use Task\Scheduler\TaskSchedulerInterface;
use Task\TaskInterface;
@@ -22,6 +23,8 @@
*/
class TaskBuilderTest extends TestCase
{
+ use ProphecyTrait;
+
public function testHourly()
{
$task = $this->prophesize(TaskInterface::class);
diff --git a/tests/Unit/Event/TaskEventTest.php b/tests/Unit/Event/TaskEventTest.php
index 62b4a6e..30e5ca4 100644
--- a/tests/Unit/Event/TaskEventTest.php
+++ b/tests/Unit/Event/TaskEventTest.php
@@ -12,6 +12,7 @@
namespace Task\Tests\Unit\Event;
use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
use Task\Event\TaskEvent;
use Task\TaskInterface;
@@ -20,6 +21,8 @@
*/
class TaskEventTest extends TestCase
{
+ use ProphecyTrait;
+
public function testGetTask()
{
$task = $this->prophesize(TaskInterface::class);
diff --git a/tests/Unit/Event/TaskExecutionEventTest.php b/tests/Unit/Event/TaskExecutionEventTest.php
index 0bb39aa..d4c2387 100644
--- a/tests/Unit/Event/TaskExecutionEventTest.php
+++ b/tests/Unit/Event/TaskExecutionEventTest.php
@@ -12,6 +12,7 @@
namespace Task\Tests\Unit\Event;
use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
use Task\Event\TaskExecutionEvent;
use Task\Execution\TaskExecutionInterface;
use Task\TaskInterface;
@@ -21,6 +22,8 @@
*/
class TaskExecutionEventTest extends TestCase
{
+ use ProphecyTrait;
+
public function testGetTask()
{
$task = $this->prophesize(TaskInterface::class);
diff --git a/tests/Unit/Event/TaskFailedEventTest.php b/tests/Unit/Event/TaskFailedEventTest.php
index 8daf850..823c159 100644
--- a/tests/Unit/Event/TaskFailedEventTest.php
+++ b/tests/Unit/Event/TaskFailedEventTest.php
@@ -12,6 +12,7 @@
namespace Task\Tests\Unit\Event;
use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
use Task\Event\TaskFailedEvent;
use Task\TaskInterface;
@@ -20,6 +21,8 @@
*/
class TaskFailedEventTest extends TestCase
{
+ use ProphecyTrait;
+
public function testGetTask()
{
$task = $this->prophesize(TaskInterface::class);
diff --git a/tests/Unit/Execution/TaskExecutionTest.php b/tests/Unit/Execution/TaskExecutionTest.php
index 084e54e..5153dfb 100644
--- a/tests/Unit/Execution/TaskExecutionTest.php
+++ b/tests/Unit/Execution/TaskExecutionTest.php
@@ -12,6 +12,7 @@
namespace Task\Tests\Unit\Execution;
use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
use Task\Execution\TaskExecution;
use Task\Task;
use Task\TaskStatus;
@@ -21,6 +22,8 @@
*/
class TaskExecutionTest extends TestCase
{
+ use ProphecyTrait;
+
public function testUuid()
{
$task = $this->prophesize(Task::class);
diff --git a/tests/Unit/Lock/LockTest.php b/tests/Unit/Lock/LockTest.php
index 8c19d6a..8bccc03 100644
--- a/tests/Unit/Lock/LockTest.php
+++ b/tests/Unit/Lock/LockTest.php
@@ -12,6 +12,7 @@
namespace Task\Tests\Unit\Lock;
use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
use Task\Lock\Exception\LockConflictException;
use Task\Lock\Lock;
use Task\Lock\LockInterface;
@@ -19,6 +20,8 @@
class LockTest extends TestCase
{
+ use ProphecyTrait;
+
/**
* @var LockStorageInterface
*/
diff --git a/tests/Unit/Runner/InsideProcessExecutorTest.php b/tests/Unit/Runner/InsideProcessExecutorTest.php
index 81cc0ff..73e1bf8 100644
--- a/tests/Unit/Runner/InsideProcessExecutorTest.php
+++ b/tests/Unit/Runner/InsideProcessExecutorTest.php
@@ -12,6 +12,7 @@
namespace Unit\Runner;
use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
use Task\Execution\TaskExecutionInterface;
use Task\Executor\FailedException;
use Task\Executor\InsideProcessExecutor;
@@ -22,6 +23,8 @@
class InsideProcessExecutorTest extends TestCase
{
+ use ProphecyTrait;
+
/**
* @var TaskHandlerFactoryInterface
*/
diff --git a/tests/Unit/Runner/PendingExecutionFinderTest.php b/tests/Unit/Runner/PendingExecutionFinderTest.php
index 5c97349..ad30269 100644
--- a/tests/Unit/Runner/PendingExecutionFinderTest.php
+++ b/tests/Unit/Runner/PendingExecutionFinderTest.php
@@ -13,6 +13,7 @@
use PHPUnit\Framework\TestCase;
use Prophecy\Argument;
+use Prophecy\PhpUnit\ProphecyTrait;
use Ramsey\Uuid\Uuid;
use Task\Execution\TaskExecutionInterface;
use Task\Handler\TaskHandlerFactoryInterface;
@@ -24,6 +25,8 @@
class PendingExecutionFinderTest extends TestCase
{
+ use ProphecyTrait;
+
const HANDLER = 'AppBundle\\Handler\\TestHandler';
const LOCKING_HANDLER = 'AppBundle\\Handler\\LockingTestHandler';
diff --git a/tests/Unit/Runner/TaskRunnerTest.php b/tests/Unit/Runner/TaskRunnerTest.php
index 8dad664..c34dcfb 100644
--- a/tests/Unit/Runner/TaskRunnerTest.php
+++ b/tests/Unit/Runner/TaskRunnerTest.php
@@ -13,6 +13,7 @@
use PHPUnit\Framework\TestCase;
use Prophecy\Argument;
+use Prophecy\PhpUnit\ProphecyTrait;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy;
use Task\Event\Events;
@@ -33,6 +34,8 @@
*/
class TaskRunnerTest extends TestCase
{
+ use ProphecyTrait;
+
/**
* @var TaskExecutionRepositoryInterface
*/
@@ -81,8 +84,8 @@ public function testRunTasks()
$this->createTaskExecution($task, new \DateTime(), 'Test 2')->setStatus(TaskStatus::PLANNED),
];
- $this->taskExecutionRepository->save($executions[0])->willReturnArgument(0)->shouldBeCalledTimes(2);
- $this->taskExecutionRepository->save($executions[1])->willReturnArgument(0)->shouldBeCalledTimes(2);
+ $this->taskExecutionRepository->save($executions[0])->willReturnArgument(0)->shouldBeCalledTimes(3);
+ $this->taskExecutionRepository->save($executions[1])->willReturnArgument(0)->shouldBeCalledTimes(3);
$this->executor->execute($executions[0])->willReturn(strrev('Test 1'));
$this->executor->execute($executions[1])->willReturn(strrev('Test 2'));
@@ -115,8 +118,8 @@ public function testRunTasksFailed()
$this->createTaskExecution($task, new \DateTime(), 'Test 2')->setStatus(TaskStatus::PLANNED),
];
- $this->taskExecutionRepository->save($executions[0])->willReturnArgument(0)->shouldBeCalledTimes(2);
- $this->taskExecutionRepository->save($executions[1])->willReturnArgument(0)->shouldBeCalledTimes(2);
+ $this->taskExecutionRepository->save($executions[0])->willReturnArgument(0)->shouldBeCalledTimes(3);
+ $this->taskExecutionRepository->save($executions[1])->willReturnArgument(0)->shouldBeCalledTimes(3);
$this->executor->execute($executions[0])->willThrow(new \Exception());
$this->executor->execute($executions[1])->willReturn(strrev('Test 2'));
diff --git a/tests/Unit/Scheduler/TaskSchedulerTest.php b/tests/Unit/Scheduler/TaskSchedulerTest.php
index 05eb267..59cdcca 100644
--- a/tests/Unit/Scheduler/TaskSchedulerTest.php
+++ b/tests/Unit/Scheduler/TaskSchedulerTest.php
@@ -14,6 +14,7 @@
use Cron\CronExpression;
use PHPUnit\Framework\TestCase;
use Prophecy\Argument;
+use Prophecy\PhpUnit\ProphecyTrait;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy;
use Task\Builder\TaskBuilderFactoryInterface;
@@ -35,6 +36,8 @@
*/
class TaskSchedulerTest extends TestCase
{
+ use ProphecyTrait;
+
/**
* @var TaskBuilderFactoryInterface
*/
diff --git a/tests/Unit/Storage/ArrayStorage/ArrayTaskExecutionRepositoryTest.php b/tests/Unit/Storage/ArrayStorage/ArrayTaskExecutionRepositoryTest.php
index f832bca..bcbf038 100644
--- a/tests/Unit/Storage/ArrayStorage/ArrayTaskExecutionRepositoryTest.php
+++ b/tests/Unit/Storage/ArrayStorage/ArrayTaskExecutionRepositoryTest.php
@@ -14,6 +14,7 @@
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
use Task\Execution\TaskExecution;
use Task\Execution\TaskExecutionInterface;
use Task\Storage\ArrayStorage\ArrayTaskExecutionRepository;
@@ -25,6 +26,8 @@
*/
class ArrayTaskExecutionRepositoryTest extends TestCase
{
+ use ProphecyTrait;
+
public function testSave()
{
$taskExecutionCollection = $this->prophesize(Collection::class);
diff --git a/tests/Unit/Storage/ArrayStorage/ArrayTaskRepositoryTest.php b/tests/Unit/Storage/ArrayStorage/ArrayTaskRepositoryTest.php
index dc74a7e..dbabf75 100644
--- a/tests/Unit/Storage/ArrayStorage/ArrayTaskRepositoryTest.php
+++ b/tests/Unit/Storage/ArrayStorage/ArrayTaskRepositoryTest.php
@@ -15,6 +15,7 @@
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use PHPUnit\Framework\TestCase;
+use Prophecy\PhpUnit\ProphecyTrait;
use Task\Storage\ArrayStorage\ArrayTaskRepository;
use Task\Task;
use Task\TaskInterface;
@@ -24,6 +25,8 @@
*/
class ArrayTaskRepositoryTest extends TestCase
{
+ use ProphecyTrait;
+
public function testFindByUuid()
{
$tasks = [