mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-08-20 13:23:08 +02:00
Unittest - Replace None by objects representing the state of stdout/err
This commit is contained in:
parent
811d0e029d
commit
b4f33ec0c6
2 changed files with 21 additions and 3 deletions
|
@ -32,4 +32,17 @@ class CommandError(Exception):
|
||||||
class HookError(Exception):
|
class HookError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class TimeoutWaitingForStream(object):
|
||||||
|
def __init__(self, name):
|
||||||
|
self.stream = name
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "*** Timeout reached while waiting for %s ***".format(self.name)
|
||||||
|
|
||||||
|
|
||||||
|
class StreamsAreMerged(object):
|
||||||
|
def __repr__(self):
|
||||||
|
return "*** Streams are merged, STDERR is not available ***"
|
||||||
|
|
||||||
# vim: ai sts=4 et sw=4
|
# vim: ai sts=4 et sw=4
|
||||||
|
|
|
@ -13,7 +13,7 @@ try:
|
||||||
import simplejson as json
|
import simplejson as json
|
||||||
except ImportError:
|
except ImportError:
|
||||||
import json
|
import json
|
||||||
from .exceptions import CommandError
|
from .exceptions import CommandError, TimeoutWaitingForStream, StreamsAreMerged
|
||||||
|
|
||||||
USED_PORTS = set()
|
USED_PORTS = set()
|
||||||
ON_POSIX = 'posix' in sys.builtin_module_names
|
ON_POSIX = 'posix' in sys.builtin_module_names
|
||||||
|
@ -106,11 +106,11 @@ def _get_output(proc, input, timeout=None):
|
||||||
try:
|
try:
|
||||||
out = outq.get(timeout=timeout)
|
out = outq.get(timeout=timeout)
|
||||||
except Empty:
|
except Empty:
|
||||||
out = None
|
out = TimeoutWaitingForStream("stdout")
|
||||||
try:
|
try:
|
||||||
err = errq.get(timeout=timeout)
|
err = errq.get(timeout=timeout)
|
||||||
except Empty:
|
except Empty:
|
||||||
err = None
|
err = TimeoutWaitingForStream("stderr")
|
||||||
|
|
||||||
return out, err, exit
|
return out, err, exit
|
||||||
|
|
||||||
|
@ -133,6 +133,11 @@ def run_cmd_wait(cmd, input=None, stdout=PIPE, stderr=PIPE,
|
||||||
close_fds=ON_POSIX, env=env)
|
close_fds=ON_POSIX, env=env)
|
||||||
out, err, exit = _get_output(p, input, timeout)
|
out, err, exit = _get_output(p, input, timeout)
|
||||||
|
|
||||||
|
# If streams were merged err should always be None so represent it with a
|
||||||
|
# more informative object
|
||||||
|
if merge_streams:
|
||||||
|
err = StreamsAreMerged()
|
||||||
|
|
||||||
if exit != 0:
|
if exit != 0:
|
||||||
raise CommandError(cmd, exit, out, err)
|
raise CommandError(cmd, exit, out, err)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue