summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorSam Doran <sdoran@ansible.com>2018-02-21 21:08:45 -0500
committerMatt Davis <nitzmahone@users.noreply.github.com>2018-02-21 18:08:45 -0800
commit84debca5fb0014b3c85c6e2ab1228d96df60a3aa (patch)
tree622091e27902a7a7be9cc2660b46a1e358428e49 /test
parent26cdfd84a029286a683691cd36f514248bfda19c (diff)
downloadansible-84debca5fb0014b3c85c6e2ab1228d96df60a3aa.tar.gz
Check for regexp match when using insertbefore or insertafter (#36474) (#36552)
Add tests to cover this scenario Add changelog fragment Fixes #36156 (cherry picked from commit 723daf3e3a6ab750ba9d1b38b94f618609692bb5)
Diffstat (limited to 'test')
-rw-r--r--test/integration/targets/lineinfile/files/test.conf5
-rw-r--r--test/integration/targets/lineinfile/tasks/main.yml164
-rw-r--r--test/integration/targets/lineinfile/vars/main.yml17
3 files changed, 186 insertions, 0 deletions
diff --git a/test/integration/targets/lineinfile/files/test.conf b/test/integration/targets/lineinfile/files/test.conf
new file mode 100644
index 0000000000..15404cd692
--- /dev/null
+++ b/test/integration/targets/lineinfile/files/test.conf
@@ -0,0 +1,5 @@
+[section_one]
+
+[section_two]
+
+[section_three]
diff --git a/test/integration/targets/lineinfile/tasks/main.yml b/test/integration/targets/lineinfile/tasks/main.yml
index 48404f46a4..c497907ea6 100644
--- a/test/integration/targets/lineinfile/tasks/main.yml
+++ b/test/integration/targets/lineinfile/tasks/main.yml
@@ -544,3 +544,167 @@
assert:
that:
- result.stat.checksum == 'a8452bb3643be8d18ba3fc212632b1633bd9f885'
+
+###################################################################
+# Issue 36156
+# Test insertbefore and insertafter with regexp
+
+- name: Deploy the test.conf file
+ copy:
+ src: test.conf
+ dest: "{{ output_dir }}/test.conf"
+ register: result
+
+- name: Assert that the test.conf file was deployed
+ assert:
+ that:
+ - result is changed
+ - result.checksum == '6037f13e419b132eb3fd20a89e60c6c87a6add38'
+ - result.state == 'file'
+
+# Test instertafter
+- name: Insert lines after with regexp
+ lineinfile:
+ path: "{{ output_dir }}/test.conf"
+ regexp: "{{ item.regexp }}"
+ line: "{{ item.line }}"
+ insertafter: "{{ item.after }}"
+ with_items: "{{ test_befaf_regexp }}"
+ register: _multitest_5
+
+- name: Do the same thing again and check for changes
+ lineinfile:
+ path: "{{ output_dir }}/test.conf"
+ regexp: "{{ item.regexp }}"
+ line: "{{ item.line }}"
+ insertafter: "{{ item.after }}"
+ with_items: "{{ test_befaf_regexp }}"
+ register: _multitest_6
+
+- name: Assert that the file was changed the first time but not the second time
+ assert:
+ that:
+ - item.0 is changed
+ - item.1 is not changed
+ with_together:
+ - "{{ _multitest_5.results }}"
+ - "{{ _multitest_6.results }}"
+
+- name: Stat the file
+ stat:
+ path: "{{ output_dir }}/test.conf"
+ register: result
+
+- name: Assert that the file contents match what is expected
+ assert:
+ that:
+ - result.stat.checksum == '06e2c456e5028dd7bcd0b117b5927a1139458c82'
+
+- name: Do the same thing a third time without regexp and check for changes
+ lineinfile:
+ path: "{{ output_dir }}/test.conf"
+ line: "{{ item.line }}"
+ insertafter: "{{ item.after }}"
+ with_items: "{{ test_befaf_regexp }}"
+ register: _multitest_7
+
+- name: Stat the file
+ stat:
+ path: "{{ output_dir }}/test.conf"
+ register: result
+
+- name: Assert that the file was changed when no regexp was provided
+ assert:
+ that:
+ - item is changed
+ with_items: "{{ _multitest_7.results }}"
+
+- name: Stat the file
+ stat:
+ path: "{{ output_dir }}/test.conf"
+ register: result
+
+- name: Assert that the file contents match what is expected
+ assert:
+ that:
+ - result.stat.checksum == '5bf50f3d74afd20de4010ca5c04bc7037b062d30'
+
+# Test insertbefore
+- name: Deploy the test.conf file
+ copy:
+ src: test.conf
+ dest: "{{ output_dir }}/test.conf"
+ register: result
+
+- name: Assert that the test.conf file was deployed
+ assert:
+ that:
+ - result is changed
+ - result.checksum == '6037f13e419b132eb3fd20a89e60c6c87a6add38'
+ - result.state == 'file'
+
+- name: Insert lines before with regexp
+ lineinfile:
+ path: "{{ output_dir }}/test.conf"
+ regexp: "{{ item.regexp }}"
+ line: "{{ item.line }}"
+ insertbefore: "{{ item.before }}"
+ with_items: "{{ test_befaf_regexp }}"
+ register: _multitest_8
+
+- name: Do the same thing again and check for changes
+ lineinfile:
+ path: "{{ output_dir }}/test.conf"
+ regexp: "{{ item.regexp }}"
+ line: "{{ item.line }}"
+ insertbefore: "{{ item.before }}"
+ with_items: "{{ test_befaf_regexp }}"
+ register: _multitest_9
+
+- name: Assert that the file was changed the first time but not the second time
+ assert:
+ that:
+ - item.0 is changed
+ - item.1 is not changed
+ with_together:
+ - "{{ _multitest_8.results }}"
+ - "{{ _multitest_9.results }}"
+
+- name: Stat the file
+ stat:
+ path: "{{ output_dir }}/test.conf"
+ register: result
+
+- name: Assert that the file contents match what is expected
+ assert:
+ that:
+ - result.stat.checksum == 'c3be9438a07c44d4c256cebfcdbca15a15b1db91'
+
+- name: Do the same thing a third time without regexp and check for changes
+ lineinfile:
+ path: "{{ output_dir }}/test.conf"
+ line: "{{ item.line }}"
+ insertbefore: "{{ item.before }}"
+ with_items: "{{ test_befaf_regexp }}"
+ register: _multitest_10
+
+- name: Stat the file
+ stat:
+ path: "{{ output_dir }}/test.conf"
+ register: result
+
+- name: Assert that the file was changed when no regexp was provided
+ assert:
+ that:
+ - item is changed
+ with_items: "{{ _multitest_10.results }}"
+
+- name: Stat the file
+ stat:
+ path: "{{ output_dir }}/test.conf"
+ register: result
+
+- name: Assert that the file contents match what is expected
+ assert:
+ that:
+ - result.stat.checksum == 'eca8d8ea089d4ea57a3b87d4091599ca8b60dfd2'
diff --git a/test/integration/targets/lineinfile/vars/main.yml b/test/integration/targets/lineinfile/vars/main.yml
index bee5e932c5..6e99d4f1a4 100644
--- a/test/integration/targets/lineinfile/vars/main.yml
+++ b/test/integration/targets/lineinfile/vars/main.yml
@@ -10,3 +10,20 @@ test_regexp:
- regex: '4'
replace: 'bar'
+
+
+test_befaf_regexp:
+ - before: section_three
+ after: section_one
+ regexp: option_one=
+ line: option_one=1
+
+ - before: section_three
+ after: section_one
+ regexp: option_two=
+ line: option_two=2
+
+ - before: section_three
+ after: section_one
+ regexp: option_three=
+ line: option_three=3