1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-30 21:40:43 +02:00

[ticket/11700] Correctly load extensions with nonprefixed namespaces

PHPBB3-11700
This commit is contained in:
Nils Adermann
2013-09-17 16:15:44 +02:00
parent d12f358855
commit c4b53490ad
29 changed files with 111 additions and 72 deletions

View File

@@ -60,13 +60,13 @@ class phpbb_class_loader_test extends PHPUnit_Framework_TestCase
{
$cache_map = array(
'class_loader_phpbb__' => array('phpbb\\a\\cached_name' => 'a/cached_name'),
'class_loader_phpbb__ext__' => array('phpbb\\ext\\foo' => 'foo'),
'class_loader___' => array('phpbb\\ext\\foo' => 'foo'),
);
$cache = new phpbb_mock_cache($cache_map);
$prefix = dirname(__FILE__) . '/';
$class_loader = new \phpbb\class_loader('phpbb\\', $prefix . 'phpbb/', 'php', $cache);
$class_loader_ext = new \phpbb\class_loader('phpbb\\ext\\', $prefix . 'phpbb/', 'php', $cache);
$class_loader_ext = new \phpbb\class_loader('\\', $prefix . 'phpbb/', 'php', $cache);
$prefix .= 'phpbb/';

View File

@@ -1,6 +1,8 @@
<?php
class phpbb_ext_bar_ext extends \phpbb\extension\base
namespace bar;
class ext extends \phpbb\extension\base
{
static public $state;

View File

@@ -1,11 +1,13 @@
<?php
class phpbb_ext_barfoo_acp_a_info
namespace barfoo\acp;
class a_info
{
public function module()
{
return array(
'filename' => 'phpbb_ext_barfoo_acp_a_module',
'filename' => 'barfoo\\acp\\a_module',
'title' => 'Barfoo',
'version' => '3.1.0-dev',
'modes' => array(

View File

@@ -1,5 +1,7 @@
<?php
class phpbb_ext_barfoo_acp_a_module
namespace barfoo\acp;
class a_module
{
}

View File

@@ -1,5 +1,7 @@
<?php
class phpbb_ext_barfoo_ext extends \phpbb\extension\base
namespace barfoo;
class ext extends \phpbb\extension\base
{
}

View File

@@ -1,5 +1,7 @@
<?php
class phpbb_ext_foo_a_class
namespace foo;
class a_class
{
}

View File

@@ -1,11 +1,13 @@
<?php
class phpbb_ext_foo_acp_a_info
namespace foo\acp;
class a_info
{
public function module()
{
return array(
'filename' => 'phpbb_ext_foo_acp_a_module',
'filename' => 'foo\\acp\\a_module',
'title' => 'Foobar',
'version' => '3.1.0-dev',
'modes' => array(

View File

@@ -1,5 +1,7 @@
<?php
class phpbb_ext_foo_acp_a_module
namespace foo\acp;
class a_module
{
}

View File

@@ -1,9 +1,12 @@
<?php
namespace foo\acp;
/*
* Due to the mismatch between the class name and the file name, this module
* file shouldn't be found by the extension finder
*/
class phpbb_ext_foo_acp_foo_info
class foo_info
{
public function module()
{

View File

@@ -1,8 +1,11 @@
<?php
namespace foo\acp;
/*
* Due to the mismatch between the class name and the file name of the module
* info file, this module's info file shouldn't be found
*/
class phpbb_ext_foo_acp_fail_module
class fail_module
{
}

View File

@@ -1,5 +1,7 @@
<?php
class phpbb_ext_foo_b_class
namespace foo;
class b_class
{
}

View File

@@ -1,6 +1,8 @@
<?php
class phpbb_ext_foo_ext extends \phpbb\extension\base
namespace foo;
class ext extends \phpbb\extension\base
{
static public $disabled;

View File

@@ -1,11 +1,13 @@
<?php
class phpbb_ext_foo_mcp_a_info
namespace foo\mcp;
class a_info
{
public function module()
{
return array(
'filename' => 'phpbb_ext_foo_mcp_a_module',
'filename' => 'foo\\mcp\\a_module',
'title' => 'Foobar',
'version' => '3.1.0-dev',
'modes' => array(

View File

@@ -1,5 +1,7 @@
<?php
class phpbb_ext_foo_mcp_a_module
namespace foo\mcp;
class a_module
{
}

View File

@@ -1,5 +1,7 @@
<?php
class phpbb_ext_foo_sub_type_alternative
namespace foo\sub\type;
class alternative
{
}

View File

@@ -1,5 +1,7 @@
<?php
class phpbb_ext_foo_type_alternative
namespace foo\type;
class alternative
{
}

View File

@@ -1,5 +1,7 @@
<?php
class phpbb_ext_foo_typewrong_error
namespace foo\typewrong;
class error
{
}

View File

@@ -1,6 +1,8 @@
<?php
class phpbb_ext_vendor_moo_ext extends \phpbb\extension\base
namespace vendor\moo;
class ext extends \phpbb\extension\base
{
static public $purged;

View File

@@ -1,5 +1,7 @@
<?php
class phpbb_ext_vendor_moo_feature_class
namespace vendor\moo;
class feature_class
{
}

View File

@@ -43,10 +43,10 @@ class phpbb_extension_finder_test extends phpbb_test_case
sort($classes);
$this->assertEquals(
array(
'bar\my\hidden_class',
'foo\a_class',
'foo\b_class',
'phpbb\default\implementation',
'phpbb\ext\bar\my\hidden_class',
'phpbb\ext\foo\a_class',
'phpbb\ext\foo\b_class',
),
$classes
);
@@ -88,8 +88,8 @@ class phpbb_extension_finder_test extends phpbb_test_case
sort($classes);
$this->assertEquals(
array(
'bar\my\hidden_class',
'phpbb\default\implementation',
'phpbb\ext\bar\my\hidden_class',
),
$classes
);
@@ -105,9 +105,9 @@ class phpbb_extension_finder_test extends phpbb_test_case
sort($classes);
$this->assertEquals(
array(
'foo\sub\type\alternative',
'foo\type\alternative',
'phpbb\default\implementation',
'phpbb\ext\foo\sub\type\alternative',
'phpbb\ext\foo\type\alternative',
),
$classes
);
@@ -122,7 +122,7 @@ class phpbb_extension_finder_test extends phpbb_test_case
sort($classes);
$this->assertEquals(
array(
'phpbb\ext\foo\type\alternative',
'foo\type\alternative',
),
$classes
);
@@ -137,7 +137,7 @@ class phpbb_extension_finder_test extends phpbb_test_case
sort($classes);
$this->assertEquals(
array(
'phpbb\ext\foo\sub\type\alternative',
'foo\sub\type\alternative',
),
$classes
);
@@ -152,7 +152,7 @@ class phpbb_extension_finder_test extends phpbb_test_case
sort($classes);
$this->assertEquals(
array(
'phpbb\ext\foo\sub\type\alternative',
'foo\sub\type\alternative',
),
$classes
);
@@ -168,8 +168,8 @@ class phpbb_extension_finder_test extends phpbb_test_case
sort($classes);
$this->assertEquals(
array(
'phpbb\ext\foo\type\alternative',
'phpbb\ext\foo\type\dummy\empty',
'foo\type\alternative',
'foo\type\dummy\empty',
),
$classes
);

View File

@@ -45,31 +45,31 @@ class phpbb_extension_manager_test extends phpbb_database_test_case
public function test_enable()
{
phpbb_ext_bar_ext::$state = 0;
bar\ext::$state = 0;
$this->assertEquals(array('foo'), array_keys($this->extension_manager->all_enabled()));
$this->extension_manager->enable('bar');
$this->assertEquals(array('bar', 'foo'), array_keys($this->extension_manager->all_enabled()));
$this->assertEquals(array('bar', 'foo', 'vendor/moo'), array_keys($this->extension_manager->all_configured()));
$this->assertEquals(4, phpbb_ext_bar_ext::$state);
$this->assertEquals(4, bar\ext::$state);
}
public function test_disable()
{
phpbb_ext_foo_ext::$disabled = false;
foo\ext::$disabled = false;
$this->assertEquals(array('foo'), array_keys($this->extension_manager->all_enabled()));
$this->extension_manager->disable('foo');
$this->assertEquals(array(), array_keys($this->extension_manager->all_enabled()));
$this->assertEquals(array('foo', 'vendor/moo'), array_keys($this->extension_manager->all_configured()));
$this->assertTrue(phpbb_ext_foo_ext::$disabled);
$this->assertTrue(foo\ext::$disabled);
}
public function test_purge()
{
phpbb_ext_vendor_moo_ext::$purged = false;
vendor\moo\ext::$purged = false;
$this->assertEquals(array('foo'), array_keys($this->extension_manager->all_enabled()));
$this->assertEquals(array('foo', 'vendor/moo'), array_keys($this->extension_manager->all_configured()));
@@ -77,7 +77,7 @@ class phpbb_extension_manager_test extends phpbb_database_test_case
$this->assertEquals(array('foo'), array_keys($this->extension_manager->all_enabled()));
$this->assertEquals(array('foo'), array_keys($this->extension_manager->all_configured()));
$this->assertTrue(phpbb_ext_vendor_moo_ext::$purged);
$this->assertTrue(vendor\moo\ext::$purged);
}
public function test_enabled_no_cache()

View File

@@ -45,7 +45,7 @@ class phpbb_extension_modules_test extends phpbb_test_case
{
global $phpbb_root_path;
$this->markTestIncomplete('Modules no speak namespace! Going to get rid of db modules altogether and fix this test after.');
// $this->markTestIncomplete('Modules no speak namespace! Going to get rid of db modules altogether and fix this test after.');
// Correctly set the root path for this test to this directory, so the classes can be found
$phpbb_root_path = dirname(__FILE__) . '/';
@@ -54,8 +54,8 @@ class phpbb_extension_modules_test extends phpbb_test_case
$this->acp_modules->module_class = 'acp';
$acp_modules = $this->acp_modules->get_module_infos();
$this->assertEquals(array(
'phpbb_ext_foo_acp_a_module' => array(
'filename' => 'phpbb_ext_foo_acp_a_module',
'foo\\acp\\a_module' => array(
'filename' => 'foo\\acp\\a_module',
'title' => 'Foobar',
'version' => '3.1.0-dev',
'modes' => array(
@@ -76,8 +76,8 @@ class phpbb_extension_modules_test extends phpbb_test_case
$this->acp_modules->module_class = 'mcp';
$acp_modules = $this->acp_modules->get_module_infos();
$this->assertEquals(array(
'phpbb_ext_foo_mcp_a_module' => array(
'filename' => 'phpbb_ext_foo_mcp_a_module',
'foo\\mcp\\a_module' => array(
'filename' => 'foo\\mcp\\a_module',
'title' => 'Foobar',
'version' => '3.1.0-dev',
'modes' => array(
@@ -90,8 +90,8 @@ class phpbb_extension_modules_test extends phpbb_test_case
$this->acp_modules->module_class = 'mcp';
$acp_modules = $this->acp_modules->get_module_infos('mcp_a_module');
$this->assertEquals(array(
'phpbb_ext_foo_mcp_a_module' => array(
'filename' => 'phpbb_ext_foo_mcp_a_module',
'foo\\mcp\\a_module' => array(
'filename' => 'foo\\mcp\\a_module',
'title' => 'Foobar',
'version' => '3.1.0-dev',
'modes' => array(
@@ -104,8 +104,8 @@ class phpbb_extension_modules_test extends phpbb_test_case
$this->acp_modules->module_class = '';
$acp_modules = $this->acp_modules->get_module_infos('mcp_a_module', 'mcp');
$this->assertEquals(array(
'phpbb_ext_foo_mcp_a_module' => array(
'filename' => 'phpbb_ext_foo_mcp_a_module',
'foo\\mcp\\a_module' => array(
'filename' => 'foo\\mcp\\a_module',
'title' => 'Foobar',
'version' => '3.1.0-dev',
'modes' => array(
@@ -126,10 +126,10 @@ class phpbb_extension_modules_test extends phpbb_test_case
// Get module info of specified extension module
$this->acp_modules->module_class = 'acp';
$acp_modules = $this->acp_modules->get_module_infos('phpbb_ext_foo_acp_a_module');
$acp_modules = $this->acp_modules->get_module_infos('foo_acp_a_module');
$this->assertEquals(array(
'phpbb_ext_foo_acp_a_module' => array (
'filename' => 'phpbb_ext_foo_acp_a_module',
'foo\\acp\\a_module' => array (
'filename' => 'foo\\acp\\a_module',
'title' => 'Foobar',
'version' => '3.1.0-dev',
'modes' => array (
@@ -152,8 +152,8 @@ class phpbb_extension_modules_test extends phpbb_test_case
$this->acp_modules->module_class = 'acp';
$acp_modules = $this->acp_modules->get_module_infos('', false, true);
$this->assertEquals(array(
'phpbb_ext_foo_acp_a_module' => array(
'filename' => 'phpbb_ext_foo_acp_a_module',
'foo\\acp\\a_module' => array(
'filename' => 'foo\\acp\\a_module',
'title' => 'Foobar',
'version' => '3.1.0-dev',
'modes' => array(
@@ -168,8 +168,8 @@ class phpbb_extension_modules_test extends phpbb_test_case
'test' => array('title' => 'Test', 'auth' => '', 'cat' => array('ACP_GENERAL')),
),
),
'phpbb_ext_barfoo_acp_a_module' => array(
'filename' => 'phpbb_ext_barfoo_acp_a_module',
'barfoo\\acp\\a_module' => array(
'filename' => 'barfoo\\acp\\a_module',
'title' => 'Barfoo',
'version' => '3.1.0-dev',
'modes' => array(
@@ -179,10 +179,10 @@ class phpbb_extension_modules_test extends phpbb_test_case
), $acp_modules);
// Specific module set to disabled extension
$acp_modules = $this->acp_modules->get_module_infos('phpbb_ext_barfoo_acp_a_module', 'acp', true);
$acp_modules = $this->acp_modules->get_module_infos('barfoo_acp_a_module', 'acp', true);
$this->assertEquals(array(
'phpbb_ext_barfoo_acp_a_module' => array(
'filename' => 'phpbb_ext_barfoo_acp_a_module',
'barfoo\\acp\\a_module' => array(
'filename' => 'barfoo\\acp\\a_module',
'title' => 'Barfoo',
'version' => '3.1.0-dev',
'modes' => array(