Merge branch 'fix-lineinfile-eof-newline' of https://github.com/ahtik/ansible into ahtik-fix-lineinfile-eof-newline

pull/7745/head
James Cammarata 11 years ago
commit d90f0bdfad

@ -2,6 +2,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# (c) 2012, Daniel Hokka Zakrisson <daniel@hozac.com> # (c) 2012, Daniel Hokka Zakrisson <daniel@hozac.com>
# (c) 2014, Ahti Kitsik <ak@ahtik.com>
# #
# This file is part of Ansible # This file is part of Ansible
# #
@ -25,7 +26,7 @@ import tempfile
DOCUMENTATION = """ DOCUMENTATION = """
--- ---
module: lineinfile module: lineinfile
author: Daniel Hokka Zakrisson author: Daniel Hokka Zakrisson, Ahti Kitsik
short_description: Ensure a particular line is in a file, or replace an short_description: Ensure a particular line is in a file, or replace an
existing line using a back-referenced regular expression. existing line using a back-referenced regular expression.
description: description:
@ -251,6 +252,11 @@ def present(module, dest, regexp, line, insertafter, insertbefore, create,
# if insertafter=/insertbefore didn't match anything # if insertafter=/insertbefore didn't match anything
# (so default behaviour is to add at the end) # (so default behaviour is to add at the end)
elif insertafter == 'EOF': elif insertafter == 'EOF':
# If the file is not empty then ensure there's a newline before the added line
if len(lines)>0 and not (lines[-1].endswith('\n') or lines[-1].endswith('\r')):
lines.append(os.linesep)
lines.append(line + os.linesep) lines.append(line + os.linesep)
msg = 'line added' msg = 'line added'
changed = True changed = True

@ -209,3 +209,50 @@
that: that:
- "result.stat.md5 == 'fef1d487711facfd7aa2c87d788c19d9'" - "result.stat.md5 == 'fef1d487711facfd7aa2c87d788c19d9'"
# Test EOF in cases where file has no newline at EOF
- name: testnoeof deploy the file for lineinfile
copy: src=testnoeof.txt dest={{output_dir}}/testnoeof.txt
register: result
- name: testnoeof insert a line at the end of the file
lineinfile: dest={{output_dir}}/testnoeof.txt state=present line="New line at the end" insertafter="EOF"
register: result
- name: testempty assert that the line was inserted at the end of the file
assert:
that:
- "result.changed == true"
- "result.msg == 'line added'"
- name: testnoeof stat the no newline EOF test after the insert at the end
stat: path={{output_dir}}/testnoeof.txt
register: result
- name: testnoeof assert test md5 matches after the insert at the end
assert:
that:
- "result.stat.md5 == 'f75c9d51f45afd7295000e63ce655220'"
# Test EOF with empty file to make sure no unneccessary newline is added
- name: testempty deploy the testempty file for lineinfile
copy: src=testempty.txt dest={{output_dir}}/testempty.txt
register: result
- name: testempty insert a line at the end of the file
lineinfile: dest={{output_dir}}/testempty.txt state=present line="New line at the end" insertafter="EOF"
register: result
- name: testempty assert that the line was inserted at the end of the file
assert:
that:
- "result.changed == true"
- "result.msg == 'line added'"
- name: testempty stat the test after the insert at the end
stat: path={{output_dir}}/testempty.txt
register: result
- name: testempty assert test md5 matches after the insert at the end
assert:
that:
- "result.stat.md5 == '357dcbee8dfb4436f63bab00a235c45a'"

Loading…
Cancel
Save