diff --git a/lib/autoloader.php b/lib/autoloader.php index 08188ef8e596687ef09cc9d51b0b3aaed736a3f1..3fff025080efa3cd7925f7d096cb11588d7ed33c 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 42b2273e11929d6fa5394808bba94999bd58a5ca..f115c11938af525ba127169279d62414960a2390 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 0000000000000000000000000000000000000000..f49cf7d40f356002d508bf2f001dd34645dd5d73 --- /dev/null +++ b/tests/lib/TestCasePhpUnit4.php @@ -0,0 +1,37 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @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 <http://www.gnu.org/licenses/>. + * + */ + +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 0000000000000000000000000000000000000000..5def70e57fa0406e7043e9c5adcd6d14606a8e20 --- /dev/null +++ b/tests/lib/TestCasePhpUnit5.php @@ -0,0 +1,37 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @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 <http://www.gnu.org/licenses/>. + * + */ + +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 0000000000000000000000000000000000000000..cb243d1ce6f909461ffdfac30b6eb0bd77cc7c61 --- /dev/null +++ b/tests/lib/TestCasePhpUnitCompatibility.php @@ -0,0 +1,32 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @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 <http://www.gnu.org/licenses/>. + * + */ + +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 {} +}