From 2d116ffede84fd8483de8bf093a695dae3ceb4dd Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Sat, 28 Jun 2014 13:06:46 +0200 Subject: [PATCH 1/3] [ticket/12783] Move phpbb/phpbb require version to extra PHPBB3-12783 --- phpBB/phpbb/extension/metadata_manager.php | 4 ++-- tests/extension/ext/barfoo/composer.json | 6 +++--- tests/extension/ext/vendor/moo/composer.json | 6 +++--- tests/extension/ext/vendor2/bar/composer.json | 6 +++--- tests/extension/ext/vendor2/foo/composer.json | 6 +++--- tests/extension/metadata_manager_test.php | 14 ++++++++++++++ .../functional/fixtures/ext/foo/bar/composer.json | 6 +++--- 7 files changed, 31 insertions(+), 17 deletions(-) diff --git a/phpBB/phpbb/extension/metadata_manager.php b/phpBB/phpbb/extension/metadata_manager.php index 014d8c79c7..1112d23457 100644 --- a/phpBB/phpbb/extension/metadata_manager.php +++ b/phpBB/phpbb/extension/metadata_manager.php @@ -306,7 +306,7 @@ class metadata_manager */ public function validate_require_phpbb() { - if (!isset($this->metadata['require']['phpbb/phpbb'])) + if (!isset($this->metadata['extra']['phpbb/phpbb'])) { return false; } @@ -369,7 +369,7 @@ class metadata_manager 'META_REQUIRE_PHP' => (isset($this->metadata['require']['php'])) ? htmlspecialchars($this->metadata['require']['php']) : '', 'META_REQUIRE_PHP_FAIL' => !$this->validate_require_php(), - 'META_REQUIRE_PHPBB' => (isset($this->metadata['require']['phpbb/phpbb'])) ? htmlspecialchars($this->metadata['require']['phpbb/phpbb']) : '', + 'META_REQUIRE_PHPBB' => (isset($this->metadata['extra']['phpbb/phpbb'])) ? htmlspecialchars($this->metadata['extra']['phpbb/phpbb']) : '', 'META_REQUIRE_PHPBB_FAIL' => !$this->validate_require_phpbb(), 'META_DISPLAY_NAME' => (isset($this->metadata['extra']['display-name'])) ? htmlspecialchars($this->metadata['extra']['display-name']) : '', diff --git a/tests/extension/ext/barfoo/composer.json b/tests/extension/ext/barfoo/composer.json index d88fd413c9..bbd76ae143 100644 --- a/tests/extension/ext/barfoo/composer.json +++ b/tests/extension/ext/barfoo/composer.json @@ -13,10 +13,10 @@ "role": "N/A" }], "require": { - "php": ">=5.3", - "phpbb/phpbb": "3.1.*@dev" + "php": ">=5.3" }, "extra": { - "display-name": "phpBB BarFoo Extension" + "display-name": "phpBB BarFoo Extension", + "phpbb/phpbb": "3.1.*@dev" } } diff --git a/tests/extension/ext/vendor/moo/composer.json b/tests/extension/ext/vendor/moo/composer.json index b8fc544c01..4ad91627d5 100644 --- a/tests/extension/ext/vendor/moo/composer.json +++ b/tests/extension/ext/vendor/moo/composer.json @@ -13,10 +13,10 @@ "role": "N/A" }], "require": { - "php": ">=5.3", - "phpbb/phpbb": "3.1.*@dev" + "php": ">=5.3" }, "extra": { - "display-name": "phpBB Moo Extension" + "display-name": "phpBB Moo Extension", + "phpbb/phpbb": "3.1.*@dev" } } diff --git a/tests/extension/ext/vendor2/bar/composer.json b/tests/extension/ext/vendor2/bar/composer.json index 215e7d59db..39c0560c36 100644 --- a/tests/extension/ext/vendor2/bar/composer.json +++ b/tests/extension/ext/vendor2/bar/composer.json @@ -12,10 +12,10 @@ "role": "N/A" }], "require": { - "php": ">=5.3", - "phpbb/phpbb": "3.1.*@dev" + "php": ">=5.3" }, "extra": { - "display-name": "phpBB Bar Extension" + "display-name": "phpBB Bar Extension", + "phpbb/phpbb": "3.1.*@dev" } } diff --git a/tests/extension/ext/vendor2/foo/composer.json b/tests/extension/ext/vendor2/foo/composer.json index 7b2a80f5d3..9ce7068afd 100644 --- a/tests/extension/ext/vendor2/foo/composer.json +++ b/tests/extension/ext/vendor2/foo/composer.json @@ -12,10 +12,10 @@ "role": "N/A" }], "require": { - "php": ">=5.3", - "phpbb/phpbb": "3.1.*@dev" + "php": ">=5.3" }, "extra": { - "display-name": "phpBB Foo Extension" + "display-name": "phpBB Foo Extension", + "phpbb/phpbb": "3.1.*@dev" } } diff --git a/tests/extension/metadata_manager_test.php b/tests/extension/metadata_manager_test.php index 3678ac0a3f..dc9b0c28df 100644 --- a/tests/extension/metadata_manager_test.php +++ b/tests/extension/metadata_manager_test.php @@ -296,6 +296,8 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case $manager->merge_metadata(array( 'require' => array( 'php' => '10.0.0', + ), + 'extra' => array( 'phpbb/phpbb' => '3.2.0', // config is set to 3.1.0 ), )); @@ -315,6 +317,8 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case $manager->merge_metadata(array( 'require' => array( 'php' => '5.3.0', + ), + 'extra' => array( 'phpbb/phpbb' => '3.1.0-beta', // config is set to 3.1.0 ), )); @@ -334,6 +338,8 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case $manager->merge_metadata(array( 'require' => array( 'php' => '>' . phpversion(), + ), + 'extra' => array( 'phpbb/phpbb' => '>3.1.0', // config is set to 3.1.0 ), )); @@ -353,6 +359,8 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case $manager->merge_metadata(array( 'require' => array( 'php' => '<' . phpversion(), + ), + 'extra' => array( 'phpbb/phpbb' => '<3.1.0', // config is set to 3.1.0 ), )); @@ -372,6 +380,8 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case $manager->merge_metadata(array( 'require' => array( 'php' => phpversion(), + ), + 'extra' => array( 'phpbb/phpbb' => '3.1.0', // config is set to 3.1.0 ), )); @@ -391,6 +401,8 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case $manager->merge_metadata(array( 'require' => array( 'php' => '>=' . phpversion(), + ), + 'extra' => array( 'phpbb/phpbb' => '>=3.1.0', // config is set to 3.1.0 ), )); @@ -410,6 +422,8 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case $manager->merge_metadata(array( 'require' => array( 'php' => '<=' . phpversion(), + ), + 'extra' => array( 'phpbb/phpbb' => '<=3.1.0', // config is set to 3.1.0 ), )); diff --git a/tests/functional/fixtures/ext/foo/bar/composer.json b/tests/functional/fixtures/ext/foo/bar/composer.json index 2f91426d2a..3e8e98e9bd 100644 --- a/tests/functional/fixtures/ext/foo/bar/composer.json +++ b/tests/functional/fixtures/ext/foo/bar/composer.json @@ -13,10 +13,10 @@ "role": "Developer" }], "require": { - "php": ">=5.3", - "phpbb/phpbb": "3.1.*@dev" + "php": ">=5.3" }, "extra": { - "display-name": "phpBB 3.1 Extension Testing" + "display-name": "phpBB 3.1 Extension Testing", + "phpbb/phpbb": "3.1.*@dev" } } From 07cb08fd18c51f09555cab6a3edb92daa617a4d0 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Sat, 28 Jun 2014 13:36:17 +0200 Subject: [PATCH 2/3] [ticket/12783] Correctly use dataProviders and mark tests as incomplete PHPBB3-12783 --- tests/extension/metadata_manager_test.php | 346 +++++++--------------- 1 file changed, 112 insertions(+), 234 deletions(-) diff --git a/tests/extension/metadata_manager_test.php b/tests/extension/metadata_manager_test.php index dc9b0c28df..5d691b1503 100644 --- a/tests/extension/metadata_manager_test.php +++ b/tests/extension/metadata_manager_test.php @@ -19,8 +19,11 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case protected $cache; protected $config; protected $db; + protected $db_tools; + protected $table_prefix; protected $phpbb_root_path; protected $phpEx; + protected $migrator; protected $template; protected $user; @@ -70,7 +73,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case new \phpbb\db\migration\helper() ); $container = new phpbb_mock_container_builder(); - $container->set('migrator', $migrator); + $container->set('migrator', $this->migrator); $this->extension_manager = new \phpbb\extension\manager( $container, @@ -96,9 +99,10 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case { $manager->get_metadata(); } - catch(\phpbb\extension\exception $e){} - - $this->assertEquals((string) $e, $this->user->lang('FILE_NOT_FOUND', $this->phpbb_root_path . $this->extension_manager->get_extension_path($ext_name) . 'composer.json')); + catch (\phpbb\extension\exception $e) + { + $this->assertEquals((string) $e, $this->user->lang('FILE_NOT_FOUND', $this->phpbb_root_path . $this->extension_manager->get_extension_path($ext_name) . 'composer.json')); + } } // Should be the same as a direct json_decode of the composer.json file @@ -112,7 +116,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case { $metadata = $manager->get_metadata(); } - catch(\phpbb\extension\exception $e) + catch (\phpbb\extension\exception $e) { $this->fail($e); } @@ -122,64 +126,42 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case $this->assertEquals($metadata, $json); } - public function test_validator_non_existant() + public function validator_non_existing_data() { - $ext_name = 'validator'; + return array( + array('name'), + array('type'), + array('license'), + array('version'), + ); + } - $manager = $this->get_metadata_manager($ext_name); - - // Non-existant data + /** + * @dataProvider validator_non_existing_data + */ + public function test_validator_non_existing($field_name) + { + $manager = $this->get_metadata_manager('validator'); try { - $manager->validate('name'); - + $manager->validate($field_name); $this->fail('Exception not triggered'); } catch(\phpbb\extension\exception $e) { - $this->assertEquals((string) $e, $this->user->lang('META_FIELD_NOT_SET', 'name')); - } - - try - { - $manager->validate('type'); - - $this->fail('Exception not triggered'); - } - catch(\phpbb\extension\exception $e) - { - $this->assertEquals((string) $e, $this->user->lang('META_FIELD_NOT_SET', 'type')); - } - - try - { - $manager->validate('license'); - - $this->fail('Exception not triggered'); - } - catch(\phpbb\extension\exception $e) - { - $this->assertEquals((string) $e, $this->user->lang('META_FIELD_NOT_SET', 'license')); - } - - try - { - $manager->validate('version'); - - $this->fail('Exception not triggered'); - } - catch(\phpbb\extension\exception $e) - { - $this->assertEquals((string) $e, $this->user->lang('META_FIELD_NOT_SET', 'version')); + $this->assertEquals((string) $e, $this->user->lang('META_FIELD_NOT_SET', $field_name)); } + } + public function test_validator_non_existing_authors() + { + $manager = $this->get_metadata_manager('validator'); try { $manager->validate_authors(); - $this->fail('Exception not triggered'); } - catch(\phpbb\extension\exception $e) + catch (\phpbb\extension\exception $e) { $this->assertEquals((string) $e, $this->user->lang('META_FIELD_NOT_SET', 'authors')); } @@ -193,72 +175,44 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case try { $manager->validate_authors(); - $this->fail('Exception not triggered'); } - catch(\phpbb\extension\exception $e) + catch (\phpbb\extension\exception $e) { $this->assertEquals((string) $e, $this->user->lang('META_FIELD_NOT_SET', 'author name')); } } - - public function test_validator_invalid() + public function validator_invalid_data() { - $ext_name = 'validator'; + return array( + array('name', 'asdf'), + array('type', 'asdf'), + array('license', ''), + array('version', ''), + ); + } - $manager = $this->get_metadata_manager($ext_name); + /** + * @dataProvider validator_invalid_data + */ + public function test_validator_invalid($field_name, $field_value) + { + $manager = $this->get_metadata_manager('validator'); // Invalid data $manager->set_metadata(array( - 'name' => 'asdf', - 'type' => 'asdf', - 'license' => '', - 'version' => '', + $field_name => $field_value, )); try { - $manager->validate('name'); - + $manager->validate($field_name); $this->fail('Exception not triggered'); } catch(\phpbb\extension\exception $e) { - $this->assertEquals((string) $e, $this->user->lang('META_FIELD_INVALID', 'name')); - } - - try - { - $manager->validate('type'); - - $this->fail('Exception not triggered'); - } - catch(\phpbb\extension\exception $e) - { - $this->assertEquals((string) $e, $this->user->lang('META_FIELD_INVALID', 'type')); - } - - try - { - $manager->validate('license'); - - $this->fail('Exception not triggered'); - } - catch(\phpbb\extension\exception $e) - { - $this->assertEquals((string) $e, $this->user->lang('META_FIELD_INVALID', 'license')); - } - - try - { - $manager->validate('version'); - - $this->fail('Exception not triggered'); - } - catch(\phpbb\extension\exception $e) - { - $this->assertEquals((string) $e, $this->user->lang('META_FIELD_INVALID', 'version')); + $this->assertEquals((string) $e, $this->user->lang('META_FIELD_INVALID', $field_name)); } } @@ -286,157 +240,81 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case } } - - public function test_validator_requirements() + public function validator_requirements_data() { - $ext_name = 'validator'; + return array( + array( + '10.0.0', + '100.2.0', + false, + false, + 'Versions are not compared at the moment', + ), + array( + '5.3.0', + '3.1.0-beta', + true, + true, + ), + array( + '>' . phpversion(), + '>3.1.0', + false, + false, + 'Versions are not compared at the moment', + ), + array( + '<' . phpversion(), + '<3.1.0', + false, + false, + 'Versions are not compared at the moment', + ), + array( + phpversion(), + '3.1.0', + true, + true, + ), + array( + '>=' . phpversion(), + '>=3.1.0', + true, + true, + ), + array( + '<=' . phpversion(), + '<=3.1.0', + true, + true, + ), + ); + } + /** + * @dataProvider validator_requirements_data + */ + public function test_validator_requirements($php_version, $phpbb_version, $expected_php, $expected_phpbb, $incomplete_reason = '') + { + if ($incomplete_reason) + { + $this->markTestIncomplete($incomplete_reason); + } + + $ext_name = 'validator'; $manager = $this->get_metadata_manager($ext_name); // Too high of requirements $manager->merge_metadata(array( 'require' => array( - 'php' => '10.0.0', + 'php' => $php_version, ), 'extra' => array( - 'phpbb/phpbb' => '3.2.0', // config is set to 3.1.0 + 'phpbb/phpbb' => $phpbb_version, // config is set to 3.1.0 ), )); - try - { - //$this->assertEquals(false, $manager->validate_require_php()); - //$this->assertEquals(false, $manager->validate_require_phpbb()); - } - catch(\phpbb\extension\exception $e) - { - $this->fail($e); - } - - - // Too high of requirements - $manager->merge_metadata(array( - 'require' => array( - 'php' => '5.3.0', - ), - 'extra' => array( - 'phpbb/phpbb' => '3.1.0-beta', // config is set to 3.1.0 - ), - )); - - try - { - $this->assertEquals(true, $manager->validate_require_php()); - $this->assertEquals(true, $manager->validate_require_phpbb()); - } - catch(\phpbb\extension\exception $e) - { - $this->fail($e); - } - - - // Too high of requirements - $manager->merge_metadata(array( - 'require' => array( - 'php' => '>' . phpversion(), - ), - 'extra' => array( - 'phpbb/phpbb' => '>3.1.0', // config is set to 3.1.0 - ), - )); - - try - { - //$this->assertEquals(false, $manager->validate_require_php()); - //$this->assertEquals(false, $manager->validate_require_phpbb()); - } - catch(\phpbb\extension\exception $e) - { - $this->fail($e); - } - - - // Too high of current install - $manager->merge_metadata(array( - 'require' => array( - 'php' => '<' . phpversion(), - ), - 'extra' => array( - 'phpbb/phpbb' => '<3.1.0', // config is set to 3.1.0 - ), - )); - - try - { - //$this->assertEquals(false, $manager->validate_require_php()); - //$this->assertEquals(false, $manager->validate_require_phpbb()); - } - catch(\phpbb\extension\exception $e) - { - $this->fail($e); - } - - - // Matching requirements - $manager->merge_metadata(array( - 'require' => array( - 'php' => phpversion(), - ), - 'extra' => array( - 'phpbb/phpbb' => '3.1.0', // config is set to 3.1.0 - ), - )); - - try - { - $this->assertEquals(true, $manager->validate_require_php()); - $this->assertEquals(true, $manager->validate_require_phpbb()); - } - catch(\phpbb\extension\exception $e) - { - $this->fail($e); - } - - - // Matching requirements - $manager->merge_metadata(array( - 'require' => array( - 'php' => '>=' . phpversion(), - ), - 'extra' => array( - 'phpbb/phpbb' => '>=3.1.0', // config is set to 3.1.0 - ), - )); - - try - { - $this->assertEquals(true, $manager->validate_require_php()); - $this->assertEquals(true, $manager->validate_require_phpbb()); - } - catch(\phpbb\extension\exception $e) - { - $this->fail($e); - } - - - // Matching requirements - $manager->merge_metadata(array( - 'require' => array( - 'php' => '<=' . phpversion(), - ), - 'extra' => array( - 'phpbb/phpbb' => '<=3.1.0', // config is set to 3.1.0 - ), - )); - - try - { - $this->assertEquals(true, $manager->validate_require_php()); - $this->assertEquals(true, $manager->validate_require_phpbb()); - } - catch(\phpbb\extension\exception $e) - { - $this->fail($e); - } + $this->assertEquals($expected_php, $manager->validate_require_php()); + $this->assertEquals($expected_phpbb, $manager->validate_require_phpbb()); } /** From 3f0dec4ce69abeb1a3c4ca043dc1ff8783f1c06d Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Wed, 2 Jul 2014 16:23:20 +0200 Subject: [PATCH 3/3] [ticket/12783] Move phpbb requirement to extra->soft-require PHPBB3-12783 --- phpBB/phpbb/extension/metadata_manager.php | 4 ++-- tests/extension/ext/barfoo/composer.json | 4 +++- tests/extension/ext/vendor/moo/composer.json | 4 +++- tests/extension/ext/vendor2/bar/composer.json | 4 +++- tests/extension/ext/vendor2/foo/composer.json | 4 +++- tests/extension/metadata_manager_test.php | 4 +++- tests/functional/fixtures/ext/foo/bar/composer.json | 4 +++- 7 files changed, 20 insertions(+), 8 deletions(-) diff --git a/phpBB/phpbb/extension/metadata_manager.php b/phpBB/phpbb/extension/metadata_manager.php index 1112d23457..1051021ea7 100644 --- a/phpBB/phpbb/extension/metadata_manager.php +++ b/phpBB/phpbb/extension/metadata_manager.php @@ -306,7 +306,7 @@ class metadata_manager */ public function validate_require_phpbb() { - if (!isset($this->metadata['extra']['phpbb/phpbb'])) + if (!isset($this->metadata['extra']['soft-require']['phpbb/phpbb'])) { return false; } @@ -369,7 +369,7 @@ class metadata_manager 'META_REQUIRE_PHP' => (isset($this->metadata['require']['php'])) ? htmlspecialchars($this->metadata['require']['php']) : '', 'META_REQUIRE_PHP_FAIL' => !$this->validate_require_php(), - 'META_REQUIRE_PHPBB' => (isset($this->metadata['extra']['phpbb/phpbb'])) ? htmlspecialchars($this->metadata['extra']['phpbb/phpbb']) : '', + 'META_REQUIRE_PHPBB' => (isset($this->metadata['extra']['soft-require']['phpbb/phpbb'])) ? htmlspecialchars($this->metadata['extra']['soft-require']['phpbb/phpbb']) : '', 'META_REQUIRE_PHPBB_FAIL' => !$this->validate_require_phpbb(), 'META_DISPLAY_NAME' => (isset($this->metadata['extra']['display-name'])) ? htmlspecialchars($this->metadata['extra']['display-name']) : '', diff --git a/tests/extension/ext/barfoo/composer.json b/tests/extension/ext/barfoo/composer.json index bbd76ae143..05bb099707 100644 --- a/tests/extension/ext/barfoo/composer.json +++ b/tests/extension/ext/barfoo/composer.json @@ -17,6 +17,8 @@ }, "extra": { "display-name": "phpBB BarFoo Extension", - "phpbb/phpbb": "3.1.*@dev" + "soft-require": { + "phpbb/phpbb": "3.1.*@dev" + } } } diff --git a/tests/extension/ext/vendor/moo/composer.json b/tests/extension/ext/vendor/moo/composer.json index 4ad91627d5..d49aab47cd 100644 --- a/tests/extension/ext/vendor/moo/composer.json +++ b/tests/extension/ext/vendor/moo/composer.json @@ -17,6 +17,8 @@ }, "extra": { "display-name": "phpBB Moo Extension", - "phpbb/phpbb": "3.1.*@dev" + "soft-require": { + "phpbb/phpbb": "3.1.*@dev" + } } } diff --git a/tests/extension/ext/vendor2/bar/composer.json b/tests/extension/ext/vendor2/bar/composer.json index 39c0560c36..9d2ed86a0c 100644 --- a/tests/extension/ext/vendor2/bar/composer.json +++ b/tests/extension/ext/vendor2/bar/composer.json @@ -16,6 +16,8 @@ }, "extra": { "display-name": "phpBB Bar Extension", - "phpbb/phpbb": "3.1.*@dev" + "soft-require": { + "phpbb/phpbb": "3.1.*@dev" + } } } diff --git a/tests/extension/ext/vendor2/foo/composer.json b/tests/extension/ext/vendor2/foo/composer.json index 9ce7068afd..efcdfc338f 100644 --- a/tests/extension/ext/vendor2/foo/composer.json +++ b/tests/extension/ext/vendor2/foo/composer.json @@ -16,6 +16,8 @@ }, "extra": { "display-name": "phpBB Foo Extension", - "phpbb/phpbb": "3.1.*@dev" + "soft-require": { + "phpbb/phpbb": "3.1.*@dev" + } } } diff --git a/tests/extension/metadata_manager_test.php b/tests/extension/metadata_manager_test.php index 5d691b1503..6b6ea80d82 100644 --- a/tests/extension/metadata_manager_test.php +++ b/tests/extension/metadata_manager_test.php @@ -309,7 +309,9 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case 'php' => $php_version, ), 'extra' => array( - 'phpbb/phpbb' => $phpbb_version, // config is set to 3.1.0 + 'soft-require' => array( + 'phpbb/phpbb' => $phpbb_version, // config is set to 3.1.0 + ), ), )); diff --git a/tests/functional/fixtures/ext/foo/bar/composer.json b/tests/functional/fixtures/ext/foo/bar/composer.json index 3e8e98e9bd..f0c7f0e6c1 100644 --- a/tests/functional/fixtures/ext/foo/bar/composer.json +++ b/tests/functional/fixtures/ext/foo/bar/composer.json @@ -17,6 +17,8 @@ }, "extra": { "display-name": "phpBB 3.1 Extension Testing", - "phpbb/phpbb": "3.1.*@dev" + "soft-require": { + "phpbb/phpbb": "3.1.*@dev" + } } }