== link:index.html[Index] -> link:dev.html[Development info]

Development: Quality Assurance
-------------------------------

Cherokee has an automated battery of scripts intended to prevent
regressions.

You should run all the QA tests before whenever you implement changes
to the code base. Not only will this catch most simple errors and
prevent regressions from appearing. It will also help you a lot in
your development process.

Everything is located under the `/qa` directory, so have a look there.
This will display all the parameters that you can use with Cherokee's
QA test suit:

------------------------
   cd qa
   ./run-tests.py --help
------------------------

You can use it to run all the tests, or the specific ones you want.

------------------------
   ./run-tests.py
------------------------

Not only that. The full QA bench can be run through a Cherokee proxy
server. This is something implemented in order to test the
handler_proxy module when it was incorporated to Cherokee's code base.

The idea is pretty simple, and the process straightforward. We tell
the QA bench to run through a proxy located in localhost:2222, for
instance. We also tell it to wait until we hit enter (-d1) to start
executing the lot:

----------------
   cd qa
   ./run-tests.py -Plocalhost:2222 -d1
----------------

As you'll see, it will generate a configuration file for us to launch
the proxy server:

----------------
  Server
         PID: 29909
        Path: ../cherokee/cherokee-worker
        Mods: ../cherokee/.libs/
        Deps: ../cherokee/
       Panic: ../cherokee/cherokee-panic
  Proxy conf: /tmp/tmprV6k4Hcherokee_proxy_cfg
----------------

At this point, we only have to open a new terminal, launch the
Cherokee proxy server and hit enter to unlock the tester side of the
QA bench:


----------------
    cherokee -C /tmp/tmprV6k4Hcherokee_proxy_cfg
----------------

Almost every single QA test can be run through the proxy server. There
are a few exceptions though. Tests involving the X-Real-IP header will
be skipped, for example. It is not a big deal anyway, those are around
5 o 6 test out of almost 250.
