mirror of
https://github.com/phpbb/phpbb.git
synced 2025-03-24 01:20:40 +01:00
Merge pull request #4871 from javiexin/ticket/15274
[ticket/15274] Allow "custom" migrations to use parameters * github.com:phpbb/phpbb: [ticket/15274] Allow "custom" migrations to use parameters [ticket/15274] Allow "custom" migrations to use parameters
This commit is contained in:
commit
6cdf94197f
@ -781,7 +781,7 @@ class migrator
|
||||
{
|
||||
return array(
|
||||
$parameters[0],
|
||||
array($last_result),
|
||||
isset($parameters[1]) ? array_merge($parameters[1], array($last_result)) : array($last_result),
|
||||
);
|
||||
}
|
||||
break;
|
||||
|
@ -23,11 +23,11 @@ class phpbb_dbal_migration_if extends \phpbb\db\migration\migration
|
||||
return array(
|
||||
array('if', array(
|
||||
true,
|
||||
array('custom', array(array(&$this, 'test_true'))),
|
||||
array('custom', array(array($this, 'test_true'))),
|
||||
)),
|
||||
array('if', array(
|
||||
false,
|
||||
array('custom', array(array(&$this, 'test_false'))),
|
||||
array('custom', array(array($this, 'test_false'))),
|
||||
)),
|
||||
);
|
||||
}
|
||||
|
44
tests/dbal/migration/if_params.php
Normal file
44
tests/dbal/migration/if_params.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
class phpbb_dbal_migration_if_params extends \phpbb\db\migration\migration
|
||||
{
|
||||
function update_schema()
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
function update_data()
|
||||
{
|
||||
return array(
|
||||
array('if', array(
|
||||
true,
|
||||
array('custom', array(array($this, 'test'), array('true'))),
|
||||
)),
|
||||
array('if', array(
|
||||
false,
|
||||
array('custom', array(array($this, 'test'), array('false'))),
|
||||
)),
|
||||
);
|
||||
}
|
||||
|
||||
function test($param)
|
||||
{
|
||||
global $migrator_test_if_true_failed, $migrator_test_if_false_failed;
|
||||
|
||||
$var = 'migrator_test_if_' . $param . '_failed';
|
||||
|
||||
${$var} = !${$var};
|
||||
}
|
||||
|
||||
}
|
@ -21,7 +21,7 @@ class phpbb_dbal_migration_recall extends \phpbb\db\migration\migration
|
||||
function update_data()
|
||||
{
|
||||
return array(
|
||||
array('custom', array(array(&$this, 'test_call'))),
|
||||
array('custom', array(array($this, 'test_call'))),
|
||||
);
|
||||
}
|
||||
|
||||
|
42
tests/dbal/migration/recall_params.php
Normal file
42
tests/dbal/migration/recall_params.php
Normal file
@ -0,0 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
class phpbb_dbal_migration_recall_params extends \phpbb\db\migration\migration
|
||||
{
|
||||
function update_schema()
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
function update_data()
|
||||
{
|
||||
return array(
|
||||
array('custom', array(array($this, 'test_call'), array(5))),
|
||||
);
|
||||
}
|
||||
|
||||
// This function should be called 5 times
|
||||
function test_call($times, $input)
|
||||
{
|
||||
global $migrator_test_call_input;
|
||||
|
||||
$migrator_test_call_input = (int) $input;
|
||||
|
||||
if ($migrator_test_call_input < $times)
|
||||
{
|
||||
return ($migrator_test_call_input + 1);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
@ -15,6 +15,8 @@ require_once dirname(__FILE__) . '/migration/dummy.php';
|
||||
require_once dirname(__FILE__) . '/migration/unfulfillable.php';
|
||||
require_once dirname(__FILE__) . '/migration/if.php';
|
||||
require_once dirname(__FILE__) . '/migration/recall.php';
|
||||
require_once dirname(__FILE__) . '/migration/if_params.php';
|
||||
require_once dirname(__FILE__) . '/migration/recall_params.php';
|
||||
require_once dirname(__FILE__) . '/migration/revert.php';
|
||||
require_once dirname(__FILE__) . '/migration/revert_with_dependency.php';
|
||||
require_once dirname(__FILE__) . '/migration/fail.php';
|
||||
@ -185,6 +187,54 @@ class phpbb_dbal_migrator_test extends phpbb_database_test_case
|
||||
$this->assertSame(10, $migrator_test_call_input);
|
||||
}
|
||||
|
||||
public function test_if_params()
|
||||
{
|
||||
$this->migrator->set_migrations(array('phpbb_dbal_migration_if_params'));
|
||||
|
||||
// Don't like this, but I'm not sure there is any other way to do this
|
||||
global $migrator_test_if_true_failed, $migrator_test_if_false_failed;
|
||||
$migrator_test_if_true_failed = true;
|
||||
$migrator_test_if_false_failed = false;
|
||||
|
||||
while (!$this->migrator->finished())
|
||||
{
|
||||
$this->migrator->update();
|
||||
}
|
||||
|
||||
$this->assertFalse($migrator_test_if_true_failed, 'True test failed');
|
||||
$this->assertFalse($migrator_test_if_false_failed, 'False test failed');
|
||||
|
||||
while ($this->migrator->migration_state('phpbb_dbal_migration_if_params') !== false)
|
||||
{
|
||||
$this->migrator->revert('phpbb_dbal_migration_if_params');
|
||||
}
|
||||
|
||||
$this->assertFalse($migrator_test_if_true_failed, 'True test after revert failed');
|
||||
$this->assertFalse($migrator_test_if_false_failed, 'False test after revert failed');
|
||||
}
|
||||
|
||||
public function test_recall_params()
|
||||
{
|
||||
$this->migrator->set_migrations(array('phpbb_dbal_migration_recall_params'));
|
||||
|
||||
global $migrator_test_call_input;
|
||||
|
||||
// Run the schema first
|
||||
$this->migrator->update();
|
||||
|
||||
$i = 0;
|
||||
while (!$this->migrator->finished())
|
||||
{
|
||||
$this->migrator->update();
|
||||
|
||||
$this->assertSame($i, $migrator_test_call_input);
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
$this->assertSame(5, $migrator_test_call_input);
|
||||
}
|
||||
|
||||
public function test_revert()
|
||||
{
|
||||
global $migrator_test_revert_counter;
|
||||
|
Loading…
x
Reference in New Issue
Block a user