Run unit tests

This is a guide for developers who want to run unit tests in their local machine.

Prerequisite

Zun source code should be pulled directly from git:

# from your home or source directory
cd ~
git clone https://opendev.org/openstack/zun
cd zun

Install the prerequisite packages listed in the bindep.txt file.

On Debian-based distributions (e.g., Debian/Mint/Ubuntu):

# Ubuntu/Debian (recommend Ubuntu 16.04):
sudo apt-get update
sudo apt-get install python-pip
sudo pip install tox
tox -e bindep
sudo apt-get install <indicated missing package names>

On Fedora-based distributions (e.g., Fedora/RHEL/CentOS/Scientific Linux):

sudo yum install python-pip
sudo pip install tox
tox -e bindep
sudo yum install <indicated missing package names>

On openSUSE-based distributions (SLES 12, openSUSE Leap 42.1 or Tumbleweed):

sudo zypper in python-pip
sudo pip install tox
tox -e bindep
sudo zypper in <indicated missing package names>

Running the tests

All unit tests should be run using tox. To run Zun’s entire test suite:

# run all tests (unit and pep8)
tox

To run a specific test, use a positional argument for the unit tests:

# run a specific test for Python 2.7
tox -epy27 -- test_container

You may pass options to the test programs using positional arguments:

# run all the Python 2.7 unit tests (in parallel!)
tox -epy27 -- --parallel

To run only the pep8/flake8 syntax and style checks:

tox -epep8