Fix quoting issues in lineinfile for individual single-quotes
Fixes #8806
This commit is contained in:
parent
1c3039f079
commit
dc9482d548
2 changed files with 25 additions and 2 deletions
|
@ -369,14 +369,19 @@ def main():
|
||||||
# so we need to know if we should specifically unquote it.
|
# so we need to know if we should specifically unquote it.
|
||||||
should_unquote = not is_quoted(line)
|
should_unquote = not is_quoted(line)
|
||||||
|
|
||||||
|
# always add one layer of quotes
|
||||||
|
line = "'%s'" % line
|
||||||
|
|
||||||
# Replace escape sequences like '\n' while being sure
|
# Replace escape sequences like '\n' while being sure
|
||||||
# not to replace octal escape sequences (\ooo) since they
|
# not to replace octal escape sequences (\ooo) since they
|
||||||
# match the backref syntax.
|
# match the backref syntax.
|
||||||
if backrefs:
|
if backrefs:
|
||||||
line = re.sub(r'(\\[0-9]{1,3})', r'\\\1', line)
|
line = re.sub(r'(\\[0-9]{1,3})', r'\\\1', line)
|
||||||
line = module.safe_eval(pipes.quote(line))
|
line = module.safe_eval(line)
|
||||||
|
|
||||||
# Now remove quotes around the string, if needed
|
# Now remove quotes around the string, if needed after
|
||||||
|
# removing the layer we added above
|
||||||
|
line = unquote(line)
|
||||||
if should_unquote:
|
if should_unquote:
|
||||||
line = unquote(line)
|
line = unquote(line)
|
||||||
|
|
||||||
|
|
|
@ -337,4 +337,22 @@
|
||||||
that:
|
that:
|
||||||
- "result.stat.md5 == '29f349baf1b9c6703beeb346fe8dc669'"
|
- "result.stat.md5 == '29f349baf1b9c6703beeb346fe8dc669'"
|
||||||
|
|
||||||
|
- name: insert a line into the quoted file with a single quote
|
||||||
|
lineinfile: dest={{output_dir}}/test_quoting.txt line="import g'"
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- name: assert that the quoted file was changed
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- result.changed
|
||||||
|
|
||||||
|
- name: stat the quote test file
|
||||||
|
stat: path={{output_dir}}/test_quoting.txt
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- name: assert test md5 matches after backref line was replaced
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- "result.stat.md5 == 'fbe9c4ba2490f70eb1974ce31ec4a39f'"
|
||||||
|
|
||||||
###################################################################
|
###################################################################
|
||||||
|
|
Loading…
Reference in a new issue