def test_spawn(capsys): """We expect spawned copies to inherit the log level of their parents.""" logger1 = Loggable("Parent") logger1.set_level("INFO") logger2 = logger1.spawn("new name") # logger 1 output logger1.info("msg") log, _ = capsys.readouterr() assert "msg" in log # logger 2 output logger2.info("msg") log, _ = capsys.readouterr() assert "msg" in log logger1.set_level("ERROR") # logger 1 no output logger1.info("msg") log, _ = capsys.readouterr() assert not log # logger 2 no output logger2.info("msg") log, _ = capsys.readouterr() assert not log
def test_pickle_span(): logger1 = Loggable("Parent") logger1.set_level("INFO") logger2 = logger1.spawn("new name") assert logger1._children assert logger2._children == {} logger3 = pickle.loads(pickle.dumps(logger1)) logger4 = pickle.loads(pickle.dumps(logger2)) assert dict(logger3._children) assert logger3._children[logger2._id] is logger2 assert logger4._children == {} for lvl in ["ERROR", "DEBUG", "INFO"]: logger1.set_level(lvl) assert logger1.level_name() == lvl assert logger2.level_name() == lvl assert logger3.level_name() == lvl assert logger4.level_name() == lvl