diff options
Diffstat (limited to 'test/sanity')
-rw-r--r-- | test/sanity/README.rst | 70 | ||||
-rw-r--r-- | test/sanity/pep8/README.md | 33 | ||||
-rw-r--r-- | test/sanity/validate-modules/README.rst | 168 |
3 files changed, 0 insertions, 271 deletions
diff --git a/test/sanity/README.rst b/test/sanity/README.rst deleted file mode 100644 index 2bf94b532c..0000000000 --- a/test/sanity/README.rst +++ /dev/null @@ -1,70 +0,0 @@ -Sanity Tests -============ - -Sanity tests are made up of scripts and tools used to perform static code analysis. -The primary purpose of these tests is to enforce Ansible coding standards and requirements. - -Tests are run with ``ansible-test sanity``. -All available tests are run unless the ``--test`` option is used. - -Available Tests -=============== - -Tests can be listed with ``ansible-test sanity --list-tests``. - -This list is a combination of two different categories of tests. - -Code Smell Tests ----------------- - -Miscellaneous `scripts <code-smell/>`_ used for enforcing coding standards and requirements, identifying trip hazards, etc. - - These tests are listed and accessed by script name. There is no actual test named ``code-smell``. - -All executable scripts added to the ``code-smell`` directory are automatically detected and executed by ``ansible-test``. - -Scripts in the directory which fail can be skipped by adding them to `skip.txt <code-smell/skip.txt>`_. -This is useful for scripts which identify issues that have not yet been resolved in the code base. - -Files tested are specific to the individual test scripts and are not affected by command line arguments. - -Built-in Tests --------------- - -These tests are integrated directly into ``ansible-test``. -All files relevant to each test are tested unless specific files are specified. - -ansible-doc -~~~~~~~~~~~ - -Verifies that ``ansible-doc`` can parse module documentation on all supported python versions. - -pep8 -~~~~ - -Python static analysis for PEP 8 style guideline compliance. - -pylint -~~~~~~ - -Python static analysis for common programming errors. - -rstcheck -~~~~~~~~ - -Check reStructuredText files for syntax and formatting issues. - -shellcheck -~~~~~~~~~~ - -Static code analysis for shell scripts using the excellent `shellcheck <https://www.shellcheck.net/>`_ tool. - -validate-modules -~~~~~~~~~~~~~~~~ - -Analyze modules for common issues in code and documentation. - -yamllint -~~~~~~~~ - -Check YAML files for syntax and formatting issues. diff --git a/test/sanity/pep8/README.md b/test/sanity/pep8/README.md deleted file mode 100644 index 85fd2a6c66..0000000000 --- a/test/sanity/pep8/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# PEP 8 - -[PEP 8](https://www.python.org/dev/peps/pep-0008/) style guidelines are enforced by -[pep8](https://pypi.python.org/pypi/pep8) on all python files in the repository by default. - -## Current Rule Set - -By default all files are tested using the current rule set. -All `pep8` tests are executed, except those listed in the [current ignore list](current-ignore.txt). - -## Legacy Rule Set - -Files which are listed in the [legacy file list](legacy-files.txt) are tested using the legacy rule set. -All `pep8` tests are executed, except those listed in the [current ignore list](current-ignore.txt) or -[legacy ignore list](legacy-ignore.txt). - -> Files listed in the legacy file list which pass the current rule set will result in an error. -> This is intended to prevent regressions on style guidelines for files which pass the more stringent current rule set. - -## Skipping Tests - -Files listed in the [skip list](skip.txt) are not tested by `pep8`. - -## Removed Files - -Files which have been removed from the repository must be removed from the legacy file list and the skip list. - -## Running Locally - -The pep8 check can be run locally with: - - ./test/runner/ansible-test sanity --test pep8 [file-or-directory-path-to-check] ... - diff --git a/test/sanity/validate-modules/README.rst b/test/sanity/validate-modules/README.rst deleted file mode 100644 index 9d9d6f3946..0000000000 --- a/test/sanity/validate-modules/README.rst +++ /dev/null @@ -1,168 +0,0 @@ -validate-modules -================ - -Python program to help test or validate Ansible modules. - -Originally developed by Matt Martz (@sivel) - -Usage -~~~~~ - -.. code:: shell - - cd /path/to/ansible/source - source hacking/env-setup - test/sanity/validate-modules/validate-modules /path/to/modules - -Help -~~~~ - -.. code:: shell - - usage: validate-modules [-h] [-w] [--exclude EXCLUDE] [--arg-spec] - [--base-branch BASE_BRANCH] [--format {json,plain}] - [--output OUTPUT] - modules [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 - --arg-spec Analyze module argument spec - --base-branch BASE_BRANCH - Used in determining if new options were added - --format {json,plain} - Output format. Default: "plain" - --output OUTPUT Output location, use "-" for stdout. Default "-" - -Codes -~~~~~~~ - -Errors -^^^^^^ - -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| code | sample message | -+=========+============================================================================================================================================+ -| **1xx** | **Locations** | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 101 | Interpreter line is not ``#!/usr/bin/python`` | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 102 | Interpreter line is not ``#!powershell`` | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 103 | Did not find a call to ``main()`` | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 104 | Call to ``main()`` not the last line | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 105 | GPLv3 license header not found | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 106 | Import found before documentation variables. All imports must appear below ``DOCUMENTATION``/``EXAMPLES``/``RETURN``/``ANSIBLE_METADATA`` | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 107 | Imports should be directly below ``DOCUMENTATION``/``EXAMPLES``/``RETURN``/``ANSIBLE_METADATA`` | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| **2xx** | **Imports** | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 201 | Did not find a ``module_utils`` import | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 203 | ``requests`` import found, should use ``ansible.module_utils.urls`` instead | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 204 | ``boto`` import found, new modules should use ``boto3`` | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 205 | ``sys.exit()`` call found. Should be ``exit_json``/``fail_json`` | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 206 | ``WANT_JSON`` not found in module | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 207 | ``REPLACER_WINDOWS`` not found in module | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 208 | ``module_utils`` imports should import specific components, not ``*`` | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| **3xx** | **Documentation** | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 301 | No ``DOCUMENTATION`` provided | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 302 | ``DOCUMENTATION`` is not valid YAML | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 303 | ``DOCUMENTATION`` fragment missing | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 304 | Unknown ``DOCUMENTATION`` error | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 305 | Invalid ``DOCUMENTATION`` schema | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 306 | Module level ``version_added`` is not a valid version number | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 307 | Module level ``version_added`` is incorrect | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 308 | ``version_added`` for new option is not a valid version number | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 309 | ``version_added`` for new option is incorrect | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 310 | No ``EXAMPLES`` provided | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 311 | ``EXAMPLES`` is not valid YAML | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 312 | No ``RETURN`` documentation provided | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 313 | ``RETURN`` is not valid YAML | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 314 | No ``ANSIBLE_METADATA`` provided | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 315 | ``ANSIBLE_METADATA`` is not valid YAML | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 316 | Invalid ``ANSIBLE_METADATA`` schema | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 317 | option is marked as required but specifies a default. Arguments with a default should not be marked as required | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 318 | Module deprecated, but DOCUMENTATION.deprecated is missing | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| **4xx** | **Syntax** | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 401 | Python ``SyntaxError`` while parsing module | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 402 | Indentation contains tabs | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 403 | Type comparison using ``type()`` found. Use ``isinstance()`` instead | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| **5xx** | **Naming** | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 501 | Official Ansible modules must have a ``.py`` extension for python modules or a ``.ps1`` for powershell modules | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 502 | Ansible module subdirectories must contain an ``__init__.py`` | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 503 | Missing python documentation file | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ - -Warnings -^^^^^^^^ - -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| code | sample message | -+=========+============================================================================================================================================+ -| **1xx** | **Locations** | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 107 | Imports should be directly below ``DOCUMENTATION``/``EXAMPLES``/``RETURN``/``ANSIBLE_METADATA`` for legacy modules | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| **2xx** | **Imports** | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 208 | ``module_utils`` imports should import specific components for legacy module, not ``*`` | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 291 | Try/Except ``HAS_`` expression missing | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 292 | Did not find ``ansible.module_utils.basic`` import | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| **3xx** | **Documentation** | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 312 | No ``RETURN`` documentation provided for legacy module | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 391 | Unknown pre-existing ``DOCUMENTATION`` error | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ -| 392 | Pre-existing ``DOCUMENTATION`` fragment missing | -+---------+--------------------------------------------------------------------------------------------------------------------------------------------+ |