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 = [