ansible/test/sanity/validate-modules
2016-10-13 14:36:22 +01:00
..
__init__.py Port sivel/ansible-validate-modules into Ansible 2016-10-13 14:36:22 +01:00
module_args.py Port sivel/ansible-validate-modules into Ansible 2016-10-13 14:36:22 +01:00
README.rst Port sivel/ansible-validate-modules into Ansible 2016-10-13 14:36:22 +01:00
schema.py Port sivel/ansible-validate-modules into Ansible 2016-10-13 14:36:22 +01:00
utils.py Port sivel/ansible-validate-modules into Ansible 2016-10-13 14:36:22 +01:00
validate-modules Port sivel/ansible-validate-modules into Ansible 2016-10-13 14:36:22 +01:00

ansible-testing
===============

Python module to help test or validate Ansible, specifically ansible
modules

Installation
------------

This module must be installed alongside the current development
release of Ansible to appropriately test the current development
state of modules.

Usage
~~~~~

::

    pip install git+https://github.com/ansible/ansible.git@devel#egg=ansible
    pip install git+https://github.com/sivel/ansible-testing.git#egg=ansible_testing
    ansible-validate-modules /path/to/ansible-modules-extras

Help
~~~~

::

    usage: ansible-validate-modules [-h] [-w] [--exclude EXCLUDE] modules

    positional arguments:
      modules            Path to module or module directory

    optional arguments:
      -h, --help         show this help message and exit
      -w, --warnings     Show warnings
      --exclude EXCLUDE  RegEx exclusion pattern

Current Validations
-------------------

Modules
~~~~~~~

Errors
^^^^^^

#. Interpreter line is not ``#!/usr/bin/python``
#. ``main()`` not at the bottom of the file
#. Module does not import ``ansible.module_utils.basic``
#. Missing ``DOCUMENTATION``
#. Documentation is invalid YAML
#. Invalid schema for ``DOCUMENTATION``
#. Missing ``EXAMPLES``
#. Invalid Python Syntax
#. Tabbed indentation
#. Use of ``sys.exit()`` instead of ``exit_json`` or ``fail_json``
#. Missing GPLv3 license header in module
#. Powershell module missing ``WANT_JSON``
#. Powershell module missing ``POWERSHELL_COMMON``
#. New modules have the correct ``version_added``
#. New arguments have the correct ``version_added``
#. Modules should not import requests, instead use ``ansible.module_utils.urls``
#. Missing ``RETURN`` for new modules

Warnings
^^^^^^^^

#. Try/Except ``HAS_`` expression missing
#. Missing ``RETURN`` for existing modules
#. ``import json`` found
#. Module contains duplicate globals from basic.py

Module Directories (Python Packages)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#. Missing ``__init__.py``