diff options
author | Robin Appelman <icewind@owncloud.com> | 2013-02-08 00:11:54 +0100 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2013-02-08 00:11:54 +0100 |
commit | f93f9dd50cce6b6e2ed4eeca2d34b2bac82e0350 (patch) | |
tree | c76b2eabb63ed308eb882468cb2a74042e6f9d53 /tests | |
parent | 697536cf6ad1c9a862c32605b807172dfa680d22 (diff) | |
parent | 3bd33b69a1c37cee5c3d180ec8952a611aabb4d1 (diff) | |
download | nextcloud-server-f93f9dd50cce6b6e2ed4eeca2d34b2bac82e0350.tar.gz nextcloud-server-f93f9dd50cce6b6e2ed4eeca2d34b2bac82e0350.zip |
merge master into trash_fileactions
Diffstat (limited to 'tests')
-rw-r--r-- | tests/bootstrap.php | 3 | ||||
-rw-r--r-- | tests/lib/files/filesystem.php | 6 | ||||
-rw-r--r-- | tests/lib/files/storage/commontest.php | 5 | ||||
-rw-r--r-- | tests/lib/public/contacts.php | 8 | ||||
-rw-r--r-- | tests/phpunit-autotest.xml | 14 | ||||
-rw-r--r-- | tests/win32-phpunit.php | 347 |
6 files changed, 372 insertions, 11 deletions
diff --git a/tests/bootstrap.php b/tests/bootstrap.php index b97161ee6e4..fb667263e45 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -2,6 +2,9 @@ global $RUNTIME_NOAPPS; $RUNTIME_NOAPPS = true; + +define('PHPUNIT_RUN', 1); + require_once __DIR__.'/../lib/base.php'; if(!class_exists('PHPUnit_Framework_TestCase')) { diff --git a/tests/lib/files/filesystem.php b/tests/lib/files/filesystem.php index 5837093fdd6..fd116af2d2e 100644 --- a/tests/lib/files/filesystem.php +++ b/tests/lib/files/filesystem.php @@ -93,14 +93,14 @@ class Filesystem extends \PHPUnit_Framework_TestCase { $rootView->mkdir('/'.$user); $rootView->mkdir('/'.$user.'/files'); - \OC\Files\Filesystem::file_put_contents('/foo', 'foo'); +// \OC\Files\Filesystem::file_put_contents('/foo', 'foo'); \OC\Files\Filesystem::mkdir('/bar'); - \OC\Files\Filesystem::file_put_contents('/bar//foo', 'foo'); +// \OC\Files\Filesystem::file_put_contents('/bar//foo', 'foo'); $tmpFile = \OC_Helper::tmpFile(); file_put_contents($tmpFile, 'foo'); $fh = fopen($tmpFile, 'r'); - \OC\Files\Filesystem::file_put_contents('/bar//foo', $fh); +// \OC\Files\Filesystem::file_put_contents('/bar//foo', $fh); } public function dummyHook($arguments) { diff --git a/tests/lib/files/storage/commontest.php b/tests/lib/files/storage/commontest.php index 744d4608420..ce53c884f32 100644 --- a/tests/lib/files/storage/commontest.php +++ b/tests/lib/files/storage/commontest.php @@ -28,10 +28,7 @@ class CommonTest extends Storage { */ private $tmpDir; public function setUp() { - $this->tmpDir=get_temp_dir().'/filestoragecommon'; - if(!file_exists($this->tmpDir)) { - mkdir($this->tmpDir); - } + $this->tmpDir=\OC_Helper::tmpFolder(); $this->instance=new \OC\Files\Storage\CommonTest(array('datadir'=>$this->tmpDir)); } diff --git a/tests/lib/public/contacts.php b/tests/lib/public/contacts.php index 23994667a26..ce5d762226b 100644 --- a/tests/lib/public/contacts.php +++ b/tests/lib/public/contacts.php @@ -39,7 +39,7 @@ class Test_Contacts extends PHPUnit_Framework_TestCase public function testEnabledAfterRegister() { // create mock for the addressbook - $stub = $this->getMock("SimpleAddressBook", array('getKey')); + $stub = $this->getMockForAbstractClass("OCP\IAddressBook", array('getKey')); // we expect getKey to be called twice: // first time on register @@ -65,7 +65,7 @@ class Test_Contacts extends PHPUnit_Framework_TestCase public function testAddressBookEnumeration() { // create mock for the addressbook - $stub = $this->getMock("SimpleAddressBook", array('getKey', 'getDisplayName')); + $stub = $this->getMockForAbstractClass("OCP\IAddressBook", array('getKey', 'getDisplayName')); // setup return for method calls $stub->expects($this->any()) @@ -85,8 +85,8 @@ class Test_Contacts extends PHPUnit_Framework_TestCase public function testSearchInAddressBook() { // create mock for the addressbook - $stub1 = $this->getMock("SimpleAddressBook1", array('getKey', 'getDisplayName', 'search')); - $stub2 = $this->getMock("SimpleAddressBook2", array('getKey', 'getDisplayName', 'search')); + $stub1 = $this->getMockForAbstractClass("OCP\IAddressBook", array('getKey', 'getDisplayName', 'search')); + $stub2 = $this->getMockForAbstractClass("OCP\IAddressBook", array('getKey', 'getDisplayName', 'search')); $searchResult1 = array( array('id' => 0, 'FN' => 'Frank Karlitschek', 'EMAIL' => 'a@b.c', 'GEO' => '37.386013;-122.082932'), diff --git a/tests/phpunit-autotest.xml b/tests/phpunit-autotest.xml new file mode 100644 index 00000000000..23cd123edc6 --- /dev/null +++ b/tests/phpunit-autotest.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" ?> +<phpunit bootstrap="bootstrap.php"> + <testsuite name='ownCloud'> + <directory suffix='.php'>lib/</directory> + <file>apps.php</file> + </testsuite> + <!-- filters for code coverage --> + <whitelist processUncoveredFilesFromWhitelist="true"> + <directory suffix=".php">..</directory> + <exclude> + <directory suffix=".php">../3rdparty</directory> + </exclude> + </whitelist> +</phpunit> diff --git a/tests/win32-phpunit.php b/tests/win32-phpunit.php new file mode 100644 index 00000000000..ac8f95efcbf --- /dev/null +++ b/tests/win32-phpunit.php @@ -0,0 +1,347 @@ +<?php +OC_PHPUnit_Loader::checkIncludePath(); +OC_PHPUnit_Loader::detectPHPUnitVersionId(); + +//load PHPUnit +switch (OC_PHPUnit_Loader::$PHPUnitVersionId) { + case "36": { + OC_PHPUnit_Loader::load36(); + break; + } + case "37": { + OC_PHPUnit_Loader::load37(); + break; + } +} + +//load custom implementation of the PHPUnit_TextUI_ResultPrinter +switch (OC_PHPUnit_Loader::$PHPUnitVersionId) { + case "36": + case "37": { + class OC_PHPUnit_TextUI_ResultPrinter extends PHPUnit_TextUI_ResultPrinter + { + function __construct() + { + parent::__construct('php://stderr'); + } + + public function printResult(PHPUnit_Framework_TestResult $result) + { + $this->printHeader(); + $this->printFooter($result); + } + + protected function writeProgress($progress) + { + //ignore + } + } + break; + } +} + +//loading of OC_PHPUnit_TextUI_Command +switch (OC_PHPUnit_Loader::$PHPUnitVersionId) { + case "36": + case "37": { + class OC_PHPUnit_TextUI_Command extends PHPUnit_TextUI_Command + { + + public static function main($exit = TRUE) + { + $command = new OC_PHPUnit_TextUI_Command(); + $command->run($_SERVER['argv'], $exit); + } + + protected function handleArguments(array $argv) + { + parent::handleArguments($argv); + $this->arguments['listeners'][] = new OC_PHPUnit_Framework_TestListener(); + $this->arguments['printer'] = new OC_PHPUnit_TextUI_ResultPrinter(); + } + + protected function createRunner() + { + $coverage_Filter = new PHP_CodeCoverage_Filter(); + $coverage_Filter->addFileToBlacklist(__FILE__); + $runner = new PHPUnit_TextUI_TestRunner($this->arguments['loader'], $coverage_Filter); + return $runner; + } + } + break; + } +} + +class OC_PHPUnit_Loader +{ + + const SUCCESS_EXIT = 0; + const FAILURE_EXIT = 1; + const EXCEPTION_EXIT = 2; + + public static $PHPUnitVersionId; + + /** + * @return void + */ + public static function checkIncludePath() + { + //check include path + $PHPUnitParentDirectory = self::getPHPUnitParentDirectory(); + if (is_null($PHPUnitParentDirectory)) { + echo "Cannot find PHPUnit in include path (" . ini_get('include_path') . ")"; + exit(OC_PHPUnit_Loader::FAILURE_EXIT); + } + } + + /** + * @return null | string + */ + private static function getPHPUnitParentDirectory() + { + $pathArray = explode(PATH_SEPARATOR, ini_get('include_path')); + foreach ($pathArray as $path) + { + if (file_exists($path . DIRECTORY_SEPARATOR . 'PHPUnit/')) { + return $path; + } + } + return null; + } + + /** + * @return void + */ + public static function detectPHPUnitVersionId() + { + require_once 'PHPUnit/Runner/Version.php'; + + $PHPUnitVersion = PHPUnit_Runner_Version::id(); + + if ($PHPUnitVersion === "@package_version@") { + + self::$PHPUnitVersionId = "37"; + } + else if (version_compare($PHPUnitVersion, '3.7.0') >= 0) { + + self::$PHPUnitVersionId = "37"; + } + else if (version_compare($PHPUnitVersion, '3.6.0') >= 0) { + + self::$PHPUnitVersionId = "36"; + } + else if (version_compare($PHPUnitVersion, '3.6.0') >= 0) { + + echo "unsupported PHPUnit version: $PHPUnitVersion"; + exit(OC_PHPUnit_Loader::FAILURE_EXIT); + } + } + + /** + * @return void + */ + public static function load37() + { + + require 'PHPUnit/Autoload.php'; + + } + + + /** + * @return void + */ + public static function load36() + { + define('PHPUnit_MAIN_METHOD', 'OC_PHPUnit_TextUI_Command::main'); + + require 'PHPUnit/Autoload.php'; + + } +} + +class OC_PHPUnit_Framework_TestListener implements PHPUnit_Framework_TestListener +{ + + private $isSummaryTestCountPrinted = false; + + public static function printEvent($eventName, $params = array()) + { + self::printText("\n[$eventName"); + foreach ($params as $key => $value) { + self::printText(" $key='$value'"); + } + self::printText("]\n"); + } + + public static function printText($text) + { + file_put_contents('php://stderr', $text); + } + + private static function getMessage(Exception $e) + { + $message = ""; + if (strlen(get_class($e)) != 0) { + $message = $message . get_class($e); + } + if (strlen($message) != 0 && strlen($e->getMessage()) != 0) { + $message = $message . " : "; + } + $message = $message . $e->getMessage(); + return self::escapeValue($message); + } + + private static function getDetails(Exception $e) + { + return self::escapeValue($e->getTraceAsString()); + } + + public static function getValueAsString($value) + { + if (is_null($value)) { + return "null"; + } + else if (is_bool($value)) { + return $value == true ? "true" : "false"; + } + else if (is_array($value) || is_string($value)) { + $valueAsString = print_r($value, true); + if (strlen($valueAsString) > 10000) { + return null; + } + return $valueAsString; + } + else if (is_scalar($value)){ + return print_r($value, true); + } + return null; + } + + private static function escapeValue($text) { + $text = str_replace("|", "||", $text); + $text = str_replace("'", "|'", $text); + $text = str_replace("\n", "|n", $text); + $text = str_replace("\r", "|r", $text); + $text = str_replace("]", "|]", $text); + return $text; + } + + public static function getFileName($className) + { + $reflectionClass = new ReflectionClass($className); + $fileName = $reflectionClass->getFileName(); + return $fileName; + } + + public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) + { + self::printEvent("testFailed", array( + "name" => $test->getName(), + "message" => self::getMessage($e), + "details" => self::getDetails($e) + )); + } + + public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) + { + $params = array( + "name" => $test->getName(), + "message" => self::getMessage($e), + "details" => self::getDetails($e) + ); + if ($e instanceof PHPUnit_Framework_ExpectationFailedException) { + $comparisonFailure = $e->getComparisonFailure(); + if ($comparisonFailure instanceof PHPUnit_Framework_ComparisonFailure) { + $actualResult = $comparisonFailure->getActual(); + $expectedResult = $comparisonFailure->getExpected(); + $actualString = self::getValueAsString($actualResult); + $expectedString = self::getValueAsString($expectedResult); + if (!is_null($actualString) && !is_null($expectedString)) { + $params['actual'] = self::escapeValue($actualString); + $params['expected'] = self::escapeValue($expectedString); + } + } + } + self::printEvent("testFailed", $params); + } + + public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) + { + self::printEvent("testIgnored", array( + "name" => $test->getName(), + "message" => self::getMessage($e), + "details" => self::getDetails($e) + )); + } + + public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) + { + self::printEvent("testIgnored", array( + "name" => $test->getName(), + "message" => self::getMessage($e), + "details" => self::getDetails($e) + )); + } + + public function startTest(PHPUnit_Framework_Test $test) + { + $testName = $test->getName(); + $params = array( + "name" => $testName + ); + if ($test instanceof PHPUnit_Framework_TestCase) { + $className = get_class($test); + $fileName = self::getFileName($className); + $params['locationHint'] = "php_qn://$fileName::\\$className::$testName"; + } + self::printEvent("testStarted", $params); + } + + public function endTest(PHPUnit_Framework_Test $test, $time) + { + self::printEvent("testFinished", array( + "name" => $test->getName(), + "duration" => (int)(round($time, 2) * 1000) + )); + } + + public function startTestSuite(PHPUnit_Framework_TestSuite $suite) + { + if (!$this->isSummaryTestCountPrinted) { + $this->isSummaryTestCountPrinted = true; + //print tests count + self::printEvent("testCount", array( + "count" => count($suite) + )); + } + + $suiteName = $suite->getName(); + if (empty($suiteName)) { + return; + } + $params = array( + "name" => $suiteName, + ); + if (class_exists($suiteName, false)) { + $fileName = self::getFileName($suiteName); + $params['locationHint'] = "php_qn://$fileName::\\$suiteName"; + } + self::printEvent("testSuiteStarted", $params); + } + + public function endTestSuite(PHPUnit_Framework_TestSuite $suite) + { + $suiteName = $suite->getName(); + if (empty($suiteName)) { + return; + } + self::printEvent("testSuiteFinished", + array( + "name" => $suite->getName() + )); + } + +} + +OC_PHPUnit_TextUI_Command::main(); |