Fix unarchive failures when the destination is a symlink to a directory (#15999)

Also add integration tests for this problem and unicode filenames inside
a tarball.

Fixes #3725
This commit is contained in:
Toshio Kuratomi 2016-05-26 14:47:11 -07:00
commit c03555b650
4 changed files with 101 additions and 6 deletions

View file

@ -428,7 +428,7 @@ class ActionBase(with_metaclass(ABCMeta, object)):
return mystat['stat']
def _remote_checksum(self, path, all_vars):
def _remote_checksum(self, path, all_vars, follow=False):
'''
Produces a remote checksum given a path,
Returns a number 0-4 for specific errors instead of checksum, also ensures it is different
@ -440,7 +440,7 @@ class ActionBase(with_metaclass(ABCMeta, object)):
'''
x = "0" # unknown error has occured
try:
remote_stat = self._execute_remote_stat(path, all_vars, follow=False)
remote_stat = self._execute_remote_stat(path, all_vars, follow=follow)
if remote_stat['exists'] and remote_stat['isdir']:
x = "3" # its a directory not a file
else: