blockinfile - fix line end regression (#69734)

PR #66461 introduced a regression that resulted in an in correct block in the file
if the block to be inserted did not end with a line separator. Fix this bug and add
tests to cover this scenario.
pull/39140/head
Sam Doran 5 years ago committed by GitHub
parent 65c57a7f5b
commit d7618712fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,4 @@
bugfixes:
- >
blockinfile - fix regression that results in incorrect block in file when the
block to be inserted does not end in a line separator (https://github.com/ansible/ansible/pull/69734)

@ -272,6 +272,8 @@ def main():
# Escape sequences like '\n' need to be handled in Ansible 1.x
if module.ansible_version.startswith('1.'):
block = re.sub('', block, '')
if not block.endswith(b(os.linesep)):
block += b(os.linesep)
blocklines = [marker0] + block.splitlines(True) + [marker1]
else:
blocklines = []

@ -137,3 +137,35 @@
- 'blockinfile_test2 is changed'
- 'blockinfile_test2.msg == "Block inserted"'
- 'blockinfile_test2_grep.stdout == "6"'
- name: Add block without trailing line separator
blockinfile:
path: "{{ output_dir_test }}/chomped_block_test.txt"
create: yes
content: |-
one
two
three
register: chomptest1
- name: Add block without trailing line separator again
blockinfile:
path: "{{ output_dir_test }}/chomped_block_test.txt"
content: |-
one
two
three
register: chomptest2
- name: Check output file
stat:
path: "{{ output_dir_test }}/chomped_block_test.txt"
register: chomptest_file
- name: Ensure chomptest results are correct
assert:
that:
- chomptest1 is changed
- chomptest2 is not changed
- chomptest_file.stat.checksum == '50d49f528a5f7147c7029ed6220c326b1ee2c4ae'

Loading…
Cancel
Save