Handle the key 'prepared' in the 'diff' result from modules

So far, when a 'diff' dict is returned with module results, it is
checked for 'before' and 'after' texts, which are processed in
_get_diff() by python difflib.  This generates the changes to display
when CLI users specify --diff.

However, some modules will generate changes that cannot easily be
expressed in a conventional diff. One example is the output of the
synchronize module, which presents changed files in a common log format
as in `rsync --itemize-changes`.

Add a check for a diff['prepared'] key, which can contain prepared diff text
from modules.
This commit is contained in:
Tobias Wolf 2016-01-25 12:50:11 +01:00
parent c44110bc81
commit 5b293b56d6

View file

@ -131,6 +131,8 @@ class CallbackBase:
differ = difflib.unified_diff(to_unicode(diff['before']).splitlines(True), to_unicode(diff['after']).splitlines(True), before_header, after_header, '', '', 10) differ = difflib.unified_diff(to_unicode(diff['before']).splitlines(True), to_unicode(diff['after']).splitlines(True), before_header, after_header, '', '', 10)
ret.extend(list(differ)) ret.extend(list(differ))
ret.append('\n') ret.append('\n')
if 'prepared' in diff:
ret.append(to_unicode(diff['prepared']))
return u"".join(ret) return u"".join(ret)
except UnicodeDecodeError: except UnicodeDecodeError:
ret.append(">> the files are different, but the diff library cannot compare unicode strings\n\n") ret.append(">> the files are different, but the diff library cannot compare unicode strings\n\n")