1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-04-21 08:12:17 +02:00

Merge PR #1119 branch 'develop-olympus' into develop

While merging into develop, also move self::$config['table_prefix']
initialization into setup before class from install_board, as
install_board is only called to install the board and not for each test case.

* develop-olympus:
  [ticket/10491] Make recreate_database static.
  [ticket/10491] Install board once per test run.
  [ticket/10491] Move board installation into setup before class.
  [ticket/10491] Set up functional tests sensibly.

Conflicts:
	tests/test_framework/phpbb_functional_test_case.php
This commit is contained in:
Oleg Pudeyev 2012-12-13 03:24:44 -05:00
commit 0916dc14ef

View File

@ -34,13 +34,36 @@ class phpbb_functional_test_case extends phpbb_test_case
static protected $config = array();
static protected $already_installed = false;
public function setUp()
static public function setUpBeforeClass()
{
parent::setUpBeforeClass();
self::$config = phpbb_test_case_helpers::get_test_config();
// Important: this is used both for installation and by
// test cases for querying the tables.
// Therefore table prefix must be set before a board is
// installed, and also before each test case is run.
self::$config['table_prefix'] = 'phpbb_';
if (!isset(self::$config['phpbb_functional_url']))
{
$this->markTestSkipped('phpbb_functional_url was not set in test_config and wasn\'t set as PHPBB_FUNCTIONAL_URL environment variable either.');
self::markTestSkipped('phpbb_functional_url was not set in test_config and wasn\'t set as PHPBB_FUNCTIONAL_URL environment variable either.');
}
if (!self::$already_installed)
{
self::install_board();
self::$already_installed = true;
}
}
public function setUp()
{
parent::setUp();
$this->bootstrap();
$this->cookieJar = new CookieJar;
$this->client = new Goutte\Client(array(), null, $this->cookieJar);
// Reset the curl handle because it is 0 at this point and not a valid
@ -73,13 +96,6 @@ class phpbb_functional_test_case extends phpbb_test_case
$this->backupStaticAttributesBlacklist += array(
'phpbb_functional_test_case' => array('config', 'already_installed'),
);
if (!static::$already_installed)
{
$this->install_board();
$this->bootstrap();
static::$already_installed = true;
}
}
protected function get_db()
@ -137,19 +153,11 @@ class phpbb_functional_test_case extends phpbb_test_case
return $this->extension_manager;
}
protected function install_board()
static protected function install_board()
{
global $phpbb_root_path, $phpEx;
self::$config = phpbb_test_case_helpers::get_test_config();
if (!isset(self::$config['phpbb_functional_url']))
{
return;
}
self::$config['table_prefix'] = 'phpbb_';
$this->recreate_database(self::$config);
self::recreate_database(self::$config);
if (file_exists($phpbb_root_path . "config.$phpEx"))
{
@ -194,19 +202,20 @@ class phpbb_functional_test_case extends phpbb_test_case
));
// end data
$content = $this->do_request('install');
$this->assertContains('Welcome to Installation', $content);
$content = self::do_request('install');
self::assertNotSame(false, $content);
self::assertContains('Welcome to Installation', $content);
$this->do_request('create_table', $data);
self::do_request('create_table', $data);
$this->do_request('config_file', $data);
self::do_request('config_file', $data);
file_put_contents($phpbb_root_path . "config.$phpEx", phpbb_create_config_file_data($data, self::$config['dbms'], true, true));
$this->do_request('final', $data);
self::do_request('final', $data);
copy($phpbb_root_path . "config.$phpEx", $phpbb_root_path . "config_test.$phpEx");
}
private function do_request($sub, $post_data = null)
static private function do_request($sub, $post_data = null)
{
$context = null;
@ -225,7 +234,7 @@ class phpbb_functional_test_case extends phpbb_test_case
return file_get_contents(self::$config['phpbb_functional_url'] . 'install/index.php?mode=install&sub=' . $sub, false, $context);
}
private function recreate_database($config)
static private function recreate_database($config)
{
$db_conn_mgr = new phpbb_database_test_connection_manager($config);
$db_conn_mgr->recreate_db();