コード例 #1
0
ファイル: helpers.py プロジェクト: xschul/PyCIRCLeanMail
    def __init__(self, raw_email, debug=False):
        '''
            Setup the base options of the copy/convert setup
        '''
        self.raw_email = raw_email
        self.log_processing = StringIO()
        self.log_content = StringIO()
        self.tree(self.raw_email)

        twiggy_out = outputs.StreamOutput(formats.shell_format, stream=self.log_processing)
        emitters['*'] = filters.Emitter(levels.DEBUG, True, twiggy_out)

        self.log_name = log.name('files')

        self.cur_attachment = None

        self.debug = debug
        if self.debug:
            if not os.path.exists('debug_logs'):
                os.makedirs('debug_logs')
            self.log_debug_err = os.path.join('debug_logs', 'debug_stderr.log')
            self.log_debug_out = os.path.join('debug_logs', 'debug_stdout.log')
        else:
            self.log_debug_err = os.devnull
            self.log_debug_out = os.devnull
コード例 #2
0
    def test_trap_output(self):
        class BorkedOutput(outputs.ListOutput):
            def _write(self, x):
                raise RuntimeError("BORK")

        out = BorkedOutput(close_atexit=False)

        def cleanup(output):
            try:
                del self.emitters['before']
            except KeyError:
                pass

            out.close()

        self.addCleanup(cleanup, out)

        self.emitters['before'] = filters.Emitter(levels.DEBUG, None, out)

        self.log.fields().info('hi')

        assert len(self.messages) == 1
        m = self.messages.pop()
        assert m.text == "hi"

        assert len(self.internal_messages) == 1
        m = self.internal_messages.pop()

        print m.text
        print m.traceback

        assert m.level == levels.WARNING
        assert "Error outputting with <tests.test_logger.BorkedOutput" in m.text
        assert "Traceback" in m.traceback
        assert "BORK" in m.traceback
コード例 #3
0
ファイル: test_logger.py プロジェクト: abadger/twiggy
def test_logger(request):
    output = outputs.ListOutput(close_atexit=False)
    if issubclass(request.param, logger.InternalLogger):
        yield request.param(output=output)
    else:
        log = request.param()
        emitters = log._emitters
        emitters['*'] = filters.Emitter(levels.DEBUG, None, output)
        yield log

    output.close()
コード例 #4
0
    def setUp(self):
        self.internal_output = outputs.ListOutput(close_atexit=False)
        self.internal_messages = self.internal_output.messages
        _twiggy._populate_globals()
        _twiggy.internal_log.output = self.internal_output

        self.log = logger.Logger()
        self.emitters = self.log._emitters
        self.output = outputs.ListOutput(close_atexit=False)
        self.emitters['everything'] = filters.Emitter(levels.DEBUG, None,
                                                      self.output)
        self.messages = self.output.messages
コード例 #5
0
    def test_filter_property(self):
        # XXX we really should mock & test that msg_filter is being called. eh.

        e = filters.Emitter(levels.INFO, "^Hello.*$", 'output-unused')

        f = e.filter
        assert callable(f)
        assert f(m)

        e.filter = "^Goodbye.*$"
        f = e.filter
        assert callable(f)
        assert not f(m)
コード例 #6
0
    def test_trap_filter(self):

        out = outputs.ListOutput(close_atexit=False)

        def cleanup(output):
            try:
                del self.emitters['before']
            except KeyError:
                pass

            out.close()

        self.addCleanup(cleanup, out)

        def go_boom(msg):
            raise RuntimeError("BOOM")

        self.emitters['before'] = filters.Emitter(levels.DEBUG, go_boom, out)

        self.log.fields().info('hi')

        # errors in filtering cause messages to be output anyway
        assert len(out.messages) == 1
        m1 = out.messages.pop()
        assert m1.text == "hi"

        assert len(self.messages) == 1
        m2 = self.messages.pop()
        assert m2.text == "hi"

        assert m1 is m2

        assert len(self.internal_messages) == 1
        m = self.internal_messages.pop()

        print m.text
        print m.traceback

        assert m.level == levels.INFO
        assert "Error filtering with emitter before" in m.text
        assert "<function go_boom" in m.text
        assert "Traceback" in m.traceback
        assert "BOOM" in m.traceback
コード例 #7
0
 def setUp(self):
     self.log = logger.Logger()
     self.emitters = self.log._emitters
     self.output = outputs.ListOutput(close_atexit=False)
     self.emitters['*'] = filters.Emitter(levels.DEBUG, None, self.output)
     self.messages = self.output.messages
コード例 #8
0
 def test_bad_min_level(self):
     with self.assertRaises(ValueError):
         filters.Emitter(42, None, None)