Fix template not showing a diff with a directory

Template can take a directory as the destination.  When that's the case,
we need to diff between the source and the file inside of the directory.
That happened when the directory was specified with a trailing slash but
not when it was specified on its own.  This change fixes that.

Fixes #24413

(cherry picked from commit 548cacdf6a)
This commit is contained in:
Toshio Kuratomi 2017-05-10 17:11:11 -07:00
parent 58438762a1
commit cdd6ab000b

View file

@ -82,9 +82,14 @@ class ActionModule(ActionBase):
directory_prepended = False
if dest.endswith(os.sep):
# Optimization. trailing slash means we know it's a directory
directory_prepended = True
base = os.path.basename(source)
dest = os.path.join(dest, base)
dest = self._connection._shell.join_path(dest, os.path.basename(source))
else:
# Find out if it's a directory
dest_stat = self._execute_remote_stat(dest, task_vars, True, tmp=tmp)
if dest_stat['exists'] and dest_stat['isdir']:
dest = self._connection._shell.join_path(dest, os.path.basename(source))
# template the source data locally & get ready to transfer
b_source = to_bytes(source)