Running Tests
=============

Prerequisites
=============

PHPUnit
-------

phpBB unit tests use PHPUnit framework. Version 3.5 or better is required
to run the tests. PHPUnit prefers to be installed via PEAR; refer to
http://www.phpunit.de/ for more information.

PHP extensions
--------------

Unit tests use several PHP extensions that board code does not use. Currently
the following PHP extensions must be installed and enabled to run unit tests:

- ctype

Database Tests
--------------
By default all tests requiring a database connection will use sqlite. If you
do not have sqlite installed the tests will be skipped. If you wish to run the
tests on a different database you have to create a test_config.php file within
your tests directory following the same format as phpBB's config.php. An example
for mysqli can be found below. More information on configuration options can be
found on the wiki (see below).

    <?php
    $dbms = 'mysqli';
    $dbhost = 'localhost';
    $dbport = '';
    $dbname = 'database';
    $dbuser = 'user';
    $dbpasswd = 'password';

Alternatively you can specify parameters in the environment, so e.g. the following
will run phpunit with the same parameters as in the shown test_config.php file:

    $ PHPBB_TEST_DBMS='mysqli' PHPBB_TEST_DBHOST='localhost' \
      PHPBB_TEST_DBNAME='database' PHPBB_TEST_DBUSER='user' \
      PHPBB_TEST_DBPASSWD='password' phpunit

Running
=======

Once the prerequisites are installed, run the tests from the project root directory (above phpBB):

    $ phpunit

Slow tests
--------------
Certain tests, such as the UTF-8 normalizer or the DNS tests tend to be slow.
Thus these tests are in the `slow` group, which is excluded by default. You can
enable slow tests by copying the phpunit.xml.all file to phpunit.xml. If you only
want the slow tests, run:

    $ phpunit --group slow

More Information
================

Further information is available on phpbb wiki:
http://wiki.phpbb.com/display/DEV/Unit+Tests
