def test_module_config_on_configure_observer_run(): cb0 = MyCallback(0, 0) cb1 = MyCallback(1, 1) assert cb0.ab == (0, 0) assert cb1.ab == (1, 1) module_config = ModuleConfig("""\ a = Int(default=2) b = Int(default=5) """, on_configure=[cb0, cb1]) assert cb0.ab == (0, 0) assert cb1.ab == (1, 1) module_config.configure() assert cb0.ab == (2, 5) assert cb1.ab == (2, 5) cfg = Config.from_string("""\ a = 100 b = 3""") module_config.configure(cfg) assert cb0.ab == (100, 3) assert cb1.ab == (100, 3) cfg["a"] = 200 module_config.configure(cfg) assert cb0.ab == (200, 3) assert cb1.ab == (200, 3) module_config.remove_on_configure_observer(cb1) cfg["a"] = 300 module_config.configure(cfg) assert cb0.ab == (300, 3) assert cb1.ab == (200, 3)
def test_module_config_on_configure_observer_error(): reached_a = False reached_b = False def mycallback(oc, nc): nonlocal reached_a nonlocal reached_b reached_a = True raise KeyError("mycallback") reached_b = True module_config = ModuleConfig("""\ a = Int(default=2) b = Int(default=5) """, on_configure=[mycallback]) module_config.configure() assert reached_a assert not reached_b