1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Merge branch 'ahtik-fix-lineinfile-eof-newline' into devel

This commit is contained in:
James Cammarata 2014-06-12 09:15:12 -05:00
commit 8a1741e2d8
4 changed files with 57 additions and 2 deletions

View file

@ -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:
@ -110,7 +111,7 @@ options:
validate: validate:
required: false required: false
description: description:
- validation to run before copying into place. The command is passed - validation to run before copying into place. The command is passed
securely so shell features like expansion and pipes won't work. securely so shell features like expansion and pipes won't work.
required: false required: false
default: None default: None
@ -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

View file

@ -0,0 +1,2 @@
This is line 1
This is line 2

View file

@ -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'"