diff options
author | Morris Jobke <hey@morrisjobke.de> | 2014-11-22 10:05:47 +0100 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2014-11-22 10:05:47 +0100 |
commit | 2cc3edb10d0a37dce9954f1a402c9c31c7c3dab9 (patch) | |
tree | 4d867d035ed4691baf882d5858313d52fa4aa00b /tests/lib | |
parent | fa3f7ad9e9bf92974b1115a2bae03075b97c1367 (diff) | |
parent | b8420592853717d3d637e3ec6c3ab3a1cfb850a5 (diff) | |
download | nextcloud-server-2cc3edb10d0a37dce9954f1a402c9c31c7c3dab9.tar.gz nextcloud-server-2cc3edb10d0a37dce9954f1a402c9c31c7c3dab9.zip |
Merge pull request #12328 from owncloud/remove-testcleanuplistener
Remove testcleanuplistener
Diffstat (limited to 'tests/lib')
-rw-r--r-- | tests/lib/testcase.php | 116 |
1 files changed, 111 insertions, 5 deletions
diff --git a/tests/lib/testcase.php b/tests/lib/testcase.php index 315cd6858ed..e6f5ca71dac 100644 --- a/tests/lib/testcase.php +++ b/tests/lib/testcase.php @@ -23,21 +23,127 @@ namespace Test; abstract class TestCase extends \PHPUnit_Framework_TestCase { + /** + * Returns a unique identifier as uniqid() is not reliable sometimes + * + * @param string $prefix + * @param int $length + * @return string + */ protected function getUniqueID($prefix = '', $length = 13) { - // Do not use dots and slashes as we use the value for file names return $prefix . \OC::$server->getSecureRandom()->getLowStrengthGenerator()->generate( $length, + // Do not use dots and slashes as we use the value for file names '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' ); } public static function tearDownAfterClass() { + $dataDir = \OC::$server->getConfig()->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data-autotest'); + + self::tearDownAfterClassCleanFileMapper($dataDir); + self::tearDownAfterClassCleanStorages(); + self::tearDownAfterClassCleanFileCache(); + self::tearDownAfterClassCleanStrayDataFiles($dataDir); + self::tearDownAfterClassCleanStrayHooks(); + self::tearDownAfterClassCleanProxies(); + + parent::tearDownAfterClass(); + } + + /** + * Remove all entries from the files map table + * @param string $dataDir + */ + static protected function tearDownAfterClassCleanFileMapper($dataDir) { if (\OC_Util::runningOnWindows()) { - $rootDirectory = \OC::$server->getConfig()->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data-autotest'); - $mapper = new \OC\Files\Mapper($rootDirectory); - $mapper->removePath($rootDirectory, true, true); + $mapper = new \OC\Files\Mapper($dataDir); + $mapper->removePath($dataDir, true, true); } + } - parent::tearDownAfterClass(); + /** + * Remove all entries from the storages table + * @throws \DatabaseException + */ + static protected function tearDownAfterClassCleanStorages() { + $sql = 'DELETE FROM `*PREFIX*storages`'; + $query = \OC_DB::prepare($sql); + $query->execute(); + } + + /** + * Remove all entries from the filecache table + * @throws \DatabaseException + */ + static protected function tearDownAfterClassCleanFileCache() { + $sql = 'DELETE FROM `*PREFIX*filecache`'; + $query = \OC_DB::prepare($sql); + $query->execute(); + } + + /** + * Remove all unused files from the data dir + * + * @param string $dataDir + */ + static protected function tearDownAfterClassCleanStrayDataFiles($dataDir) { + $knownEntries = array( + 'owncloud.log' => true, + 'owncloud.db' => true, + '.ocdata' => true, + '..' => true, + '.' => true, + ); + + if ($dh = opendir($dataDir)) { + while (($file = readdir($dh)) !== false) { + if (!isset($knownEntries[$file])) { + self::tearDownAfterClassCleanStrayDataUnlinkDir($dataDir . '/' . $file); + } + } + closedir($dh); + } + } + + /** + * Recursive delete files and folders from a given directory + * + * @param string $dir + */ + static protected function tearDownAfterClassCleanStrayDataUnlinkDir($dir) { + if ($dh = @opendir($dir)) { + while (($file = readdir($dh)) !== false) { + if ($file === '..' || $file === '.') { + continue; + } + $path = $dir . '/' . $file; + if (is_dir($path)) { + self::tearDownAfterClassCleanStrayDataUnlinkDir($path); + } + else { + @unlink($path); + } + } + closedir($dh); + } + @rmdir($dir); + } + + /** + * Clean up the list of hooks + */ + static protected function tearDownAfterClassCleanStrayHooks() { + \OC_Hook::clear(); + } + + /** + * Clean up the list of file proxies + * + * Also reenables file proxies, in case a test disabled them + */ + static protected function tearDownAfterClassCleanProxies() { + \OC_FileProxy::$enabled = true; + \OC_FileProxy::clearProxies(); } } |