mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-25 20:38:08 +01:00
nmbug: Respect 'expect' in _spawn(..., wait=True)
Fixing a bug from 7f2cb3be
(nmbug: Translate to Python, 2014-10-03).
The bug had no direct impact though, because none of the wait=True
callers were setting expect.
Also add expected codes to the debug messages, to help log readers
understand why nonzero exits are occasionally accepted.
This commit is contained in:
parent
040c3236af
commit
e263c5b1f9
1 changed files with 7 additions and 5 deletions
|
@ -169,8 +169,9 @@ class _SubprocessContextManager(object):
|
||||||
stream.close()
|
stream.close()
|
||||||
setattr(self._process, name, None)
|
setattr(self._process, name, None)
|
||||||
status = self._process.wait()
|
status = self._process.wait()
|
||||||
_LOG.debug('collect {args} with status {status}'.format(
|
_LOG.debug(
|
||||||
args=self._args, status=status))
|
'collect {args} with status {status} (expected {expect})'.format(
|
||||||
|
args=self._args, status=status, expect=self._expect))
|
||||||
if status not in self._expect:
|
if status not in self._expect:
|
||||||
raise SubprocessError(args=self._args, status=status)
|
raise SubprocessError(args=self._args, status=status)
|
||||||
|
|
||||||
|
@ -211,13 +212,14 @@ def _spawn(args, input=None, additional_env=None, wait=False, stdin=None,
|
||||||
input = input.encode(encoding)
|
input = input.encode(encoding)
|
||||||
(stdout, stderr) = p.communicate(input=input)
|
(stdout, stderr) = p.communicate(input=input)
|
||||||
status = p.wait()
|
status = p.wait()
|
||||||
_LOG.debug('collect {args} with status {status}'.format(
|
_LOG.debug(
|
||||||
args=args, status=status))
|
'collect {args} with status {status} (expected {expect})'.format(
|
||||||
|
args=args, status=status, expect=expect))
|
||||||
if stdout is not None:
|
if stdout is not None:
|
||||||
stdout = stdout.decode(encoding)
|
stdout = stdout.decode(encoding)
|
||||||
if stderr is not None:
|
if stderr is not None:
|
||||||
stderr = stderr.decode(encoding)
|
stderr = stderr.decode(encoding)
|
||||||
if status:
|
if status not in expect:
|
||||||
raise SubprocessError(
|
raise SubprocessError(
|
||||||
args=args, status=status, stdout=stdout, stderr=stderr)
|
args=args, status=status, stdout=stdout, stderr=stderr)
|
||||||
return (status, stdout, stderr)
|
return (status, stdout, stderr)
|
||||||
|
|
Loading…
Reference in a new issue