2015-06-26 21:56:43 +02:00
<!DOCTYPE html>
< html >
< head >
< meta charset = "utf-8" >
< meta name = "generator" content = "pandoc" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0, user-scalable=yes" >
2015-07-22 05:02:10 +02:00
< title > Shaarli - Unit tests< / title >
2015-06-26 21:56:43 +02:00
< style type = "text/css" > code { white-space : pre ; } < / style >
<!-- [if lt IE 9]>
< script src = "http://html5shim.googlecode.com/svn/trunk/html5.js" > < / script >
<![endif]-->
< style type = "text/css" >
table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
margin: 0; padding: 0; vertical-align: baseline; border: none; }
table.sourceCode { width: 100%; line-height: 100%; }
td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
td.sourceCode { padding-left: 5px; }
code > span.kw { color: #007020; font-weight: bold; }
code > span.dt { color: #902000; }
code > span.dv { color: #40a070; }
code > span.bn { color: #40a070; }
code > span.fl { color: #40a070; }
code > span.ch { color: #4070a0; }
code > span.st { color: #4070a0; }
code > span.co { color: #60a0b0; font-style: italic; }
code > span.ot { color: #007020; }
code > span.al { color: #ff0000; font-weight: bold; }
code > span.fu { color: #06287e; }
code > span.er { color: #ff0000; font-weight: bold; }
< / style >
< link rel = "stylesheet" href = "github-markdown.css" >
< / head >
< body >
2015-07-22 05:02:10 +02:00
< div id = "local-sidebar" >
< ul >
< li > < a href = "Home.html" > Home< / a > < / li >
< li > Installation
< ul >
< li > < a href = "Server-requirements.html" > Server requirements< / a > < / li >
< li > < a href = "Server-configuration.html" > Server configuration< / a > < / li >
< li > < a href = "Shaarli-configuration.html" > Shaarli configuration< / a > < / li >
< / ul > < / li >
< li > < a href = "Usage.html" > Usage< / a >
< ul >
< li > < a href = "Sharing-button.html" > Sharing button< / a > (bookmarklet)< / li >
< li > < a href = "Firefox-share.html" > Firefox share< / a > < / li >
< li > < a href = "RSS-feeds.html" > RSS feeds< / a > < / li >
< / ul > < / li >
< li > How To
< ul >
< li > < a href = "Backup,-restore,-import-and-export.html" > Backup, restore, import and export< / a > < / li >
< li > < a href = "Copy-an-existing-installation-over-SSH-and-serve-it-locally.html" > Copy an existing installation over SSH and serve it locally< / a > < / li >
< li > < a href = "Download-CSS-styles-from-an-OPML-list.html" > Download CSS styles from an OPML list< / a > < / li >
< / ul > < / li >
< li > < a href = "Troubleshooting.html" > Troubleshooting< / a > < / li >
< li > < a href = "Development.html" > Development< / a >
< ul >
< li > < a href = "GnuPG-signature.html" > GnuPG signature< / a > < / li >
< li > < a href = "Coding-guidelines.html" > Coding guidelines< / a > < / li >
< li > < a href = "Directory-structure.html" > Directory structure< / a > < / li >
< li > < a href = "3rd-party-libraries.html" > 3rd party libraries< / a > < / li >
< li > < a href = "Plugin-System.html" > Plugin System< / a > < / li >
< li > < a href = "Security.html" > Security< / a > < / li >
< li > < a href = "Static-analysis.html" > Static analysis< / a > < / li >
< li > < a href = "Theming.html" > Theming< / a > < / li >
< li > < a href = "Unit-tests.html" > Unit tests< / a > < / li >
< / ul > < / li >
< li > About
< ul >
< li > < a href = "FAQ.html" > FAQ< / a > < / li >
< li > < a href = "Community-&-Related-software.html" > Community & Related software< / a > < / li >
< li > < a href = "TODO.html" > TODO< / a > < / li >
< / ul > < / li >
< / ul >
< / div >
< h1 id = "unit-tests" > Unit tests< / h1 >
2015-06-26 21:56:43 +02:00
< h3 id = "setup-your-environment-for-tests" > Setup your environment for tests< / h3 >
2015-07-22 05:02:10 +02:00
< p > The framework used is < a href = "https://phpunit.de/" > PHPUnit< / a > ; it can be installed with < a href = "https://getcomposer.org/" > Composer< / a > , which is a dependency management tool.< a href = ".html" > < / a > < / p >
2015-06-26 21:56:43 +02:00
< p > Regarding Composer, you can either use:< / p >
< ul >
2015-07-22 05:02:10 +02:00
< li > a system-wide version, e.g. installed through your distro's package manager< / li >
< li > a local version, downloadable < a href = "https://getcomposer.org/download/" > here< / a > < a href = ".html" > < / a > < / li >
2015-06-26 21:56:43 +02:00
< / ul >
< h4 id = "sample-usage" > Sample usage< / h4 >
< pre class = "sourceCode bash" > < code class = "sourceCode bash" > < span class = "co" > # system-wide version< / span >
$ < span class = "kw" > composer< / span > install
$ < span class = "kw" > composer< / span > update
< span class = "co" > # local version< / span >
$ < span class = "kw" > php< / span > composer.phar self-update
$ < span class = "kw" > php< / span > composer.phar install
$ < span class = "kw" > php< / span > composer.phar update< / code > < / pre >
< h4 id = "install-shaarli-dev-dependencies" > Install Shaarli dev dependencies< / h4 >
< pre class = "sourceCode bash" > < code class = "sourceCode bash" > $ < span class = "kw" > cd< / span > /path/to/shaarli
$ < span class = "kw" > composer< / span > update< / code > < / pre >
< h4 id = "install-and-enable-xdebug-to-generate-phpunit-coverage-reports" > Install and enable Xdebug to generate PHPUnit coverage reports< / h4 >
< p > For Debian-based distros:< / p >
< pre class = "sourceCode bash" > < code class = "sourceCode bash" > $ < span class = "kw" > aptitude< / span > install php5-xdebug< / code > < / pre >
< p > For ArchLinux:< / p >
< pre class = "sourceCode bash" > < code class = "sourceCode bash" > $ < span class = "kw" > pacman< / span > -S xdebug< / code > < / pre >
< p > Then add the following line to < code > /etc/php/php.ini< / code > :< / p >
< pre class = "sourceCode ini" > < code class = "sourceCode ini" > < span class = "dt" > zend_extension< / span > < span class = "ot" > =< / span > < span class = "st" > xdebug.so< / span > < / code > < / pre >
< h4 id = "run-unit-tests" > Run unit tests< / h4 >
< p > Successful test suite:< / p >
< pre class = "sourceCode bash" > < code class = "sourceCode bash" > $ < span class = "kw" > make< / span > test
< span class = "kw" > -------< / span >
< span class = "kw" > PHPUNIT< / span >
< span class = "kw" > -------< / span >
< span class = "kw" > PHPUnit< / span > 4.6.9 by Sebastian Bergmann and contributors.
< span class = "kw" > Configuration< / span > read from /home/virtualtam/public_html/shaarli/phpunit.xml
< span class = "kw" > ....................................< / span >
< span class = "kw" > Time< / span > : 759 ms, Memory: 8.25Mb
< span class = "kw" > OK< / span > (36 tests, 65 assertions)< / code > < / pre >
< p > Test suite with failures and errors:< / p >
< pre class = "sourceCode bash" > < code class = "sourceCode bash" > $ < span class = "kw" > make< / span > test
< span class = "kw" > -------< / span >
< span class = "kw" > PHPUNIT< / span >
< span class = "kw" > -------< / span >
< span class = "kw" > PHPUnit< / span > 4.6.9 by Sebastian Bergmann and contributors.
< span class = "kw" > Configuration< / span > read from /home/virtualtam/public_html/shaarli/phpunit.xml
< span class = "kw" > E..FF...............................< / span >
< span class = "kw" > Time< / span > : 802 ms, Memory: 8.25Mb
< span class = "kw" > There< / span > was 1 error:
< span class = "kw" > 1< / span > ) < span class = "kw" > LinkDBTest< / span > ::testConstructLoggedIn
< span class = "kw" > Missing< / span > argument 2 for LinkDB::__construct(), < span class = "kw" > called< / span > in /home/virtualtam/public_html/shaarli/tests/Link\
2015-07-22 05:02:10 +02:00
DBTest.php on line 79 and defined
2015-06-26 21:56:43 +02:00
< span class = "kw" > /home/virtualtam/public_html/shaarli/application< / span > /LinkDB.php:< span class = "kw" > 58< / span >
< span class = "kw" > /home/virtualtam/public_html/shaarli/tests< / span > /LinkDBTest.php:< span class = "kw" > 79< / span >
< span class = "kw" > --< / span >
< span class = "kw" > There< / span > were 2 failures:
< span class = "kw" > 1< / span > ) < span class = "kw" > LinkDBTest< / span > ::testCheckDBNew
< span class = "kw" > Failed< / span > asserting that two strings are equal.
< span class = "kw" > ---< / span > Expected
< span class = "kw" > +++< / span > Actual
< span class = "kw" > @@< / span > @@
< span class = "kw" > -< / span > < span class = "st" > ' e3edea8ea7bb50be4bcb404df53fbb4546a7156e' < / span >
< span class = "kw" > +< / span > < span class = "st" > ' 85eab0c610d4f68025f6ed6e6b6b5fabd4b55834' < / span >
< span class = "kw" > /home/virtualtam/public_html/shaarli/tests< / span > /LinkDBTest.php:< span class = "kw" > 121< / span >
< span class = "kw" > 2< / span > ) < span class = "kw" > LinkDBTest< / span > ::testCheckDBLoad
< span class = "kw" > Failed< / span > asserting that two strings are equal.
< span class = "kw" > ---< / span > Expected
< span class = "kw" > +++< / span > Actual
< span class = "kw" > @@< / span > @@
< span class = "kw" > -< / span > < span class = "st" > ' e3edea8ea7bb50be4bcb404df53fbb4546a7156e' < / span >
< span class = "kw" > +< / span > < span class = "st" > ' 85eab0c610d4f68025f6ed6e6b6b5fabd4b55834' < / span >
< span class = "kw" > /home/virtualtam/public_html/shaarli/tests< / span > /LinkDBTest.php:< span class = "kw" > 133< / span >
< span class = "kw" > FAILURES< / span > !
< span class = "kw" > Tests< / span > : 36, Assertions: 63, Errors: 1, Failures: 2.< / code > < / pre >
< h4 id = "test-results-and-coverage" > Test results and coverage< / h4 >
< p > By default, PHPUnit will run all suitable tests found under the < code > tests< / code > directory.< / p >
< p > Each test has 3 possible outcomes:< / p >
< ul >
2015-07-22 05:02:10 +02:00
< li > < code > .< / code > - success< / li >
< li > < code > F< / code > - failure: the test was run but its results are invalid< / li >
< li > the code does not behave as expected< / li >
< li > dependencies to external elements: globals, session, cache...< / li >
< li > < code > E< / code > - error: something went wrong and the tested code has crashed< / li >
< li > typos in the code, or in the test code< / li >
2015-06-26 21:56:43 +02:00
< li > dependencies to missing external elements< / li >
< / ul >
< p > If Xdebug has been installed and activated, two coverage reports will be generated:< / p >
< ul >
2015-07-22 05:02:10 +02:00
< li > a summary in the console< / li >
< li > a detailed HTML report with metrics for tested code< / li >
2015-06-26 21:56:43 +02:00
< li > to open it in a web browser: < code > firefox coverage/index.html & < / code > < / li >
< / ul >
< / body >
< / html >