/ansible-testing

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

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

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 developemnt 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

  1. Interpreter line is not #!/usr/bin/python
  2. main() not at the bottom of the file
  3. Module does not include from ansible.module_utils.basic import *
  4. module_utils imports at the top (excluding whitelisted module_utils)
  5. Invalid module_utils import
  6. Missing DOCUMENTATION or invalid YAML
  7. Missing EXAMPLES
  8. Invalid Python Syntax
  9. Tabbed indentation
  10. Use of sys.exit() instead of exit_json or fail_json
  11. Missing GPLv3 license header in module
  12. Powershell module missing WANT_JSON
  13. Powershell module missing REPLACER_WINDOWS
  14. New modules have the correct version_added
  15. Modules should not import requests, instead use ansible.module_utils.urls
  16. Missing RETURN for new modules

Warnings

  1. Whitelisted module_utils imports at the top
  2. Try/Except HAS_ expression missing
  3. Missing RETURN for existing modules
  4. import json found
  5. Module contains duplicate globals from basic.py

Notes

  1. module_utils imports not at bottom may be error or warning depending on the import.

Module Directories (Python Packages)

  1. Missing __init__.py