diff options
author | Marc Alexander <admin@m-a-styles.de> | 2020-01-01 16:17:23 +0100 |
---|---|---|
committer | Marc Alexander <admin@m-a-styles.de> | 2020-01-01 16:17:23 +0100 |
commit | 2b65ce123cec682a7b1b6037c93259bc5abccb44 (patch) | |
tree | ee453146d5aef42038ab20d2e1e84dacab4c492f | |
parent | [ticket/16284] Add effectively installed checks where applicable (diff) | |
download | phpbb-2b65ce123cec682a7b1b6037c93259bc5abccb44.tar.gz phpbb-2b65ce123cec682a7b1b6037c93259bc5abccb44.tar.bz2 phpbb-2b65ce123cec682a7b1b6037c93259bc5abccb44.zip |
[ticket/16284] Adjust create schema and add tables to tests
PHPBB3-16284
-rw-r--r-- | phpBB/config/installer/container/services_install_database.yml | 1 | ||||
-rw-r--r-- | phpBB/develop/create_schema_files.php | 10 | ||||
-rw-r--r-- | phpBB/phpbb/db/migration/schema_generator.php | 20 | ||||
-rw-r--r-- | phpBB/phpbb/install/module/install_database/task/create_schema.php | 54 | ||||
-rw-r--r-- | phpBB/phpbb/install/module/install_database/task/create_schema_file.php | 10 | ||||
-rw-r--r-- | tests/dbal/migrator_test.php | 1 | ||||
-rw-r--r-- | tests/extension/manager_test.php | 1 | ||||
-rw-r--r-- | tests/extension/metadata_manager_test.php | 1 | ||||
-rw-r--r-- | tests/migrator/convert_timezones_test.php | 3 | ||||
-rw-r--r-- | tests/migrator/get_callable_from_step_test.php | 1 | ||||
-rw-r--r-- | tests/migrator/schema_generator_test.php | 2 | ||||
-rw-r--r-- | tests/notification/convert_test.php | 3 | ||||
-rw-r--r-- | tests/test_framework/phpbb_database_test_case.php | 22 | ||||
-rw-r--r-- | tests/test_framework/phpbb_database_test_connection_manager.php | 3 | ||||
-rw-r--r-- | tests/test_framework/phpbb_functional_test_case.php | 1 | ||||
-rw-r--r-- | tests/test_framework/phpbb_ui_test_case.php | 1 |
16 files changed, 103 insertions, 31 deletions
diff --git a/phpBB/config/installer/container/services_install_database.yml b/phpBB/config/installer/container/services_install_database.yml index 33f596506d..bc35c6af4e 100644 --- a/phpBB/config/installer/container/services_install_database.yml +++ b/phpBB/config/installer/container/services_install_database.yml @@ -7,6 +7,7 @@ services: - '@filesystem' - '%core.root_path%' - '%core.php_ext%' + - '%tables%' tags: - { name: install_database_install, order: 10 } diff --git a/phpBB/develop/create_schema_files.php b/phpBB/develop/create_schema_files.php index fe2b2154a5..311b2fc94a 100644 --- a/phpBB/develop/create_schema_files.php +++ b/phpBB/develop/create_schema_files.php @@ -52,7 +52,15 @@ $db = new \phpbb\db\driver\sqlite3(); $factory = new \phpbb\db\tools\factory(); $db_tools = $factory->get($db, true); -$schema_generator = new \phpbb\db\migration\schema_generator($classes, new \phpbb\config\config(array()), $db, $db_tools, $phpbb_root_path, $phpEx, $table_prefix); +$tables_data = \Symfony\Component\Yaml\Yaml::parseFile($phpbb_root_path . '/config/default/container/tables.yml'); +$tables = []; + +foreach ($tables_data['parameters'] as $parameter => $table) +{ + $tables[str_replace('tables.', '', $parameter)] = str_replace('%core.table_prefix%', $table_prefix, $table); +} + +$schema_generator = new \phpbb\db\migration\schema_generator($classes, new \phpbb\config\config(array()), $db, $db_tools, $phpbb_root_path, $phpEx, $table_prefix, $tables); $schema_data = $schema_generator->get_schema(); $fp = fopen($schema_path . 'schema.json', 'wb'); diff --git a/phpBB/phpbb/db/migration/schema_generator.php b/phpBB/phpbb/db/migration/schema_generator.php index c579e25824..0d1f6e33b1 100644 --- a/phpBB/phpbb/db/migration/schema_generator.php +++ b/phpBB/phpbb/db/migration/schema_generator.php @@ -43,12 +43,23 @@ class schema_generator protected $tables; /** @var array */ + protected $table_names; + + /** @var array */ protected $dependencies = array(); /** - * Constructor - */ - public function __construct(array $class_names, \phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, \phpbb\db\tools\tools_interface $db_tools, $phpbb_root_path, $php_ext, $table_prefix) + * Constructor + * @param array $class_names + * @param \phpbb\config\config $config + * @param \phpbb\db\driver\driver_interface $db + * @param \phpbb\db\tools\tools_interface $db_tools + * @param string $phpbb_root_path + * @param string $php_ext + * @param string $table_prefix + * @param array $tables + */ + public function __construct(array $class_names, \phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, \phpbb\db\tools\tools_interface $db_tools, $phpbb_root_path, $php_ext, $table_prefix, $tables) { $this->config = $config; $this->db = $db; @@ -57,6 +68,7 @@ class schema_generator $this->phpbb_root_path = $phpbb_root_path; $this->php_ext = $php_ext; $this->table_prefix = $table_prefix; + $this->table_names = $tables; } /** @@ -90,7 +102,7 @@ class schema_generator if (empty($open_dependencies)) { - $migration = new $migration_class($this->config, $this->db, $this->db_tools, $this->phpbb_root_path, $this->php_ext, $this->table_prefix); + $migration = new $migration_class($this->config, $this->db, $this->db_tools, $this->phpbb_root_path, $this->php_ext, $this->table_prefix, $this->table_names); $tree[] = $migration_class; $migration_key = array_search($migration_class, $migrations); diff --git a/phpBB/phpbb/install/module/install_database/task/create_schema.php b/phpBB/phpbb/install/module/install_database/task/create_schema.php index 204fddb20e..46529d1542 100644 --- a/phpBB/phpbb/install/module/install_database/task/create_schema.php +++ b/phpBB/phpbb/install/module/install_database/task/create_schema.php @@ -13,7 +13,14 @@ namespace phpbb\install\module\install_database\task; +use phpbb\db\driver\driver_interface; +use phpbb\db\migration\schema_generator; +use phpbb\db\tools\tools_interface; +use phpbb\filesystem\filesystem_interface; use phpbb\install\exception\resource_limit_reached_exception; +use phpbb\install\helper\config; +use phpbb\install\helper\database; +use phpbb\install\helper\iohandler\iohandler_interface; /** * Create database schema @@ -21,32 +28,32 @@ use phpbb\install\exception\resource_limit_reached_exception; class create_schema extends \phpbb\install\task_base { /** - * @var \phpbb\install\helper\config + * @var config */ protected $config; /** - * @var \phpbb\db\driver\driver_interface + * @var driver_interface */ protected $db; /** - * @var \phpbb\db\tools\tools_interface + * @var tools_interface */ protected $db_tools; /** - * @var \phpbb\install\helper\database + * @var database */ protected $database_helper; /** - * @var \phpbb\filesystem\filesystem_interface + * @var filesystem_interface */ protected $filesystem; /** - * @var \phpbb\install\helper\iohandler\iohandler_interface + * @var iohandler_interface */ protected $iohandler; @@ -61,21 +68,28 @@ class create_schema extends \phpbb\install\task_base protected $php_ext; /** + * @var array + */ + protected $tables; + + /** * Constructor * - * @param \phpbb\install\helper\config $config Installer's config provider - * @param \phpbb\install\helper\database $db_helper Installer's database helper - * @param \phpbb\filesystem\filesystem_interface $filesystem Filesystem service - * @param \phpbb\install\helper\iohandler\iohandler_interface $iohandler Installer's input-output handler - * @param string $phpbb_root_path Path phpBB's root - * @param string $php_ext Extension of PHP files + * @param config $config Installer's config provider + * @param database $db_helper Installer's database helper + * @param filesystem_interface $filesystem Filesystem service + * @param iohandler_interface $iohandler Installer's input-output handler + * @param string $phpbb_root_path Path phpBB's root + * @param string $php_ext Extension of PHP files + * @param array $tables Tables array */ - public function __construct(\phpbb\install\helper\config $config, - \phpbb\install\helper\database $db_helper, - \phpbb\filesystem\filesystem_interface $filesystem, - \phpbb\install\helper\iohandler\iohandler_interface $iohandler, + public function __construct(config $config, + database $db_helper, + filesystem_interface $filesystem, + iohandler_interface $iohandler, $phpbb_root_path, - $php_ext) + $php_ext, + $tables) { $dbms = $db_helper->get_available_dbms($config->get('dbms')); $dbms = $dbms[$config->get('dbms')]['DRIVER']; @@ -99,6 +113,7 @@ class create_schema extends \phpbb\install\task_base $this->iohandler = $iohandler; $this->phpbb_root_path = $phpbb_root_path; $this->php_ext = $php_ext; + $this->tables = $tables; parent::__construct(true); } @@ -180,14 +195,15 @@ class create_schema extends \phpbb\install\task_base $migrator_classes = $finder->core_path('phpbb/db/migration/data/')->get_classes(); $factory = new \phpbb\db\tools\factory(); $db_tools = $factory->get($this->db, true); - $schema_generator = new \phpbb\db\migration\schema_generator( + $schema_generator = new schema_generator( $migrator_classes, new \phpbb\config\config(array()), $this->db, $db_tools, $this->phpbb_root_path, $this->php_ext, - $table_prefix + $table_prefix, + $this->tables ); $db_table_schema = $schema_generator->get_schema(); } diff --git a/phpBB/phpbb/install/module/install_database/task/create_schema_file.php b/phpBB/phpbb/install/module/install_database/task/create_schema_file.php index 81db66e11e..4dfaa07ebf 100644 --- a/phpBB/phpbb/install/module/install_database/task/create_schema_file.php +++ b/phpBB/phpbb/install/module/install_database/task/create_schema_file.php @@ -121,6 +121,13 @@ class create_schema_file extends \phpbb\install\task_base $migrator_classes = $finder->core_path('phpbb/db/migration/data/')->get_classes(); $factory = new \phpbb\db\tools\factory(); $db_tools = $factory->get($this->db, true); + $tables_data = \Symfony\Component\Yaml\Yaml::parseFile($this->phpbb_root_path . '/config/default/container/tables.yml'); + $tables = []; + foreach ($tables_data['parameters'] as $parameter => $table) + { + $tables[str_replace('tables.', '', $parameter)] = str_replace('%core.table_prefix%', $table_prefix, $table); + } + $schema_generator = new \phpbb\db\migration\schema_generator( $migrator_classes, new \phpbb\config\config(array()), @@ -128,7 +135,8 @@ class create_schema_file extends \phpbb\install\task_base $db_tools, $this->phpbb_root_path, $this->php_ext, - $table_prefix + $table_prefix, + $tables ); $db_table_schema = $schema_generator->get_schema(); $db_table_schema = json_encode($db_table_schema, JSON_PRETTY_PRINT); diff --git a/tests/dbal/migrator_test.php b/tests/dbal/migrator_test.php index 1f6cf3c8a3..947da726b3 100644 --- a/tests/dbal/migrator_test.php +++ b/tests/dbal/migrator_test.php @@ -69,6 +69,7 @@ class phpbb_dbal_migrator_test extends phpbb_database_test_case dirname(__FILE__) . '/../../phpBB/', 'php', 'phpbb_', + self::get_core_tables(), $tools, new \phpbb\db\migration\helper() ); diff --git a/tests/extension/manager_test.php b/tests/extension/manager_test.php index 128192fa0c..5eac7d1951 100644 --- a/tests/extension/manager_test.php +++ b/tests/extension/manager_test.php @@ -167,6 +167,7 @@ class phpbb_extension_manager_test extends phpbb_database_test_case $phpbb_root_path, $php_ext, $table_prefix, + self::get_core_tables(), array(), new \phpbb\db\migration\helper() ); diff --git a/tests/extension/metadata_manager_test.php b/tests/extension/metadata_manager_test.php index 38b821c7b4..2e1a85a013 100644 --- a/tests/extension/metadata_manager_test.php +++ b/tests/extension/metadata_manager_test.php @@ -87,6 +87,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case $this->phpbb_root_path, 'php', $this->table_prefix, + self::get_core_tables(), array(), new \phpbb\db\migration\helper() ); diff --git a/tests/migrator/convert_timezones_test.php b/tests/migrator/convert_timezones_test.php index 4bb0aec34f..5bb8d7ab93 100644 --- a/tests/migrator/convert_timezones_test.php +++ b/tests/migrator/convert_timezones_test.php @@ -64,7 +64,8 @@ class phpbb_migrator_convert_timezones_test extends phpbb_database_test_case $factory->get($this->db), $phpbb_root_path, $phpEx, - 'phpbb_' + 'phpbb_', + self::get_core_tables() ); } diff --git a/tests/migrator/get_callable_from_step_test.php b/tests/migrator/get_callable_from_step_test.php index b0abb6199c..809b977d57 100644 --- a/tests/migrator/get_callable_from_step_test.php +++ b/tests/migrator/get_callable_from_step_test.php @@ -43,6 +43,7 @@ class get_callable_from_step_test extends phpbb_database_test_case $phpbb_root_path, $php_ext, $table_prefix, + self::get_core_tables(), array($module_tools), new \phpbb\db\migration\helper() ); diff --git a/tests/migrator/schema_generator_test.php b/tests/migrator/schema_generator_test.php index 1349b98953..dd7158cbfd 100644 --- a/tests/migrator/schema_generator_test.php +++ b/tests/migrator/schema_generator_test.php @@ -41,7 +41,7 @@ class schema_generator_test extends phpbb_test_case protected function get_schema_generator(array $class_names) { - $this->generator = new \phpbb\db\migration\schema_generator($class_names, $this->config, $this->db, $this->db_tools, $this->phpbb_root_path, $this->php_ext, $this->table_prefix); + $this->generator = new \phpbb\db\migration\schema_generator($class_names, $this->config, $this->db, $this->db_tools, $this->phpbb_root_path, $this->php_ext, $this->table_prefix, phpbb_database_test_case::get_core_tables()); return $this->generator; } diff --git a/tests/notification/convert_test.php b/tests/notification/convert_test.php index d4a33ff537..d1707cc70f 100644 --- a/tests/notification/convert_test.php +++ b/tests/notification/convert_test.php @@ -36,7 +36,8 @@ class phpbb_notification_convert_test extends phpbb_database_test_case $factory->get($this->db), $phpbb_root_path, $phpEx, - 'phpbb_' + 'phpbb_', + self::get_core_tables() ); } diff --git a/tests/test_framework/phpbb_database_test_case.php b/tests/test_framework/phpbb_database_test_case.php index 0197b3c68d..5bce90990d 100644 --- a/tests/test_framework/phpbb_database_test_case.php +++ b/tests/test_framework/phpbb_database_test_case.php @@ -75,14 +75,13 @@ abstract class phpbb_database_test_case extends TestCase if (!file_exists(self::$schema_file)) { - global $table_prefix; $db = new \phpbb\db\driver\sqlite3(); $factory = new \phpbb\db\tools\factory(); $db_tools = $factory->get($db, true); - $schema_generator = new \phpbb\db\migration\schema_generator($classes, new \phpbb\config\config(array()), $db, $db_tools, $phpbb_root_path, $phpEx, $table_prefix); + $schema_generator = new \phpbb\db\migration\schema_generator($classes, new \phpbb\config\config(array()), $db, $db_tools, $phpbb_root_path, $phpEx, $table_prefix, self::get_core_tables()); file_put_contents(self::$schema_file, json_encode($schema_generator->get_schema())); } @@ -319,4 +318,23 @@ abstract class phpbb_database_test_case extends TestCase $this->assertTrue(true); } } + + static public function get_core_tables() : array + { + global $phpbb_root_path, $table_prefix; + + static $core_tables = []; + + if (empty($tables)) + { + $tables_yml_data = \Symfony\Component\Yaml\Yaml::parseFile($phpbb_root_path . '/config/default/container/tables.yml'); + + foreach ($tables_yml_data['parameters'] as $parameter => $table) + { + $core_tables[str_replace('tables.', '', $parameter)] = str_replace('%core.table_prefix%', $table_prefix, $table); + } + } + + return $core_tables; + } } diff --git a/tests/test_framework/phpbb_database_test_connection_manager.php b/tests/test_framework/phpbb_database_test_connection_manager.php index b6ad7e7838..e4c1a194cc 100644 --- a/tests/test_framework/phpbb_database_test_connection_manager.php +++ b/tests/test_framework/phpbb_database_test_connection_manager.php @@ -372,8 +372,9 @@ class phpbb_database_test_connection_manager $db = new \phpbb\db\driver\sqlite3(); $factory = new \phpbb\db\tools\factory(); $db_tools = $factory->get($db, true); + $tables = phpbb_database_test_case::get_core_tables(); - $schema_generator = new \phpbb\db\migration\schema_generator($classes, new \phpbb\config\config(array()), $db, $db_tools, $phpbb_root_path, $phpEx, $table_prefix); + $schema_generator = new \phpbb\db\migration\schema_generator($classes, new \phpbb\config\config(array()), $db, $db_tools, $phpbb_root_path, $phpEx, $table_prefix, $tables); $db_table_schema = $schema_generator->get_schema(); } diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php index 82f67c4e4c..2b17bd3c10 100644 --- a/tests/test_framework/phpbb_functional_test_case.php +++ b/tests/test_framework/phpbb_functional_test_case.php @@ -249,6 +249,7 @@ class phpbb_functional_test_case extends phpbb_test_case $phpbb_root_path, $phpEx, self::$config['table_prefix'], + phpbb_database_test_case::get_core_tables(), array(), new \phpbb\db\migration\helper() ); diff --git a/tests/test_framework/phpbb_ui_test_case.php b/tests/test_framework/phpbb_ui_test_case.php index 61db3da3e9..1fbfd22dbe 100644 --- a/tests/test_framework/phpbb_ui_test_case.php +++ b/tests/test_framework/phpbb_ui_test_case.php @@ -486,6 +486,7 @@ class phpbb_ui_test_case extends phpbb_test_case $phpbb_root_path, $phpEx, self::$config['table_prefix'], + phpbb_database_test_case::get_core_tables(), array(), new \phpbb\db\migration\helper() ); |