@@ -211,7 +211,8 @@ def readouterr(self):
211211
212212 @contextlib .contextmanager
213213 def disabled (self ):
214- capmanager = self .request .config .pluginmanager .getplugin ('capturemanager' )
214+ capmanager = self .request .config .pluginmanager .getplugin (
215+ 'capturemanager' )
215216 capmanager .suspendcapture_item (self .request .node , "call" , in_ = True )
216217 try :
217218 yield
@@ -248,7 +249,10 @@ def __init__(self, buffer, encoding):
248249 def write (self , obj ):
249250 if isinstance (obj , unicode ):
250251 obj = obj .encode (self .encoding , "replace" )
251- self .buffer .write (obj )
252+ try :
253+ self .buffer .write (obj )
254+ except OSError :
255+ self .buffer = open (os .devnull , "wb+" )
252256
253257 def writelines (self , linelist ):
254258 data = '' .join (linelist )
@@ -371,9 +375,13 @@ def start(self):
371375 self .syscapture .start ()
372376
373377 def snap (self ):
374- f = self .tmpfile
375- f .seek (0 )
376- res = f .read ()
378+ try :
379+ f = self .tmpfile
380+ f .seek (0 )
381+ res = f .read ()
382+ except OSError :
383+ self .tempfile = open (os .devnull , "r" )
384+ res = ''
377385 if res :
378386 enc = getattr (f , "encoding" , None )
379387 if enc and isinstance (res , bytes ):
@@ -398,7 +406,10 @@ def suspend(self):
398406
399407 def resume (self ):
400408 self .syscapture .resume ()
401- os .dup2 (self .tmpfile_fd , self .targetfd )
409+ try :
410+ os .dup2 (self .tmpfile_fd , self .targetfd )
411+ except OSError :
412+ self .targetfd = open (os .devnull , "r" ).fileno ()
402413
403414 def writeorg (self , data ):
404415 """ write to original file descriptor. """
0 commit comments