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:
commit
8a1741e2d8
4 changed files with 57 additions and 2 deletions
|
@ -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
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
This is line 1
|
||||||
|
This is line 2
|
|
@ -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…
Reference in a new issue