@@ -211,7 +211,8 @@ def readouterr(self):
211
211
212
212
@contextlib .contextmanager
213
213
def disabled (self ):
214
- capmanager = self .request .config .pluginmanager .getplugin ('capturemanager' )
214
+ capmanager = self .request .config .pluginmanager .getplugin (
215
+ 'capturemanager' )
215
216
capmanager .suspendcapture_item (self .request .node , "call" , in_ = True )
216
217
try :
217
218
yield
@@ -248,7 +249,10 @@ def __init__(self, buffer, encoding):
248
249
def write (self , obj ):
249
250
if isinstance (obj , unicode ):
250
251
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+" )
252
256
253
257
def writelines (self , linelist ):
254
258
data = '' .join (linelist )
@@ -371,9 +375,13 @@ def start(self):
371
375
self .syscapture .start ()
372
376
373
377
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 = ''
377
385
if res :
378
386
enc = getattr (f , "encoding" , None )
379
387
if enc and isinstance (res , bytes ):
@@ -398,7 +406,10 @@ def suspend(self):
398
406
399
407
def resume (self ):
400
408
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 ()
402
413
403
414
def writeorg (self , data ):
404
415
""" write to original file descriptor. """
0 commit comments