示例#1
0
 def test_close_stream_handles_fileno_ioerror(self):
     stream = DummyStream()
     def raise_ioerror():
         raise IOError()
     stream.fileno = raise_ioerror
     inst = self._makeOne(stream=stream)
     inst.close() # shouldn't raise
     self.assertTrue(inst.closed)
示例#2
0
    def test_emit_error(self):
        handler = self._makeOne(self.filename)
        handler.stream = DummyStream(error=OSError)
        record = self._makeLogRecord('hello!')
        try:
            old_stderr = sys.stderr
            dummy_stderr = DummyStream()
            sys.stderr = dummy_stderr
            handler.emit(record)
        finally:
            sys.stderr = old_stderr

        self.assertTrue(dummy_stderr.written.endswith('OSError\n'),
                        dummy_stderr.written)
示例#3
0
 def test_emit_gardenpath(self):
     stream = DummyStream()
     inst = self._makeOne(stream=stream)
     record = self._makeLogRecord(b'foo')
     inst.emit(record)
     self.assertEqual(stream.flushed, True)
     self.assertEqual(stream.written, b'foo')
示例#4
0
 def test_emit_unicode_error(self):
     stream = DummyStream(error=UnicodeError)
     inst = self._makeOne(stream=stream)
     record = self._makeLogRecord(b'foo')
     inst.emit(record)
     self.assertEqual(stream.flushed, True)
     self.assertEqual(stream.written, b'foo')
示例#5
0
 def test_reopen_raises(self):
     handler = self._makeOne(self.filename)
     stream = DummyStream()
     handler.baseFilename = os.path.join(self.basedir, 'notthere', 'a.log')
     handler.open_streams[handler.baseFilename] = stream
     self.assertRaises(IOError, handler.reopen)
     self.assertEqual(stream.closed, True)
示例#6
0
 def test_reopen(self):
     handler = self._makeOne(self.filename)
     stream = DummyStream()
     handler.stream = stream
     handler.reopen()
     self.assertEqual(stream.closed, True)
     self.assertEqual(handler.stream.name, self.filename)
示例#7
0
 def test_emit_other_error(self):
     stream = DummyStream(error=ValueError)
     inst = self._makeOne(stream=stream)
     handled = []
     inst.handleError = lambda: handled.append(True)
     record = self._makeLogRecord(b'foo')
     inst.emit(record)
     self.assertEqual(stream.flushed, False)
     self.assertEqual(stream.written, b'')
示例#8
0
 def test_close_stream_fileno_below_3(self):
     stream = DummyStream(fileno=0)
     inst = self._makeOne(stream=stream)
     self.assertEqual(inst.close(), None)
     self.assertFalse(inst.closed)
     self.assertFalse(inst.stream.closed)
示例#9
0
 def test_close_stream_fileno_above_3(self):
     stream = DummyStream(fileno=50)
     inst = self._makeOne(stream=stream)
     self.assertEqual(inst.close(), None)
     self.assertTrue(inst.closed)
     self.assertTrue(inst.stream.closed)
示例#10
0
 def test_close_already_closed(self):
     stream = DummyStream()
     inst = self._makeOne(stream=stream)
     inst.closed = True
     self.assertEqual(inst.close(), None)
示例#11
0
 def test_flush_stream_flush_raises_IOError_not_EPIPE(self):
     stream = DummyStream(error=IOError(errno.EALREADY))
     inst = self._makeOne(stream=stream)
     self.assertRaises(IOError, inst.flush) # non-EPIPE IOError raises
示例#12
0
 def test_flush_stream_flush_raises_IOError_EPIPE(self):
     stream = DummyStream(error=IOError(errno.EPIPE))
     inst = self._makeOne(stream=stream)
     self.assertEqual(inst.flush(), None) # does not raise
示例#13
0
 def test_close_raises(self):
     handler = self._makeOne(self.filename)
     handler.stream.close()
     handler.stream = DummyStream(OSError)
     self.assertRaises(OSError, handler.close)
     self.assertEqual(handler.stream.closed, False)
示例#14
0
 def test_close(self):
     handler = self._makeOne(self.filename)
     handler.stream.close()
     handler.stream = DummyStream()
     handler.close()
     self.assertEqual(handler.stream.closed, True)