From e76ef9aaa8ca8e1913e49492b4d27470df6481cb Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 15 Nov 2016 14:33:06 +0100 Subject: [PATCH] Add a magic wrapper from hell to allow phpunit4 to run the code again Remove this once phpunit 5 is the lowest supported version, by reverting: https://github.com/nextcloud/server/pull/2137 Signed-off-by: Joas Schilling --- lib/autoloader.php | 7 ++++ tests/lib/TestCase.php | 7 ++-- tests/lib/TestCasePhpUnit4.php | 37 ++++++++++++++++++++++ tests/lib/TestCasePhpUnit5.php | 37 ++++++++++++++++++++++ tests/lib/TestCasePhpUnitCompatibility.php | 32 +++++++++++++++++++ 5 files changed, 115 insertions(+), 5 deletions(-) create mode 100644 tests/lib/TestCasePhpUnit4.php create mode 100644 tests/lib/TestCasePhpUnit5.php create mode 100644 tests/lib/TestCasePhpUnitCompatibility.php diff --git a/lib/autoloader.php b/lib/autoloader.php index 08188ef8e5..3fff025080 100644 --- a/lib/autoloader.php +++ b/lib/autoloader.php @@ -117,6 +117,13 @@ class Autoloader { // This File is considered public API, so we make sure that the class // can still be loaded, although the PSR-4 paths have not been loaded. $paths[] = \OC::$SERVERROOT . '/tests/lib/TestCase.php'; + + } elseif ($class === 'Test\\TestCasePhpUnitCompatibility') { + $paths[] = \OC::$SERVERROOT . '/tests/lib/TestCasePhpUnitCompatibility.php'; + } elseif ($class === 'Test\\TestCasePhpUnit5') { + $paths[] = \OC::$SERVERROOT . '/tests/lib/TestCasePhpUnit5.php'; + } elseif ($class === 'Test\\TestCasePhpUnit4') { + $paths[] = \OC::$SERVERROOT . '/tests/lib/TestCasePhpUnit4.php'; } return $paths; } diff --git a/tests/lib/TestCase.php b/tests/lib/TestCase.php index 42b2273e11..f115c11938 100644 --- a/tests/lib/TestCase.php +++ b/tests/lib/TestCase.php @@ -24,7 +24,6 @@ namespace Test; use DOMDocument; use DOMNode; -use OC\Cache\CappedMemoryCache; use OC\Command\QueueBus; use OC\Files\Filesystem; use OC\Template\Base; @@ -34,7 +33,7 @@ use OCP\IDBConnection; use OCP\IL10N; use OCP\Security\ISecureRandom; -abstract class TestCase extends \PHPUnit_Framework_TestCase { +abstract class TestCase extends TestCasePhpUnitCompatibility { /** @var \OC\Command\QueueBus */ private $commandBus; @@ -153,7 +152,7 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase { } } - protected function onNotSuccessfulTest($e) { + protected function realOnNotSuccessfulTest() { $this->restoreAllServices(); // restore database connection @@ -162,8 +161,6 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase { return self::$realDatabase; }); } - - parent::onNotSuccessfulTest($e); } protected function tearDown() { diff --git a/tests/lib/TestCasePhpUnit4.php b/tests/lib/TestCasePhpUnit4.php new file mode 100644 index 0000000000..f49cf7d40f --- /dev/null +++ b/tests/lib/TestCasePhpUnit4.php @@ -0,0 +1,37 @@ + + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace Test; + +/** + * FIXME Remove this once phpunit 5 is the lowest supported version, by reverting: + * https://github.com/nextcloud/server/pull/2137 + */ +abstract class TestCasePhpUnit4 extends \PHPUnit_Framework_TestCase { + + abstract protected function realOnNotSuccessfulTest(); + + protected function onNotSuccessfulTest(\Exception $e) { + $this->realOnNotSuccessfulTest(); + + parent::onNotSuccessfulTest($e); + } +} diff --git a/tests/lib/TestCasePhpUnit5.php b/tests/lib/TestCasePhpUnit5.php new file mode 100644 index 0000000000..5def70e57f --- /dev/null +++ b/tests/lib/TestCasePhpUnit5.php @@ -0,0 +1,37 @@ + + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace Test; + +/** + * FIXME Remove this once phpunit 5 is the lowest supported version, by reverting: + * https://github.com/nextcloud/server/pull/2137 + */ +abstract class TestCasePhpUnit5 extends \PHPUnit_Framework_TestCase { + + abstract protected function realOnNotSuccessfulTest(); + + protected function onNotSuccessfulTest($e) { + $this->realOnNotSuccessfulTest(); + + parent::onNotSuccessfulTest($e); + } +} diff --git a/tests/lib/TestCasePhpUnitCompatibility.php b/tests/lib/TestCasePhpUnitCompatibility.php new file mode 100644 index 0000000000..cb243d1ce6 --- /dev/null +++ b/tests/lib/TestCasePhpUnitCompatibility.php @@ -0,0 +1,32 @@ + + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace Test; + +/** + * FIXME Remove this once phpunit 5 is the lowest supported version, by reverting: + * https://github.com/nextcloud/server/pull/2137 + */ +if (version_compare(\PHPUnit_Runner_Version::id(), '5.0.0', '>=')) { + abstract class TestCasePhpUnitCompatibility extends TestCasePhpUnit5 {} +} else { + abstract class TestCasePhpUnitCompatibility extends TestCasePhpUnit4 {} +}