====== DokuWiki Test Suite ====== This is the test suite to automatically test various parts of DokuWiki. ===== Requirements ===== * PHPUnit 3.6.10+ http://www.phpunit.de/ * PHP 5.3+ http://www.php.net ===== PHPUnit Installation ====== ==== via PEAR installer ==== pear config-set auto_discover 1 pear install pear.phpunit.de/PHPUnit ==== via Composer ==== Include a composer.json file in your project, which can be as minimal as: { "require-dev": { "phpunit/phpunit": "3.7.*" } } ==== via PHP archive (PHAR) ==== Download http://pear.phpunit.de/get/phpunit.phar and make it executable on your system. ===== Running all tests ===== Just change to the ''_test'' directory and run phpunit: cd _test/ phpunit PHPUnit will fail on some systems with a //headers already sent// error. This is a known problem with PHPUnit, the error can be avoided by passing the '--stderr' flag to phpunit: phpunit --stderr On windows you may have to enable OpenSSL support for https tests. Some of them point to httpclient_http.tests.php on the failure. To enable HTTPS support copy the ''libeay32.dll'' and ''ssleay32.dll'' to your ''windows\system32'' folder and add the following line to your php.ini in the extension section: extension=php_openssl.dll ===== Running selected Tests ===== You can run a single test file by providing it as an argument to phpunit: phpunit --stderr tests/inc/common_cleanText.test.php You can also use groups to exclude certain test from running. For example use the following command to avoid long running test or tests accessing the Internet. phpunit --stderr --exclude-group slow,internet ===== Create new Tests ===== To create a test for DokuWiki, create a *.test.php file within the tests/ folder. Please respect the folder structure and naming convention. Inside the file, implement a class, extending 'DokuWikiTest'. Every method, starting with 'test' will be called as a test (e.g. 'testIfThisIsValid'); ===== TODO for the test framework ===== * test cross platform compatibility: especially test windows * update http://www.dokuwiki.org/devel:unittesting * optional: add helper methods to TestRequest for easy form submission * createForm(), ... * check PHP Unit test_helpers https://github.com/sebastianbergmann/php-test-helpers ===== Migration Protocol ===== The following tests were not migrated: * inc/indexer_idx_indexlengths (fs dependencies) * inc/mail_send (integration test) * inc/parser/parser_formatting * inc/parser/xhtml_htmlphp (runkit) * inc/parser/xhtml_links