import logging
import unittest
from nose.config import Config
from nose.core import configure_logging
from mock import *


class TestLoggingConfig(unittest.TestCase):

    def setUp(self):
        # install mock root logger so that these tests don't stomp on
        # the real logging config of the test runner
        class MockLogger(logging.Logger):
            root = logging.RootLogger(logging.WARNING)
            manager = logging.Manager(root)
        
        self.real_logger = logging.Logger
        self.real_root = logging.root
        logging.Logger = MockLogger
        logging.root = MockLogger.root
        
    def tearDown(self):
        # reset real root logger
        logging.Logger = self.real_logger
        logging.root = self.real_root
        
    def test_isolation(self):
        """root logger settings ignored"""

        root = logging.getLogger('')
        nose = logging.getLogger('nose')

        opt = Bucket()
        configure_logging(opt)
        
        root.setLevel(logging.DEBUG)
        self.assertEqual(nose.level, logging.WARN)
    
if __name__ == '__main__':
    unittest.main()


syntax highlighted by Code2HTML, v. 0.9.1