Commit 8816dc7c by Stoned Elipot

Make diff header lines more explicit about what the diff is about

This gives a more readable output when producing diff for a task
with multiple items (with_items).
parent 1b8c9bab
...@@ -126,6 +126,7 @@ class ActionModule(object): ...@@ -126,6 +126,7 @@ class ActionModule(object):
dest_contents = base64.b64decode(dest_contents) dest_contents = base64.b64decode(dest_contents)
else: else:
raise Exception("unknown encoding, failed: %s" % dest_result.result) raise Exception("unknown encoding, failed: %s" % dest_result.result)
diff['before_header'] = destination
diff['before'] = dest_contents diff['before'] = dest_contents
src = open(source) src = open(source)
...@@ -137,6 +138,7 @@ class ActionModule(object): ...@@ -137,6 +138,7 @@ class ActionModule(object):
diff['src_larger'] = utils.MAX_FILE_SIZE_FOR_DIFF diff['src_larger'] = utils.MAX_FILE_SIZE_FOR_DIFF
else: else:
src.seek(0) src.seek(0)
diff['after_header'] = source
diff['after'] = src.read() diff['after'] = src.read()
return diff return diff
...@@ -104,7 +104,7 @@ class ActionModule(object): ...@@ -104,7 +104,7 @@ class ActionModule(object):
module_args = "%s src=%s dest=%s" % (module_args, xfered, dest) module_args = "%s src=%s dest=%s" % (module_args, xfered, dest)
if self.runner.check: if self.runner.check:
return ReturnData(conn=conn, comm_ok=True, result=dict(changed=True), diff=dict(before=dest_contents, after=resultant)) return ReturnData(conn=conn, comm_ok=True, result=dict(changed=True), diff=dict(before_header=dest, after_header=source, before=dest_contents, after=resultant))
else: else:
res = self.runner._execute_module(conn, tmp, 'copy', module_args, inject=inject) res = self.runner._execute_module(conn, tmp, 'copy', module_args, inject=inject)
res.diff = dict(before=dest_contents, after=resultant) res.diff = dict(before=dest_contents, after=resultant)
......
...@@ -639,7 +639,15 @@ def get_diff(diff): ...@@ -639,7 +639,15 @@ def get_diff(diff):
if 'src_larger' in diff: if 'src_larger' in diff:
ret.append("diff skipped: source file size is greater than %d\n" % diff['src_larger']) ret.append("diff skipped: source file size is greater than %d\n" % diff['src_larger'])
if 'before' in diff and 'after' in diff: if 'before' in diff and 'after' in diff:
differ = difflib.unified_diff(diff['before'].splitlines(True), diff['after'].splitlines(True), 'before', 'after', '', '', 10) if 'before_header' in diff:
before_header = "before: %s" % diff['before_header']
else:
before_header = 'before'
if 'after_header' in diff:
after_header = "after: %s" % diff['after_header']
else:
after_header = 'after'
differ = difflib.unified_diff(diff['before'].splitlines(True), diff['after'].splitlines(True), before_header, after_header, '', '', 10)
for line in list(differ): for line in list(differ):
ret.append(line) ret.append(line)
return "".join(ret) return "".join(ret)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment