Skip to content

Conversation

@webknjaz
Copy link
Member

This patch automatically loads patch_ansible_module fixture into
pytest when running ansible-test units. It previously existed
in conftest.py hence only available to tests of ansible/ansible
itself. Now, third-party collections will be able to use it without
having to vendor the source code.

SUMMARY

As per above: this exposes patch_ansible_module fixture to any unit tests executed via ansible-test.

ISSUE TYPE
  • Feature Pull Request
COMPONENT NAME

ansible-test

ADDITIONAL INFORMATION

N/A

@webknjaz webknjaz requested a review from mattclay January 13, 2020 19:11
@ansibot

This comment was marked as outdated.

@ansibot ansibot added affects_2.10 This issue/PR affects Ansible v2.10 core_review In order to be merged, this PR must follow the core review workflow. feature This issue/PR relates to a feature request. needs_triage Needs a first human triage before being processed. support:core This issue/PR relates to code supported by the Ansible Engineering Team. test This PR relates to tests. labels Jan 13, 2020
@ansibot

This comment has been minimized.

@ansibot ansibot added needs_revision This PR fails CI tests or a maintainer has requested a review/revision of the PR. and removed core_review In order to be merged, this PR must follow the core review workflow. labels Jan 13, 2020
@webknjaz webknjaz force-pushed the features/patch_ansible_module-pytest-fixture branch from 1d8fb63 to 4768355 Compare January 13, 2020 20:27
@ansibot ansibot added core_review In order to be merged, this PR must follow the core review workflow. needs_ci This PR requires CI testing to be performed. Please close and re-open this PR to trigger CI. stale_ci This PR has been tested by CI more than one week ago. Close and re-open this PR to get it retested. and removed needs_revision This PR fails CI tests or a maintainer has requested a review/revision of the PR. labels Jan 13, 2020
@ansibot

This comment has been minimized.

@ansibot ansibot added has_issue new_plugin This PR includes a new plugin. and removed needs_ci This PR requires CI testing to be performed. Please close and re-open this PR to trigger CI. stale_ci This PR has been tested by CI more than one week ago. Close and re-open this PR to get it retested. labels Jan 13, 2020
@ansibot

This comment has been minimized.

@ansibot ansibot added ci_verified Changes made in this PR are causing tests to fail. needs_revision This PR fails CI tests or a maintainer has requested a review/revision of the PR. and removed core_review In order to be merged, this PR must follow the core review workflow. labels Jan 13, 2020
@webknjaz webknjaz force-pushed the features/patch_ansible_module-pytest-fixture branch from 4768355 to c0ee9ee Compare January 13, 2020 21:47
@ansibot ansibot removed the ci_verified Changes made in this PR are causing tests to fail. label Jan 13, 2020
@webknjaz webknjaz force-pushed the features/patch_ansible_module-pytest-fixture branch from c0ee9ee to 2b4e004 Compare January 13, 2020 22:08
@ansibot ansibot removed the needs_revision This PR fails CI tests or a maintainer has requested a review/revision of the PR. label Jan 13, 2020
@ansibot ansibot removed the has_issue label Jul 12, 2023
@ansibot ansibot added needs_rebase https://docs.ansible.com/ansible/devel/dev_guide/developing_rebasing.html and removed needs_rebase https://docs.ansible.com/ansible/devel/dev_guide/developing_rebasing.html labels Oct 24, 2023
@ansibot ansibot added the stale_pr This PR has not been pushed to for more than one year. label Jan 28, 2025
@webknjaz
Copy link
Member Author

(docs commit for history, could go into ansible/ansible-documentation or external collection)

commit 5b4c415e55fcc5e8a4d988a25c29bee8144c0cca
Author: Sviatoslav Sydorenko <webknjaz@redhat.com>
Date:   Thu Apr 1 23:19:26 2021 +0200

    Document pytest fixtures for module unit-tests

diff --git a/docs/docsite/rst/dev_guide/testing_units_modules.rst b/docs/docsite/rst/dev_guide/testing_units_modules.rst
index d07dcff9448..276cdf9f91c 100644
--- a/docs/docsite/rst/dev_guide/testing_units_modules.rst
+++ b/docs/docsite/rst/dev_guide/testing_units_modules.rst
@@ -544,6 +544,72 @@ creation of module objects for testing.
 
 The same restructuring technique can be valuable for testing other functionality, such as the part of the module which queries the object that the module configures.
 
+What About The Pytest Fixtures?
+===============================
+
+.. versionadded:: 2.15
+
+
+We now have some pytest-native fixture-based helpers that simplify
+calling modules from unit tests using an interface close to the one
+available in playbooks.
+
+
+.. code-block:: python
+   :caption: test_new_mod.py
+
+   import pytest
+
+
+   @pytest.fixture
+   def ansible_global_module_name():
+       return 'my_module'
+
+
+   def test_new_mod_caller(make_ansible_module_caller):
+       run_my_module = make_ansible_module_caller('my_module')
+
+       my_module_args = {'arg1': 'val1', 'arg2': 2, 'arg3': [1, 2, 3]}
+       expected_result = {}
+
+       assert run_my_module(**my_module_args) == expected_result
+
+
+   def test_new_mod_yaml(make_ansible_module_caller):
+       run_my_module = make_ansible_module_caller('my_module')
+
+       assert run_my_module.with_yaml("""
+           arg1: val1
+           arg2: val2
+       """) == {}
+
+
+   def test_new_mod_global(run_ansible_module):
+       my_module_args = {'arg1': 'val1', 'arg2': 2, 'arg3': [1, 2, 3]}
+       expected_result = {}
+
+       assert run_ansible_module(**my_module_args) == expected_result
+
+
+   def test_new_mod_error(run_ansible_module):
+       my_module_args = {'arg1': 'val1'}
+
+       failed_response = run_module(**my_module_args)
+
+       assert failed_response['failed']
+
+
+   @pytest.mark.parametrize(
+       'ansible_module_name',
+       ('my_module2', ),
+       indirect=('ansible_module_name', ),
+   )
+   def test_new_mod2(run_ansible_module):
+       my_module_args = {'arg1': 'val1', 'arg2': 2, 'arg3': [1, 2, 3]}
+       expected_result = {}
+
+       assert run_ansible_module(**my_module_args) == expected_result
+
 Traps for maintaining Python 2 compatibility
 ============================================

@webknjaz webknjaz force-pushed the features/patch_ansible_module-pytest-fixture branch from dfc1da5 to 2d088cf Compare March 14, 2025 23:29
@ansibot ansibot removed needs_rebase https://docs.ansible.com/ansible/devel/dev_guide/developing_rebasing.html stale_pr This PR has not been pushed to for more than one year. stale_ci This PR has been tested by CI more than one week ago. Close and re-open this PR to get it retested. labels Mar 14, 2025
@ansibot
Copy link
Contributor

ansibot commented Mar 15, 2025

The test ansible-test sanity --test compile --python 3.10 [explain] failed with 1 error:

test/lib/ansible_test/_util/target/pytest/plugins/ansible_pytest_unit_test_module_mocks.py:45:34: SyntaxError: ) from fixture_lookup_err,

The test ansible-test sanity --test compile --python 3.11 [explain] failed with 1 error:

test/lib/ansible_test/_util/target/pytest/plugins/ansible_pytest_unit_test_module_mocks.py:45:34: SyntaxError: ) from fixture_lookup_err,

The test ansible-test sanity --test compile --python 3.12 [explain] failed with 1 error:

test/lib/ansible_test/_util/target/pytest/plugins/ansible_pytest_unit_test_module_mocks.py:45:34: SyntaxError: ) from fixture_lookup_err,

The test ansible-test sanity --test compile --python 3.13 [explain] failed with 1 error:

test/lib/ansible_test/_util/target/pytest/plugins/ansible_pytest_unit_test_module_mocks.py:45:34: SyntaxError: ) from fixture_lookup_err,

The test ansible-test sanity --test compile --python 3.8 [explain] failed with 1 error:

test/lib/ansible_test/_util/target/pytest/plugins/ansible_pytest_unit_test_module_mocks.py:45:34: SyntaxError: ) from fixture_lookup_err,

The test ansible-test sanity --test compile --python 3.9 [explain] failed with 1 error:

test/lib/ansible_test/_util/target/pytest/plugins/ansible_pytest_unit_test_module_mocks.py:45:34: SyntaxError: ) from fixture_lookup_err,

The test ansible-test sanity --test mypy [explain] failed with the error:

Command "/root/.ansible/test/venv/sanity.mypy/3.13/7bc2266f/bin/python /root/ansible/test/sanity/code-smell/mypy.py" returned exit status 1.
>>> Standard Error
Traceback (most recent call last):
  File "/root/ansible/test/sanity/code-smell/mypy.py", line 233, in <module>
    main()
    ~~~~^^
  File "/root/ansible/test/sanity/code-smell/mypy.py", line 52, in main
    unfiltered_messages.extend(test_context(python_version, context, paths))
                               ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/ansible/test/sanity/code-smell/mypy.py", line 160, in test_context
    completed_process = subprocess.run(cmd, env=env, capture_output=True, check=True, text=True)
  File "/usr/lib/python3.13/subprocess.py", line 577, in run
    raise CalledProcessError(retcode, process.args,
                             output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['/root/.ansible/test/venv/sanity.mypy/3.13/7bc2266f/bin/python', '-m', 'mypy', '--show-column-numbers', '--show-error-codes', '--no-error-summary', '--allow-redefinition', '--follow-imports', 'normal', '--no-incremental', '--cache-dir', '/dev/null', '--platform', 'linux', '--python-executable', '/root/.ansible/test/venv/sanity.mypy/3.13/7bc2266f/bin/python', '--python-version', '3.13', '--config-file', PosixPath('/root/ansible/test/sanity/code-smell/mypy/ansible-test.ini'), 'test/lib/ansible_test/__init__.py', 'test/lib/ansible_test/_internal/__init__.py', 'test/lib/ansible_test/_internal/ansible_util.py', 'test/lib/ansible_test/_internal/become.py', 'test/lib/ansible_test/_internal/bootstrap.py', 'test/lib/ansible_test/_internal/cache.py', 'test/lib/ansible_test/_internal/cgroup.py', 'test/lib/ansible_test/_internal/ci/__init__.py', 'test/lib/ansible_test/_internal/ci/azp.py', 'test/lib/ansible_test/_internal/ci/local.py', 'test/lib/ansible_test/_internal/classification/__init__.py', 'test/lib/ansible_test/_internal/classification/common.py', 'test/lib/ansible_test/_internal/classification/csharp.py', 'test/lib/ansible_test/_internal/classification/powershell.py', 'test/lib/ansible_test/_internal/classification/python.py', 'test/lib/ansible_test/_internal/cli/__init__.py', 'test/lib/ansible_test/_internal/cli/actions.py', 'test/lib/ansible_test/_internal/cli/argparsing/__init__.py', 'test/lib/ansible_test/_internal/cli/argparsing/actions.py', 'test/lib/ansible_test/_internal/cli/argparsing/argcompletion.py', 'test/lib/ansible_test/_internal/cli/argparsing/parsers.py', 'test/lib/ansible_test/_internal/cli/commands/__init__.py', 'test/lib/ansible_test/_internal/cli/commands/coverage/__init__.py', 'test/lib/ansible_test/_internal/cli/commands/coverage/analyze/__init__.py', 'test/lib/ansible_test/_internal/cli/commands/coverage/analyze/targets/__init__.py', 'test/lib/ansible_test/_internal/cli/commands/coverage/analyze/targets/combine.py', 'test/lib/ansible_test/_internal/cli/commands/coverage/analyze/targets/expand.py', 'test/lib/ansible_test/_internal/cli/commands/coverage/analyze/targets/filter.py', 'test/lib/ansible_test/_internal/cli/commands/coverage/analyze/targets/generate.py', 'test/lib/ansible_test/_internal/cli/commands/coverage/analyze/targets/missing.py', 'test/lib/ansible_test/_internal/cli/commands/coverage/combine.py', 'test/lib/ansible_test/_internal/cli/commands/coverage/erase.py', 'test/lib/ansible_test/_internal/cli/commands/coverage/html.py', 'test/lib/ansible_test/_internal/cli/commands/coverage/report.py', 'test/lib/ansible_test/_internal/cli/commands/coverage/xml.py', 'test/lib/ansible_test/_internal/cli/commands/env.py', 'test/lib/ansible_test/_internal/cli/commands/integration/__init__.py', 'test/lib/ansible_test/_internal/cli/commands/integration/network.py', 'test/lib/ansible_test/_internal/cli/commands/integration/posix.py', 'test/lib/ansible_test/_internal/cli/commands/integration/windows.py', 'test/lib/ansible_test/_internal/cli/commands/sanity.py', 'test/lib/ansible_test/_internal/cli/commands/shell.py', 'test/lib/ansible_test/_internal/cli/commands/units.py', 'test/lib/ansible_test/_internal/cli/compat.py', 'test/lib/ansible_test/_internal/cli/completers.py', 'test/lib/ansible_test/_internal/cli/converters.py', 'test/lib/ansible_test/_internal/cli/environments.py', 'test/lib/ansible_test/_internal/cli/epilog.py', 'test/lib/ansible_test/_internal/cli/parsers/__init__.py', 'test/lib/ansible_test/_internal/cli/parsers/base_argument_parsers.py', 'test/lib/ansible_test/_internal/cli/parsers/helpers.py', 'test/lib/ansible_test/_internal/cli/parsers/host_config_parsers.py', 'test/lib/ansible_test/_internal/cli/parsers/key_value_parsers.py', 'test/lib/ansible_test/_internal/cli/parsers/value_parsers.py', 'test/lib/ansible_test/_internal/commands/__init__.py', 'test/lib/ansible_test/_internal/commands/coverage/__init__.py', 'test/lib/ansible_test/_internal/commands/coverage/analyze/__init__.py', 'test/lib/ansible_test/_internal/commands/coverage/analyze/targets/__init__.py', 'test/lib/ansible_test/_internal/commands/coverage/analyze/targets/combine.py', 'test/lib/ansible_test/_internal/commands/coverage/analyze/targets/expand.py', 'test/lib/ansible_test/_internal/commands/coverage/analyze/targets/filter.py', 'test/lib/ansible_test/_internal/commands/coverage/analyze/targets/generate.py', 'test/lib/ansible_test/_internal/commands/coverage/analyze/targets/missing.py', 'test/lib/ansible_test/_internal/commands/coverage/combine.py', 'test/lib/ansible_test/_internal/commands/coverage/erase.py', 'test/lib/ansible_test/_internal/commands/coverage/html.py', 'test/lib/ansible_test/_internal/commands/coverage/report.py', 'test/lib/ansible_test/_internal/commands/coverage/xml.py', 'test/lib/ansible_test/_internal/commands/env/__init__.py', 'test/lib/ansible_test/_internal/commands/integration/__init__.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/__init__.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/acme.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/aws.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/azure.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/cloudscale.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/cs.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/digitalocean.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/galaxy.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/gcp.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/hcloud.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/httptester.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/nios.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/opennebula.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/openshift.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/scaleway.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/vcenter.py', 'test/lib/ansible_test/_internal/commands/integration/cloud/vultr.py', 'test/lib/ansible_test/_internal/commands/integration/coverage.py', 'test/lib/ansible_test/_internal/commands/integration/filters.py', 'test/lib/ansible_test/_internal/commands/integration/network.py', 'test/lib/ansible_test/_internal/commands/integration/posix.py', 'test/lib/ansible_test/_internal/commands/integration/windows.py', 'test/lib/ansible_test/_internal/commands/sanity/__init__.py', 'test/lib/ansible_test/_internal/commands/sanity/ansible_doc.py', 'test/lib/ansible_test/_internal/commands/sanity/bin_symlinks.py', 'test/lib/ansible_test/_internal/commands/sanity/compile.py', 'test/lib/ansible_test/_internal/commands/sanity/ignores.py', 'test/lib/ansible_test/_internal/commands/sanity/import.py', 'test/lib/ansible_test/_internal/commands/sanity/integration_aliases.py', 'test/lib/ansible_test/_internal/commands/sanity/pep8.py', 'test/lib/ansible_test/_internal/commands/sanity/pslint.py', 'test/lib/ansible_test/_internal/commands/sanity/pylint.py', 'test/lib/ansible_test/_internal/commands/sanity/shellcheck.py', 'test/lib/ansible_test/_internal/commands/sanity/validate_modules.py', 'test/lib/ansible_test/_internal/commands/sanity/yamllint.py', 'test/lib/ansible_test/_internal/commands/shell/__init__.py', 'test/lib/ansible_test/_internal/commands/units/__init__.py', 'test/lib/ansible_test/_internal/compat/__init__.py', 'test/lib/ansible_test/_internal/compat/packaging.py', 'test/lib/ansible_test/_internal/compat/yaml.py', 'test/lib/ansible_test/_internal/completion.py', 'test/lib/ansible_test/_internal/config.py', 'test/lib/ansible_test/_internal/connections.py', 'test/lib/ansible_test/_internal/constants.py', 'test/lib/ansible_test/_internal/containers.py', 'test/lib/ansible_test/_internal/content_config.py', 'test/lib/ansible_test/_internal/core_ci.py', 'test/lib/ansible_test/_internal/coverage_util.py', 'test/lib/ansible_test/_internal/data.py', 'test/lib/ansible_test/_internal/delegation.py', 'test/lib/ansible_test/_internal/dev/__init__.py', 'test/lib/ansible_test/_internal/dev/container_probe.py', 'test/lib/ansible_test/_internal/diff.py', 'test/lib/ansible_test/_internal/docker_util.py', 'test/lib/ansible_test/_internal/encoding.py', 'test/lib/ansible_test/_internal/executor.py', 'test/lib/ansible_test/_internal/git.py', 'test/lib/ansible_test/_internal/host_configs.py', 'test/lib/ansible_test/_internal/host_profiles.py', 'test/lib/ansible_test/_internal/http.py', 'test/lib/ansible_test/_internal/init.py', 'test/lib/ansible_test/_internal/inventory.py', 'test/lib/ansible_test/_internal/io.py', 'test/lib/ansible_test/_internal/locale_util.py', 'test/lib/ansible_test/_internal/metadata.py', 'test/lib/ansible_test/_internal/payload.py', 'test/lib/ansible_test/_internal/provider/__init__.py', 'test/lib/ansible_test/_internal/provider/layout/__init__.py', 'test/lib/ansible_test/_internal/provider/layout/ansible.py', 'test/lib/ansible_test/_internal/provider/layout/collection.py', 'test/lib/ansible_test/_internal/provider/layout/unsupported.py', 'test/lib/ansible_test/_internal/provider/source/__init__.py', 'test/lib/ansible_test/_internal/provider/source/git.py', 'test/lib/ansible_test/_internal/provider/source/installed.py', 'test/lib/ansible_test/_internal/provider/source/unsupported.py', 'test/lib/ansible_test/_internal/provider/source/unversioned.py', 'test/lib/ansible_test/_internal/provisioning.py', 'test/lib/ansible_test/_internal/pypi_proxy.py', 'test/lib/ansible_test/_internal/python_requirements.py', 'test/lib/ansible_test/_internal/ssh.py', 'test/lib/ansible_test/_internal/target.py', 'test/lib/ansible_test/_internal/test.py', 'test/lib/ansible_test/_internal/thread.py', 'test/lib/ansible_test/_internal/timeout.py', 'test/lib/ansible_test/_internal/util.py', 'test/lib/ansible_test/_internal/util_common.py', 'test/lib/ansible_test/_internal/venv.py', 'test/lib/ansible_test/_util/__init__.py', 'test/lib/ansible_test/_util/controller/sanity/code-smell/action-plugin-docs.py', 'test/lib/ansible_test/_util/controller/sanity/code-smell/changelog.py', 'test/lib/ansible_test/_util/controller/sanity/code-smell/changelog/sphinx.py', 'test/lib/ansible_test/_util/controller/sanity/code-smell/empty-init.py', 'test/lib/ansible_test/_util/controller/sanity/code-smell/line-endings.py', 'test/lib/ansible_test/_util/controller/sanity/code-smell/no-assert.py', 'test/lib/ansible_test/_util/controller/sanity/code-smell/no-get-exception.py', 'test/lib/ansible_test/_util/controller/sanity/code-smell/no-illegal-filenames.py', 'test/lib/ansible_test/_util/controller/sanity/code-smell/no-smart-quotes.py', 'test/lib/ansible_test/_util/controller/sanity/code-smell/replace-urlopen.py', 'test/lib/ansible_test/_util/controller/sanity/code-smell/runtime-metadata.py', 'test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py', 'test/lib/ansible_test/_util/controller/sanity/code-smell/symlinks.py', 'test/lib/ansible_test/_util/controller/sanity/code-smell/use-argspec-type-path.py', 'test/lib/ansible_test/_util/controller/sanity/code-smell/use-compat-six.py', 'test/lib/ansible_test/_util/controller/sanity/integration-aliases/yaml_to_json.py', 'test/lib/ansible_test/_util/controller/sanity/pylint/plugins/deprecated.py', 'test/lib/ansible_test/_util/controller/sanity/pylint/plugins/hide_unraisable.py', 'test/lib/ansible_test/_util/controller/sanity/pylint/plugins/string_format.py', 'test/lib/ansible_test/_util/controller/sanity/pylint/plugins/unwanted.py', 'test/lib/ansible_test/_util/controller/sanity/validate-modules/validate.py', 'test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/__init__.py', 'test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/main.py', 'test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/module_args.py', 'test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py', 'test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/utils.py', 'test/lib/ansible_test/_util/controller/sanity/yamllint/yamllinter.py', 'test/lib/ansible_test/_util/controller/tools/collection_detail.py', 'test/lib/ansible_test/_util/controller/tools/yaml_to_json.py', 'test/lib/ansible_test/_util/target/__init__.py', 'test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py', 'test/lib/ansible_test/_util/target/common/constants.py', 'test/lib/ansible_test/_util/target/injector/python.py', 'test/lib/ansible_test/_util/target/pytest/plugins/ansible_forked.py', 'test/lib/ansible_test/_util/target/pytest/plugins/ansible_pytest_collections.py', 'test/lib/ansible_test/_util/target/pytest/plugins/ansible_pytest_coverage.py', 'test/lib/ansible_test/_util/target/pytest/plugins/ansible_pytest_unit_test_module_mocks.py', 'test/lib/ansible_test/_util/target/sanity/compile/compile.py', 'test/lib/ansible_test/_util/target/sanity/import/importer.py', 'test/lib/ansible_test/_util/target/setup/probe_cgroups.py', 'test/lib/ansible_test/_util/target/setup/quiet_pip.py', 'test/lib/ansible_test/_util/target/setup/requirements.py', 'test/lib/ansible_test/_util/target/tools/virtualenvcheck.py', 'test/lib/ansible_test/_util/target/tools/yamlcheck.py']' returned non-zero exit status 2.

The test ansible-test sanity --test pep8 [explain] failed with 1 error:

test/units/module_utils/basic/test_exit_json.py:100:5: E303: too many blank lines (2)

The test ansible-test sanity --test pylint [explain] failed with 1 error:

test/lib/ansible_test/_util/target/pytest/plugins/ansible_pytest_unit_test_module_mocks.py:45:34: syntax-error: Parsing failed: 'invalid syntax (ansible_pytest_unit_test_module_mocks, line 45)'

click here for bot help

@ansibot ansibot added the needs_rebase https://docs.ansible.com/ansible/devel/dev_guide/developing_rebasing.html label Mar 22, 2025
@ansibot ansibot added the stale_ci This PR has been tested by CI more than one week ago. Close and re-open this PR to get it retested. label Mar 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

affects_2.10 This issue/PR affects Ansible v2.10 cloud collection Related to Ansible Collections work docker docs This issue/PR relates to or includes documentation. docsite This issue/PR relates to the documentation website. feature This issue/PR relates to a feature request. needs_rebase https://docs.ansible.com/ansible/devel/dev_guide/developing_rebasing.html needs_revision This PR fails CI tests or a maintainer has requested a review/revision of the PR. net_tools Net-tools category new_plugin This PR includes a new plugin. packaging Packaging category remote_management Working Group: https://docs.ansible.com/ansible/latest/community/communication.html stale_ci This PR has been tested by CI more than one week ago. Close and re-open this PR to get it retested. stale_review Updates were made after the last review and the last review is more than 7 days old. support:core This issue/PR relates to code supported by the Ansible Engineering Team. test This PR relates to tests. WIP This issue/PR is a work in progress. Nevertheless it was shared for getting input from peers.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants