diff options
author | Robin Appelman <icewind@owncloud.com> | 2015-08-20 14:38:51 +0200 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2015-08-20 15:17:14 +0200 |
commit | 3dbfbdaf549f69c63c6e59d91681c7df65789ece (patch) | |
tree | a06ab2d20f1a7834ecf630f41e761d69374edc78 /tests/lib/testcase.php | |
parent | 67893ca83998753e4c40114846c7169e3e534d74 (diff) | |
download | nextcloud-server-3dbfbdaf549f69c63c6e59d91681c7df65789ece.tar.gz nextcloud-server-3dbfbdaf549f69c63c6e59d91681c7df65789ece.zip |
allow moving common test logic into traits
Diffstat (limited to 'tests/lib/testcase.php')
-rw-r--r-- | tests/lib/testcase.php | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/tests/lib/testcase.php b/tests/lib/testcase.php index fd0b8d5f2de..854d5f4f65b 100644 --- a/tests/lib/testcase.php +++ b/tests/lib/testcase.php @@ -32,21 +32,52 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase { */ private $commandBus; + protected function getTestTraits() { + $traits = []; + $class = $this; + do { + $traits = array_merge(class_uses($class), $traits); + } while ($class = get_parent_class($class)); + foreach ($traits as $trait => $same) { + $traits = array_merge(class_uses($trait), $traits); + } + $traits = array_unique($traits); + return array_filter($traits, function ($trait) { + return substr($trait, 0, 5) === 'Test\\'; + }); + } + protected function setUp() { // overwrite the command bus with one we can run ourselves $this->commandBus = new QueueBus(); \OC::$server->registerService('AsyncCommandBus', function () { return $this->commandBus; }); + + $traits = $this->getTestTraits(); + foreach ($traits as $trait) { + $methodName = 'setUp' . basename(str_replace('\\', '/', $trait)); + if (method_exists($this, $methodName)) { + call_user_func([$this, $methodName]); + } + } } protected function tearDown() { $hookExceptions = \OC_Hook::$thrownExceptions; \OC_Hook::$thrownExceptions = []; \OC::$server->getLockingProvider()->releaseAll(); - if(!empty($hookExceptions)) { + if (!empty($hookExceptions)) { throw $hookExceptions[0]; } + + $traits = $this->getTestTraits(); + foreach ($traits as $trait) { + $methodName = 'tearDown' . basename(str_replace('\\', '/', $trait)); + if (method_exists($this, $methodName)) { + call_user_func([$this, $methodName]); + } + } } /** |