summaryrefslogtreecommitdiff
path: root/test/integration/targets/win_xml
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/targets/win_xml')
-rw-r--r--test/integration/targets/win_xml/files/plane.zipbin0 -> 792 bytes
-rw-r--r--test/integration/targets/win_xml/tasks/main.yml63
2 files changed, 57 insertions, 6 deletions
diff --git a/test/integration/targets/win_xml/files/plane.zip b/test/integration/targets/win_xml/files/plane.zip
new file mode 100644
index 0000000000..8157182aac
--- /dev/null
+++ b/test/integration/targets/win_xml/files/plane.zip
Binary files differ
diff --git a/test/integration/targets/win_xml/tasks/main.yml b/test/integration/targets/win_xml/tasks/main.yml
index 112d86cccb..26c991a61e 100644
--- a/test/integration/targets/win_xml/tasks/main.yml
+++ b/test/integration/targets/win_xml/tasks/main.yml
@@ -19,11 +19,11 @@
- name: copy a test .xml file
win_copy:
src: config.xml
- dest: "{{win_output_dir}}\\config.xml"
+ dest: "{{ win_output_dir }}\\config.xml"
- name: add an element that only has a text child node
win_xml:
- path: "{{win_output_dir}}\\config.xml"
+ path: "{{ win_output_dir }}\\config.xml"
fragment: '<string key="answer">42</string>'
xpath: '/config'
register: element_add_result
@@ -35,7 +35,7 @@
- name: try to add the element that only has a text child node again
win_xml:
- path: "{{win_output_dir}}\\config.xml"
+ path: "{{ win_output_dir }}\\config.xml"
fragment: '<string key="answer">42</string>'
xpath: '/config'
register: element_add_result_second
@@ -48,11 +48,11 @@
- name: copy a test log4j.xml
win_copy:
src: log4j.xml
- dest: "{{win_output_dir}}\\log4j.xml"
+ dest: "{{ win_output_dir }}\\log4j.xml"
- name: change an attribute to fatal logging
win_xml:
- path: "{{win_output_dir}}\\log4j.xml"
+ path: "{{ win_output_dir }}\\log4j.xml"
xpath: '/log4j:configuration/logger[@name="org.apache.commons.digester"]/level'
type: attribute
attribute: 'value'
@@ -60,7 +60,7 @@
- name: try to change the attribute again
win_xml:
- path: "{{win_output_dir}}\\log4j.xml"
+ path: "{{ win_output_dir }}\\log4j.xml"
xpath: '/log4j:configuration/logger[@name="org.apache.commons.digester"]/level'
type: attribute
attribute: 'value'
@@ -71,3 +71,54 @@
assert:
that:
- not attribute_changed_result is changed
+
+# This testing is for https://github.com/ansible/ansible/issues/48471
+# The issue was that an .xml with no encoding declaration, but a UTF8 BOM
+# with some UTF-8 characters was being written out with garbage characters.
+# The characters added by win_xml were not UTF-8 characters.
+
+- name: copy test files (https://github.com/ansible/ansible/issues/48471)
+ win_copy:
+ src: plane.zip
+ dest: "{{ win_output_dir }}\\plane.zip"
+
+- name: unarchive the test files
+ win_unzip:
+ src: "{{ win_output_dir }}\\plane.zip"
+ dest: "{{ win_output_dir }}\\"
+
+- name: change a text value in a file with UTF8 BOM and armenian characters in the description
+ win_xml:
+ path: "{{ win_output_dir }}\\plane-utf8-bom-armenian-characters.xml"
+ xpath: '/plane/year'
+ type: text
+ fragment: '1988'
+
+- name: register the sha1 of the new file
+ win_stat:
+ path: "{{ win_output_dir }}\\plane-utf8-bom-armenian-characters.xml"
+ get_checksum: yes
+ register: sha1_checksum
+
+- name: verify the checksum
+ assert:
+ that:
+ - sha1_checksum.stat.checksum == 'e3e18c3066e1bfce9a5cf87c81353fa174440944'
+
+- name: change a text value in a file with UTF-16 BE BOM and Chinese characters in the description
+ win_xml:
+ path: "{{ win_output_dir }}\\plane-utf16be-bom-chinese-characters.xml"
+ xpath: '/plane/year'
+ type: text
+ fragment: '1988'
+
+- name: register the sha1 of the new file
+ win_stat:
+ path: "{{ win_output_dir}}\\plane-utf16be-bom-chinese-characters.xml"
+ get_checksum: yes
+ register: sha1_checksum
+
+- name: verify the checksum
+ assert:
+ that:
+ - sha1_checksum.stat.checksum == 'de86f79b409383447cf4cf112b20af8ffffcfdbf'