Tar --diff only sends output to stderr if a file is missing. Handle that case
Fixes #1064
This commit is contained in:
parent
5a0a9d9f72
commit
02b8e17f61
1 changed files with 10 additions and 2 deletions
|
@ -75,9 +75,14 @@ EXAMPLES = '''
|
|||
- unarchive: src=/tmp/foo.zip dest=/usr/local/bin copy=no
|
||||
'''
|
||||
|
||||
import re
|
||||
import os
|
||||
from zipfile import ZipFile
|
||||
|
||||
# String from tar that shows the tar contents are different from the
|
||||
# filesystem
|
||||
DIFFERENCE_RE = re.compile(r': (.*) differs$')
|
||||
|
||||
class UnarchiveError(Exception):
|
||||
pass
|
||||
|
||||
|
@ -168,9 +173,12 @@ class TgzArchive(object):
|
|||
|
||||
# What is different
|
||||
changes = set()
|
||||
difference_re = re.compile(r': (.*) differs$')
|
||||
if err:
|
||||
# Assume changes if anything returned on stderr
|
||||
# * Missing files are known to trigger this
|
||||
return dict(unarchived=unarchived, rc=rc, out=out, err=err, cmd=cmd)
|
||||
for line in out.splitlines():
|
||||
match = difference_re.search(line)
|
||||
match = DIFFERENCE_RE.search(line)
|
||||
if not match:
|
||||
# Unknown tar output. Assume we have changes
|
||||
return dict(unarchived=unarchived, rc=rc, out=out, err=err, cmd=cmd)
|
||||
|
|
Loading…
Reference in a new issue