# qiBuild documentation

# Running qiBuild test suite

## All in one step

Create a virtualenv to run your tests:

    virtualenv venv
    source venv/bin/activate

Install qibuild with the “–editable” option, so that your changes are reflected without the need to call `pip install` again

    cd /path/to/qibuild
    pip install --editable .

Install all the test dependencies:

    cd /path/to/qibuild
    pip install -r requirements.txt

Finally, run `make`:

    cd /path/to/qibuild/python
    make

This will use `pylint` to check for obvious errors, then run the full test suite.

Sometimes `pylint` is mistaken, you can fix this by adding a small comment to disable the check, using the `pylint` error code:

    # pylint:disable-msg=E1101

## Running the test suite

This is on a build farm but only for linux and python2.7, so it is possible that some tests will fail.

If you do find a failing test, please open a bug.

If you find a bug, a nice way to make it easier to fix it is to write a failing test and mark it as ‘skipped’

    @pytest.skip("See bug # ....")
    def test_subtle_bug(self):
       res = do_something_complicated()
       # Should be 42 but for some reason is 41 ...
       assert res == 42

This way when the bug is fixed we just have to remove the `@pytest.skip` and we are sure the bug never occurs again.

### Running only some tests

You can use `py.test` like this:

- Just for a given python package:

    cd python
    py.test qisrc

- Just for a given test file:

    py.test qisrc/test/test_git.py

- Just for a given test name:

    py.test qisrc/test/test_git.py -k set_tracking_branch

### Note about debuggers

If you are using `ipdb` or `pdb` to insert break points in the code like this:

    # in foo.py
    def test_my_complicated_function():
        from IPython.core.debugger import Tracer; debug_here=Tracer()
        debug_here()

You will get an error message when you run `py.test`

The solution is to use the `-s` option of `py.test`:

    $ py.test foo.py -s

## Exiting the virtualenv when you are done

Simply type

    $ deactivate

Feel free to remove the virtualenv folder

    $ rm -fr venv

Changelog CMake index Python index Index