Testing

Molecule has an extensive set of unit and functional tests. Molecule uses Tox Factors to generate a matrix of python x Ansible x unit/functional tests. Manual setup required as of this time.

Dependencies

Tests will be skipped when the driver’s binary is not present.

Install the test framework Tox.

$ pip install tox

Install tox-tags.

Install the remaining requirements in a venv (optional).

$ pip install -r test-requirements.txt -r requirements.txt

Full

Run all tests, including linting and coverage reports. This should be run prior to merging or submitting a pull request.

$ tox

Unit

Run all unit tests with coverage.

$ tox -t unit

Functional

Run all functional tests.

Note

The functional tests are a work in progress. They need better structure and reuse.

$ tox -t functional

Run all functional tests targeting the docker driver.

$ tox -t functional -- -v -k docker

Static

Run all the functional static tests.

$ ansible-playbook -i test/resources/playbooks/static/inventory \
  test/resources/playbooks/static/create.yml
$ tox -t functional -- --static -v -k static
$ ansible-playbook -i test/resources/playbooks/static/inventory \
  test/resources/playbooks/static/destroy.yml

Formatting

The formatting is done using YAPF.

$ tox -e format

Linting

Linting is performed by Flake8.

$ tox -e $(tox -l | grep lint | paste -d, -s -)

LXC

Follow the steps detailed in the Vagrantfile below.

$ cd test/functional/lxc
$ vagrant up

LXD

Follow the steps detailed in the Vagrantfile below.

$ cd test/functional/lxd
$ vagrant up

Continuous integration

Travis CI

Travis is a CI platform, which can be used to test Ansible roles.

A .travis.yml testing a role named foo1 with the Docker driver.

---
sudo: required
language: python
services:
  - docker
before_install:
  - sudo apt-get -qq update
install:
  - pip install molecule
  # - pip install required driver (e.g. docker, python-vagrant, shade, boto, apache-libcloud)
script:
  - molecule test

A .travis.yml using Tox as described below.

---
sudo: required
language: python
services:
  - docker
before_install:
  - sudo apt-get -qq update
install:
  - pip install tox-travis
script:
  - tox

Tox

Tox is a generic virtualenv management, and test command line tool. Tox can be used in conjunction with Factors and Molecule, to perform scenario tests.

To test the role against multiple versions of Ansible.

[tox]
minversion = 1.8
envlist = py{27}-ansible{20,21,22}
skipsdist = true

[testenv]
passenv = *
deps =
    -rrequirements.txt
    ansible20: ansible==2.0.2.0
    ansible21: ansible==2.1.2.0
    ansible22: ansible==2.2.0.0
commands =
    molecule test

To view the factor generated tox environments.

$ tox -l
py27-ansible20
py27-ansible21
py27-ansible22