Skip to content

Commit 68643ac

Browse files
authored
Test against dev deps in CI (#516)
1 parent de8b465 commit 68643ac

File tree

6 files changed

+55
-24
lines changed

6 files changed

+55
-24
lines changed

.github/workflows/continuous-integration.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,9 @@ jobs:
1515
uses: "doctrine/.github/.github/workflows/[email protected]"
1616
with:
1717
php-versions: '["7.2", "7.3", "7.4", "8.0", "8.1", "8.2", "8.3"]'
18+
19+
phpunit-with-dev-deps:
20+
name: "PHPUnit with dev dependencies"
21+
uses: "doctrine/.github/.github/workflows/[email protected]"
22+
with:
23+
symfony-version-constraint: "^7"

Tests/DependencyInjection/DoctrineCommandsTest.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
use PHPUnit\Framework\MockObject\MockObject;
2525
use PHPUnit\Framework\TestCase;
2626
use Symfony\Bundle\FrameworkBundle\Console\Application;
27+
use Symfony\Component\Console\Command\LazyCommand;
2728
use Symfony\Component\Console\DependencyInjection\AddConsoleCommandPass;
2829
use Symfony\Component\DependencyInjection\ContainerBuilder;
2930
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
@@ -40,9 +41,12 @@ class DoctrineCommandsTest extends TestCase
4041
*/
4142
public function testCommandRegistered(string $name, string $instance): void
4243
{
43-
$application = $this->getApplication();
44+
$command = $this->getApplication()->find($name);
45+
if ($command instanceof LazyCommand) {
46+
$command = $command->getCommand();
47+
}
4448

45-
self::assertInstanceOf($instance, $application->find($name));
49+
self::assertInstanceOf($instance, $command);
4650
}
4751

4852
/**
@@ -68,8 +72,8 @@ public function getCommands(): array
6872
];
6973
}
7074

71-
/** @return MockObject|KernelInterface */
72-
private function getKernel(ContainerBuilder $container)
75+
/** @return KernelInterface&MockObject */
76+
private function getKernel(ContainerBuilder $container): KernelInterface
7377
{
7478
$kernel = $this->createMock(KernelInterface::class);
7579

Tests/DependencyInjection/DoctrineMigrationsExtensionTest.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
use Doctrine\Bundle\DoctrineBundle\Registry;
1010
use Doctrine\Bundle\MigrationsBundle\DependencyInjection\DoctrineMigrationsExtension;
1111
use Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle;
12-
use Doctrine\Bundle\MigrationsBundle\Tests\Fixtures\Migrations\Migration001;
12+
use Doctrine\Bundle\MigrationsBundle\Tests\Fixtures\Migrations\ContainerAwareMigration;
1313
use Doctrine\Bundle\MigrationsBundle\Tests\Fixtures\TestBundle\TestBundle;
1414
use Doctrine\Migrations\Configuration\Configuration;
1515
use Doctrine\Migrations\DependencyFactory;
@@ -25,13 +25,15 @@
2525
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
2626
use Symfony\Component\Config\FileLocator;
2727
use Symfony\Component\DependencyInjection\Alias;
28+
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
2829
use Symfony\Component\DependencyInjection\ContainerBuilder;
2930
use Symfony\Component\DependencyInjection\Definition;
3031
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
3132
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
3233
use Symfony\Component\DependencyInjection\Reference;
3334

3435
use function assert;
36+
use function interface_exists;
3537
use function sys_get_temp_dir;
3638

3739
class DoctrineMigrationsExtensionTest extends TestCase
@@ -170,6 +172,10 @@ public function compare(Version $a, Version $b): int
170172

171173
public function testContainerAwareMigrations(): void
172174
{
175+
if (! interface_exists(ContainerAwareInterface::class)) {
176+
self::markTestSkipped('This test requires Symfony < 7');
177+
}
178+
173179
$config = [
174180
'migrations_paths' => ['DoctrineMigrationsTest' => 'a'],
175181
];
@@ -180,9 +186,9 @@ public function testContainerAwareMigrations(): void
180186
$di = $container->get('doctrine.migrations.dependency_factory');
181187
self::assertInstanceOf(DependencyFactory::class, $di);
182188

183-
$migration = $di->getMigrationFactory()->createVersion(Migration001::class);
189+
$migration = $di->getMigrationFactory()->createVersion(ContainerAwareMigration::class);
184190

185-
self::assertInstanceOf(Migration001::class, $migration);
191+
self::assertInstanceOf(ContainerAwareMigration::class, $migration);
186192
self::assertSame($container, $migration->getContainer());
187193
}
188194

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Doctrine\Bundle\MigrationsBundle\Tests\Fixtures\Migrations;
6+
7+
use Doctrine\DBAL\Schema\Schema;
8+
use Doctrine\Migrations\AbstractMigration;
9+
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
10+
use Symfony\Component\DependencyInjection\ContainerInterface;
11+
12+
class ContainerAwareMigration extends AbstractMigration implements ContainerAwareInterface
13+
{
14+
/** @var ContainerInterface */
15+
private $container;
16+
17+
public function up(Schema $schema): void
18+
{
19+
}
20+
21+
public function setContainer(?ContainerInterface $container = null): void
22+
{
23+
$this->container = $container;
24+
}
25+
26+
public function getContainer(): ?ContainerInterface
27+
{
28+
return $this->container;
29+
}
30+
}

Tests/Fixtures/Migrations/Migration001.php

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,11 @@
66

77
use Doctrine\DBAL\Schema\Schema;
88
use Doctrine\Migrations\AbstractMigration;
9-
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
10-
use Symfony\Component\DependencyInjection\ContainerInterface;
119

12-
class Migration001 extends AbstractMigration implements ContainerAwareInterface
10+
class Migration001 extends AbstractMigration
1311
{
14-
/** @var ContainerInterface */
15-
private $container;
16-
1712
public function up(Schema $schema): void
1813
{
1914
// TODO: Implement up() method.
2015
}
21-
22-
public function setContainer(?ContainerInterface $container = null): void
23-
{
24-
$this->container = $container;
25-
}
26-
27-
public function getContainer(): ?ContainerInterface
28-
{
29-
return $this->container;
30-
}
3116
}

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"phpstan/phpstan-phpunit": "^1",
3434
"phpstan/phpstan-strict-rules": "^1.1",
3535
"phpstan/phpstan-symfony": "^1.3",
36-
"doctrine/orm": "^2.6",
36+
"doctrine/orm": "^2.6 || ^3",
3737
"doctrine/persistence": "^2.0 || ^3 ",
3838
"psalm/plugin-phpunit": "^0.18.4",
3939
"psalm/plugin-symfony": "^3 || ^5",

0 commit comments

Comments
 (0)