##// END OF EJS Templates
ui: pushbuffer can now also capture stderr...
Pierre-Yves David -
r21132:350dc24a default
parent child Browse files
Show More
@@ -12,7 +12,10 b' from node import hex'
12 12
13 13 class ui(object):
14 14 def __init__(self, src=None):
15 # _buffers: used for temporary capture of output
15 16 self._buffers = []
17 # _bufferstates: Should the temporary capture includes stderr
18 self._bufferstates = []
16 19 self.quiet = self.verbose = self.debugflag = self.tracebackflag = False
17 20 self._reportuntrusted = True
18 21 self._ocfg = config.config() # overlay
@@ -471,8 +474,12 b' class ui(object):'
471 474 path = self.config('paths', default)
472 475 return path or loc
473 476
474 def pushbuffer(self):
477 def pushbuffer(self, error=False):
478 """install a buffer to capture standar output of the ui object
479
480 If error is True, the error output will be captured too."""
475 481 self._buffers.append([])
482 self._bufferstates.append(error)
476 483
477 484 def popbuffer(self, labeled=False):
478 485 '''pop the last buffer and return the buffered output
@@ -484,6 +491,7 b' class ui(object):'
484 491 is being buffered so it can be captured and parsed or
485 492 processed, labeled should not be set to True.
486 493 '''
494 self._bufferstates.pop()
487 495 return "".join(self._buffers.pop())
488 496
489 497 def write(self, *args, **opts):
@@ -511,6 +519,8 b' class ui(object):'
511 519
512 520 def write_err(self, *args, **opts):
513 521 try:
522 if self._bufferstates and self._bufferstates[-1]:
523 return self.write(*args, **opts)
514 524 if not getattr(self.fout, 'closed', False):
515 525 self.fout.flush()
516 526 for a in args:
General Comments 0
You need to be logged in to leave comments. Login now