bootEnv(dirname(__DIR__).'/.env'); if ($_SERVER['APP_DEBUG']) { umask(0000); } // Schéma de test reconstruit à chaque exécution. // // Plutôt que de rejouer les migrations : celles-ci décrivent l'historique d'une // base de production, alors qu'un test veut l'état courant du mapping. Les // dissocier permet en prime de détecter une divergence entre les deux — si le // schéma issu des entités diffère de celui produit par les migrations, les tests // échoueront là où la production ne bronche pas. if ('test' === ($_SERVER['APP_ENV'] ?? null) && filter_var($_SERVER['TQS_PREPARE_SCHEMA'] ?? true, \FILTER_VALIDATE_BOOL)) { $kernel = new App\Kernel('test', (bool) $_SERVER['APP_DEBUG']); $kernel->boot(); $doctrine = $kernel->getContainer()->get('doctrine'); \assert($doctrine instanceof Doctrine\Persistence\ManagerRegistry); $entityManager = $doctrine->getManager(); \assert($entityManager instanceof Doctrine\ORM\EntityManagerInterface); $schemaTool = new Doctrine\ORM\Tools\SchemaTool($entityManager); $metadata = $entityManager->getMetadataFactory()->getAllMetadata(); $schemaTool->dropSchema($metadata); $schemaTool->createSchema($metadata); $kernel->shutdown(); }