--- #################################################################### # WARNING: These are designed specifically for Ansible tests # # and should not be used as examples of how to write Ansible roles # #################################################################### # Copyright (c) Ansible Project # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # SPDX-License-Identifier: GPL-3.0-or-later - name: Install python 3.14 when no uv executable exists uv_python: version: 3.14 state: present check_mode: yes register: failed_install ignore_errors: true - name: Verify python 3.14 installation failed assert: that: - failed_install.failed is true - name: Install uv shell: | curl -LsSf https://astral.sh/uv/install.sh | sh environment: UV_INSTALL_DIR: /usr/local/bin - name: Install python 3.14 in check mode uv_python: version: 3.14 state: present check_mode: yes register: install_check_mode - name: Verify python 3.14 installation in check mode assert: that: - install_check_mode.changed is true - install_check_mode.failed is false - '"3.14" in install_check_mode.python_version' - name: Install python 3.14 uv_python: version: 3.14 state: present register: install_python - name: Verify python 3.14 installation in check mode assert: that: - install_python.changed is true - install_python.failed is false - '"3.14" in install_python.python_version' - name: Re-install python 3.14 uv_python: version: 3.14 state: present register: reinstall_python - name: Verify python 3.14 re-installation assert: that: - reinstall_python.changed is false - reinstall_python.failed is false - '"3.14" in reinstall_python.python_version' - name: Install latest python 3.15 # installs latest patch version for 3.15 uv_python: version: 3.15 state: latest register: install_latest_python - name: Verify python 3.15 installation assert: that: - install_latest_python.changed is true - install_latest_python.failed is false - '"3.15" in install_latest_python.stdout' - name: Install python 3.13.5 uv_python: version: 3.13.5 state: present register: install_python - name: Verify python 3.13.5 installation assert: that: - install_python.changed is true - install_python.failed is false - '"3.13.5" in install_python.python_version' - name: Re-install python 3.13.5 uv_python: version: 3.13.5 state: present register: reinstall_python - name: Verify python 3.13.5 installation assert: that: - reinstall_python.changed is false - reinstall_python.failed is false - '"3.13.5" in reinstall_python.python_version' - name: Remove unexisting python 3.10 # removes latest patch version for 3.10 if exists uv_python: version: 3.10 state: absent register: remove_python - name: Verify python 3.10 deletion assert: that: - remove_python.changed is false - remove_python.failed is false - 'remove_python.stdout == ""' - name: Remove python 3.13.5 in check mode uv_python: version: 3.13.5 state: absent check_mode: true register: remove_python_in_check_mode - name: Verify python 3.13.5 deletion in check mode assert: that: - remove_python_in_check_mode.changed is true - remove_python_in_check_mode.failed is false - '"3.13.5" in remove_python_in_check_mode.stdout' - name: Remove python 3.13.5 uv_python: version: 3.13.5 state: absent register: remove_python - name: Verify python 3.13.5 deletion assert: that: - remove_python.changed is true - remove_python.failed is false - '"3.13.5" in remove_python_in_check_mode.stdout' - name: Remove python 3.13.5 again uv_python: version: 3.13.5 state: absent register: remove_python - name: Verify python 3.13.5 deletion again assert: that: - remove_python.changed is false - remove_python.failed is false - 'remove_python.stdout == ""' - name: Install python 3 uv_python: version: 3 state: present register: invalid_version ignore_errors: true - name: Assert invalid version failed ansible.builtin.assert: that: - invalid_version is failed - '"Expected formats are X.Y or X.Y.Z" in invalid_version.msg' - name: Upgrade python 3.13 uv_python: version: 3.13 state: latest register: upgrade_python - name: Verify python 3.13 upgrade assert: that: - upgrade_python.changed is true - upgrade_python.failed is false - '"3.13" in upgrade_python.stdout' - name: Upgrade python 3.13 in check mode uv_python: version: 3.13 state: latest check_mode: yes register: upgrade_python - name: Verify python 3.13 upgrade in check mode assert: that: - upgrade_python.changed is false - upgrade_python.failed is false - '"3.13" in upgrade_python.stdout' - name: Upgrade python 3.13 again uv_python: version: 3.13 state: latest check_mode: yes register: upgrade_python - name: Verify python 3.13 upgrade again assert: that: - upgrade_python.changed is false - upgrade_python.failed is false - '"3.13" in upgrade_python.stdout' - name: Install unexisting python version in check mode uv_python: version: 3.12.13 state: present register: unexisting_python_check_mode ignore_errors: true check_mode: true - name: Verify unexisting python 3.12.13 install in check mode assert: that: - unexisting_python_check_mode.changed is false - unexisting_python_check_mode.failed is true - '"Version 3.12.13 is not available." in unexisting_python_check_mode.msg' - name: Install unexisting python version uv_python: version: 3.12.13 state: present register: unexisting_python ignore_errors: true - name: Verify unexisting python 3.12.13 install assert: that: - unexisting_python.changed is false - unexisting_python.failed is true - name: Install unexisting python version with latest state uv_python: version: 3.12.13 state: latest register: unexisting_python ignore_errors: true - name: Verify python 3.12.13 deletion with latest state assert: that: - unexisting_python.changed is false - unexisting_python.failed is true