diff options
author | Matt Clay <matt@mystile.com> | 2023-02-20 17:54:20 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-20 17:54:20 -0800 |
commit | fe2732b91e538e0278104d71417ddfd0aae01eed (patch) | |
tree | df37a60b934e0d51e7043f39e4006a7d3472bdc7 /test/integration | |
parent | 2f8f7fba4c6b17c25bf20913bfd332ea06b8e8ae (diff) | |
download | ansible-fe2732b91e538e0278104d71417ddfd0aae01eed.tar.gz |
ansible-test - Support pylint assertion rewriting (#80020)
Add support for `pylint` assertion rewriting when running unit tests on Python 3.5 and later.
Diffstat (limited to 'test/integration')
4 files changed, 42 insertions, 0 deletions
diff --git a/test/integration/targets/ansible-test-units-assertions/aliases b/test/integration/targets/ansible-test-units-assertions/aliases new file mode 100644 index 0000000000..f25bc6778e --- /dev/null +++ b/test/integration/targets/ansible-test-units-assertions/aliases @@ -0,0 +1,4 @@ +shippable/generic/group1 # runs in the default test container +context/controller +needs/target/collection +needs/target/ansible-test diff --git a/test/integration/targets/ansible-test-units-assertions/ansible_collections/ns/col/tests/unit/plugins/modules/test_assertion.py b/test/integration/targets/ansible-test-units-assertions/ansible_collections/ns/col/tests/unit/plugins/modules/test_assertion.py new file mode 100644 index 0000000000..e172200410 --- /dev/null +++ b/test/integration/targets/ansible-test-units-assertions/ansible_collections/ns/col/tests/unit/plugins/modules/test_assertion.py @@ -0,0 +1,6 @@ +from __future__ import absolute_import, division, print_function +__metaclass__ = type + + +def test_assertion(): + assert dict(yes=True) == dict(no=False) diff --git a/test/integration/targets/ansible-test-units-assertions/runme.sh b/test/integration/targets/ansible-test-units-assertions/runme.sh new file mode 100755 index 0000000000..671fc12991 --- /dev/null +++ b/test/integration/targets/ansible-test-units-assertions/runme.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +source ../collection/setup.sh + +set -x + +options=$("${TEST_DIR}"/../ansible-test/venv-pythons.py --only-versions) +IFS=', ' read -r -a pythons <<< "${options}" + +for python in "${pythons[@]}"; do + if ansible-test units --color --truncate 0 --python "${python}" --requirements "${@}" 2>&1 | tee pylint.log; then + echo "Test did not fail as expected." + exit 1 + fi + + if [ "${python}" = "2.7" ]; then + grep "^E *AssertionError$" pylint.log + else + + grep "^E *AssertionError: assert {'yes': True} == {'no': False}$" pylint.log + fi +done diff --git a/test/integration/targets/ansible-test/venv-pythons.py b/test/integration/targets/ansible-test/venv-pythons.py index b380f147fc..97998bcd7c 100755 --- a/test/integration/targets/ansible-test/venv-pythons.py +++ b/test/integration/targets/ansible-test/venv-pythons.py @@ -1,6 +1,7 @@ #!/usr/bin/env python """Return target Python options for use with ansible-test.""" +import argparse import os import shutil import subprocess @@ -10,6 +11,11 @@ from ansible import release def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--only-versions', action='store_true') + + options = parser.parse_args() + ansible_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(release.__file__)))) source_root = os.path.join(ansible_root, 'test', 'lib') @@ -33,6 +39,10 @@ def main(): print(f'{executable} - {"fail" if process.returncode else "pass"}', file=sys.stderr) if not process.returncode: + if options.only_versions: + args.append(python_version) + continue + args.extend(['--target-python', f'venv/{python_version}']) print(' '.join(args)) |