# Compile Tests

Topics

- Compile Tests
  - Overview
  - Running compile tests locally
  - Installing dependencies
  - Extending compile tests

## Overview

Compile tests check source files for valid syntax on all supported python versions:

- 2.4 (Ansible 2.3 only)
- 2.6
- 2.7
- 3.5
- 3.6

NOTE: In Ansible 2.4 and earlier the compile test was provided by a dedicated sub-command `ansible-test compile` instead of a sanity test using `ansible-test sanity --test compile`.

## Running compile tests locally

Compile tests can be run across the whole code base by doing:

    cd /path/to/ansible/source
    source hacking/env-setup
    ansible-test sanity --test compile

Against a single file by doing:

    ansible-test sanity --test compile lineinfile

Or against a specific Python version by doing:

    ansible-test sanity --test compile --python 2.7 lineinfile

For advanced usage see the help:

    ansible-test sanity --help

## Installing dependencies

`ansible-test` has a number of dependencies , for `compile` tests we suggest running the tests with `--local`, which is the default

The dependencies can be installed using the `--requirements` argument. For example:

    ansible-test sanity --test compile --requirements lineinfile

The full list of requirements can be found at test/runner/requirements. Requirements files are named after their respective commands. See also the constraints applicable to all commands.

## Extending compile tests

If you believe changes are needed to the compile tests please add a comment on the Testing Working Group Agenda so it can be discussed.