Files
community.general/tests/integration/targets/xml/tasks/main.yml
patchback[bot] 7f688e78bf [PR #11959/d87a8a16 backport][stable-12] xml: fail for non-string values (#12001)
xml: fail for non-string `value`s (#11959)

* fix(xml): coerce boolean values to string with a warning

Fixes #7171



* test(xml): add integration tests for boolean value handling



* changelog: add fragment for PR 11959



* adjustments from review

* test(xml): update boolean-value integration tests to expect failure

Now that xml fails on non-string values, replace the old success-path
tests with failure assertions and add a positive test for quoted strings.
Remove the no-longer-needed result XML fixtures.



* adjustments from review

* fix(xml): correct boolean test assertions to match actual error message format



---------


(cherry picked from commit d87a8a167f)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 20:10:45 +02:00

89 lines
3.7 KiB
YAML

---
####################################################################
# 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 lxml (FreeBSD)
package:
name: 'py{{ ansible_facts.python.version.major }}{{ ansible_facts.python.version.minor }}-lxml'
state: present
when: ansible_facts.os_family == "FreeBSD"
- name: Install requirements (RHEL 8)
package:
name:
- libxml2-devel
- libxslt-devel
- python3-lxml
state: present
when: ansible_facts.distribution == "RedHat" and ansible_facts.distribution_major_version == "8"
# Needed for MacOSX !
- name: Install lxml
pip:
name: lxml
state: present
# when: ansible_facts.os_family == "Darwin"
- name: Get lxml version
command: "{{ ansible_python_interpreter }} -c 'from lxml import etree; print(\".\".join(str(v) for v in etree.LXML_VERSION))'"
register: lxml_version
- name: Set lxml capabilities as variables
set_fact:
# NOTE: Some tests require predictable element attribute order,
# which is only guaranteed starting from lxml v3.0alpha1
lxml_predictable_attribute_order: '{{ lxml_version.stdout is version("3", ">=") }}'
# NOTE: The xml module requires at least lxml v2.3.0
lxml_xpath_attribute_result_attrname: '{{ lxml_version.stdout is version("2.3.0", ">=") }}'
- name: Only run the tests when lxml v2.3.0+
when: lxml_xpath_attribute_result_attrname
block:
- include_tasks: test-add-children-elements.yml
- include_tasks: test-add-children-from-groupvars.yml
- include_tasks: test-add-children-insertafter.yml
- include_tasks: test-add-children-insertbefore.yml
- include_tasks: test-add-children-with-attributes.yml
- include_tasks: test-add-element-implicitly.yml
- include_tasks: test-count.yml
- include_tasks: test-mutually-exclusive-attributes.yml
- include_tasks: test-remove-attribute.yml
- include_tasks: test-remove-attribute-nochange.yml
- include_tasks: test-remove-element.yml
- include_tasks: test-remove-element-nochange.yml
- include_tasks: test-set-attribute-value.yml
- include_tasks: test-set-attribute-value-boolean.yml
- include_tasks: test-set-children-elements.yml
- include_tasks: test-set-children-elements-level.yml
- include_tasks: test-set-children-elements-value.yml
- include_tasks: test-set-element-value.yml
- include_tasks: test-set-element-value-empty.yml
- include_tasks: test-pretty-print.yml
- include_tasks: test-pretty-print-only.yml
- include_tasks: test-add-namespaced-children-elements.yml
- include_tasks: test-remove-namespaced-attribute.yml
- include_tasks: test-remove-namespaced-attribute-nochange.yml
- include_tasks: test-set-namespaced-attribute-value.yml
- include_tasks: test-set-namespaced-element-value.yml
- include_tasks: test-set-namespaced-children-elements.yml
- include_tasks: test-get-element-content.yml
- include_tasks: test-xmlstring.yml
- include_tasks: test-children-elements-xml.yml
# Unicode tests
- include_tasks: test-add-children-elements-unicode.yml
- include_tasks: test-add-children-with-attributes-unicode.yml
- include_tasks: test-set-attribute-value-unicode.yml
- include_tasks: test-count-unicode.yml
- include_tasks: test-get-element-content.yml
- include_tasks: test-set-children-elements-unicode.yml
- include_tasks: test-set-element-value-unicode.yml