diff --git a/lib/Doctrine/DBAL/Migrations/Configuration/Configuration.php b/lib/Doctrine/DBAL/Migrations/Configuration/Configuration.php index 9900dfbf9e..402a48e815 100644 --- a/lib/Doctrine/DBAL/Migrations/Configuration/Configuration.php +++ b/lib/Doctrine/DBAL/Migrations/Configuration/Configuration.php @@ -454,6 +454,10 @@ public function getMigrations() */ public function getVersion($version) { + if (empty($this->migrations)) { + $this->registerMigrationsFromDirectory($this->getMigrationsDirectory()); + } + if (!isset($this->migrations[$version])) { throw MigrationException::unknownMigrationVersion($version); } diff --git a/tests/Doctrine/DBAL/Migrations/Tests/ConfigurationTest.php b/tests/Doctrine/DBAL/Migrations/Tests/ConfigurationTest.php index 6a5fdff007..75d4ce7842 100644 --- a/tests/Doctrine/DBAL/Migrations/Tests/ConfigurationTest.php +++ b/tests/Doctrine/DBAL/Migrations/Tests/ConfigurationTest.php @@ -3,6 +3,7 @@ namespace Doctrine\DBAL\Migrations\Tests; use Doctrine\DBAL\Migrations\Configuration\Configuration; +use Doctrine\DBAL\Migrations\MigrationException; class ConfigurationTest extends MigrationTestCase { @@ -190,6 +191,31 @@ public function testFormatVersion($version, $return) $this->assertEquals($return, $config->formatVersion($version)); } + /** + * @dataProvider autoloadVersionProvider + * + * @param $version + */ + public function testGetVersion($version) + { + $config = $this->getSqliteConfiguration(); + $config->setMigrationsNamespace('Doctrine\DBAL\Migrations\Tests\Stub\Configuration\AutoloadVersions'); + $config->setMigrationsDirectory(__DIR__ . '/Stub/Configuration/AutoloadVersions'); + + $result = $config->getVersion($version); + + $this->assertNotNull($result); + } + + public function testGetVersionNotFound() + { + $this->setExpectedException(MigrationException::class); + + $config = $this->getSqliteConfiguration(); + + $config->getVersion('foo'); + } + /** * @dataProvider versionProvider */ @@ -212,4 +238,18 @@ public function versionProvider() ['20150202162811', '2015-02-02 16:28:11'] ]; } + + /** + * @return array + */ + public function autoloadVersionProvider() + { + return [ + ['1Test'], + ['2Test'], + ['3Test'], + ['4Test'], + ['5Test'], + ]; + } }