1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-02-17 14:34:40 +01:00

Merge pull request from Nicofuma/ticket/13064

[ticket/13064] Validate the migrations provided to migrator::set_migrations()

* Nicofuma/ticket/13064:
  [ticket/13064] Validate the migrations provided to migrator::set_migrations()
This commit is contained in:
Joas Schilling 2014-09-17 19:59:39 +02:00
commit 86ea314598
2 changed files with 27 additions and 2 deletions
phpBB/phpbb/db
tests/dbal

@ -129,11 +129,28 @@ class migrator
* Sets the list of available migration class names to the given array.
*
* @param array $class_names An array of migration class names
* @param bool $check_fulfillable If TRUE (default), we will check
* if all of the migrations are fulfillable after loading them.
* If FALSE, we will not check. You SHOULD check at least once
* to prevent errors.
* @return null
* @throws \phpbb\db\migration\exception
*/
public function set_migrations($class_names)
public function set_migrations($class_names, $check_fulfillable = true)
{
$this->migrations = $class_names;
if ($check_fulfillable)
{
foreach ($this->migrations as $name)
{
$unfulfillable = $this->unfulfillable($name);
if ($unfulfillable !== false)
{
throw new \phpbb\db\migration\exception('MIGRATION_NOT_FULFILLABLE', $name, $unfulfillable);
}
}
}
}
/**

@ -118,9 +118,17 @@ class phpbb_dbal_migrator_test extends phpbb_database_test_case
$this->db_tools->sql_column_remove('phpbb_config', 'extra_column');
}
public function test_unfulfillable()
/**
* @expectedException \phpbb\db\migration\exception
*/
public function test_unfulfillable_exception()
{
$this->migrator->set_migrations(array('phpbb_dbal_migration_unfulfillable', 'phpbb_dbal_migration_dummy'));
}
public function test_unfulfillable()
{
$this->migrator->set_migrations(array('phpbb_dbal_migration_unfulfillable', 'phpbb_dbal_migration_dummy'), false);
while (!$this->migrator->finished())
{