.. _test-unit-and-functional:

===========================
 Unit and Functional Tests
===========================



py.test based test suite
========================


The test suite is in the folder :file:`rhodecode/tests/` and should be run with
the test runner `py.test` inside of your `nix-shell` environment::

   # In case you need the cythonized version
   CYTHONIZE=1 python setup.py develop --prefix=$tmp_path

   py.test rhodecode



py.test integration
-------------------

The integration with the test runner is based on the following three parts:

- `pytest_pylons` is a py.test plugin which does the integration with the
  Pylons web framework. It sets up the Pylons environment based on a given ini
  file.

  Tests which depend on the Pylons environment to be set up must request the
  fixture `pylonsapp`.

- :file:`rhodecode/tests/plugin.py` contains the integration of py.test with
  RhodeCode Enterprise itself.

- :file:`conftest.py` plugins are used to provide a special integration for
  certain groups of tests based on the directory location.



VCS backend selection
---------------------

The py.test integration provides a parameter `--backends`. It will skip all
tests which are marked for other backends.

To run only Subversion tests::

   py.test rhodecode --backends=svn



Frontend / Styling support
==========================

All relevant style components have an example inside of the "Style" section
within the application. Enable the setting `debug_style` to make this section
visible in your local instance of the application.