forked from Wavyzz/dolibarr
# Fix: Improve test configuration ## Do not fail early when running tests (stopOnFailure->false) Finishing the phpunits tests does not require a lot of extra time so rather than quiting early, run them all. Also, when needed this option can be enabled on the CLI, but it can not be disabled. So when desired, it can still be added in a ci-flow or local script. ## Improve reporting We want to report Notices and Warnings and with enough detail to help during debug. These options are explicitly activated.
README (English)
--------------------------------
This directory contains unit tests and docs for Dolibarr quality analysis.
- PHPUnit - https://phpunit.de
- PHP_CodeSniffer - https://pear.php.net/package/PHP_CodeSniffer/
- PHP Depend - https://pdepend.org/
PHPUNIT
-------
To use make phpunit analysis, you must:
* Install PHPUnit
If using Eclipse, you must also add an entry as external tool for phpunit program with:
-Name: PHPUnit
-Location: Linux: /usr/bin/php
Windows: C:\Program Files (x86)\wamp\bin\php\php5.2.8\php.exe
-Workspace: ${workspace_loc}
-Arguments: Linux: /usr/bin/phpunit ${resource_path}
Windows: "C:\Program Files (x86)\PHPUnit-3.4.9\phpunit.php" ${resource_path}
If not using Eclipse, to install PHPUnit manually:
> sudo apt-get remove phpunit
> sudo apt-get upgrade pear
> sudo pear channel-discover pear.phpunit.de
> sudo pear channel-discover pear.symfony-project.com
> sudo pear channel-discover components.ez.no
> sudo pear update-channels
> sudo pear upgrade-all
> sudo pear install --alldeps phpunit/PHPUnit
* Run Unit tests:
> cd test/phpunit
> phpunit MyFileTest.php
If using Eclipse, select the test and click on menu "Run external tools and choose PHPUnit".
* Example to run phpunit 7.0 from composer using php version 8.0:
> cd ~/tmp
> composer -i phpunit
> cd test/phpunit
> /usr/bin/php8.0 ~/tmp/htdocs/includes/phpunit/phpunit/phpunit MyFileTest.php
* Generate a report of Unit tests code coverage done by one tested class:
> cd test
> phpunit -d memory_limit=-1 -d max_input_time=1800 -d max_execution_time=1800 --configuration ./phpunit/phpunittest.xml --coverage-html ./report ./report/logs/phpunit.xml phpunit/MyClassTest.php
Note that xdebug must be installed for this feature to work.
* Generate a report of Unit tests code coverage done by all Dolibarr unit test classes:
Increase your PHP memory (memory_limit and suhosin.memory_limit in php.ini) to 4G. You can check setup with "php -i | grep memory". Note: Version 3.5 need 1.5G
> cd test
> phpunit -d suhosin.memory_limit=4G -d memory_limit=-1 -d max_input_time=0 -d max_execution_time=0 --configuration ./phpunit/phpunittest.xml --coverage-html ./report phpunit/AllTests.php
If there is a timeout before end, try this:
> cd test
> php -d suhosin.memory_limit=4G -d memory_limit=-1 -d max_input_time=0 -d max_execution_time=0 /usr/bin/phpunit -d suhosin.memory_limit=4G -d memory_limit=-1 -d max_input_time=0 -d max_execution_time=0 --configuration ./phpunit/phpunittest.xml --coverage-html ./report phpunit/AllTests.php
ou
> php -d suhosin.memory_limit=4G -d memory_limit=-1 -d max_input_time=0 -d max_execution_time=0 /usr/bin/phpunit -d suhosin.memory_limit=4G -d memory_limit=-1 -d max_input_time=0 -d max_execution_time=0 --configuration ./phpunit/phpunittest.xml --coverage-php ./report/codecoverage.php phpunit/AllTests.php
puis
> sudo renice -10 idprocessphp
PHP-CODESNIFFER
---------------
* Install phpcs
* Launch PHP-Codesniffer:
> cd dev
> /usr/bin/php5 -c ./codesniffer/php.ini /usr/bin/phpcs --report=xml --standard=./codesniffer ../htdocs/test.php
PHPDEPEND
---------
* Install pdepend
* Launch PDepend analysis:
> cd test
> pdepend --debug -d memory_limit=-1 --configuration=./phpunit/phpunittest.xml --phpunit-xml=./report/logs/pdepend.xml --summary-xml=./report/logs/summary.xml --jdepend-chart=./report/logs/jdepend.svg --overview-pyramid=./report/logs/pyramid.svg --ignore=custom,custom2,adodbtime,artichow,ckeditor,efc_xfss,fckeditor,fpdf,geoip,magpierss,nusoap,odtphp,php_writeexcel,smarty,smtps,tcpdf,vcard ../htdocs
* To clean pdepend cache files
> rm -fr ~/.pdepend/*