def test_check_bad2(self): d = LCDictBasic(warnings=0) # handler w/bad formatter d.add_handler('con', formatter='no-such-formatter') # non-root logger d.add_logger( 'mylogger', handlers=['no-such-handler-1', 'no-such-handler-2'], filters='no-such-filter-1', ) # Swap stderr BEFORE d.check(): _stderr = sys.stderr sio_err = io.StringIO() sys.stderr = sio_err # check out ".check()" # We expect this call to have written to stderr, and to raise KeyError with self.assertRaises(KeyError): d.check() # print(sio_err.getvalue()) # | DEBUG comment out self.assertEqual( sio_err.getvalue(), "Problems -- nonexistent things mentioned\n" " handler 'con' mentions formatter 'no-such-formatter'\n" " logger 'mylogger' mentions filter 'no-such-filter-1'\n" " logger 'mylogger' mentions handler 'no-such-handler-1'\n" " logger 'mylogger' mentions handler 'no-such-handler-2'\n" ) # unswap stderr, unnecessarily sys.stderr = _stderr
def test_check_bad1(self): d = LCDictBasic( root_level='DEBUG', warnings=0) # NOW SCREW IT UP: d.attach_root_filters('not-a-filter-1', 'not-a-filter-2') d.attach_root_handlers('not-a-handler-1', 'not-a-handler-2') d.add_file_handler( 'fh', 'myfile.log', filters=['also-not-a-filter-1', 'also-not-a-filter-2']) # Swap stderr BEFORE d.check(): _stderr = sys.stderr sio_err = io.StringIO() sys.stderr = sio_err # check out ".check()" # We expect this call to have written to stderr, and to raise KeyError with self.assertRaises(KeyError): d.check() self.assertEqual( sio_err.getvalue(), "Problems -- nonexistent things mentioned\n" " handler 'fh' mentions filter 'also-not-a-filter-1'\n" " handler 'fh' mentions filter 'also-not-a-filter-2'\n" " logger '' mentions filter 'not-a-filter-1'\n" " logger '' mentions filter 'not-a-filter-2'\n" " logger '' mentions handler 'not-a-handler-1'\n" " logger '' mentions handler 'not-a-handler-2'\n" ) # unswap stderr, unnecessarily sys.stderr = _stderr
def test_check_ok(self): lcd = LCDictBasic(warnings=0) self.assertEqual(lcd, lcd.check())