def test_unified_diff(options_ios): host = Host(hostname="test_host", os="ios", hconfig_options=options_ios) config_a = HConfig(host=host) config_b = HConfig(host=host) # deep differences config_a.add_children_deep(["a", "aa", "aaa", "aaaa"]) config_b.add_children_deep(["a", "aa", "aab", "aaba"]) # these children will be the same and should not appear in the diff config_a.add_children_deep(["b", "ba", "baa"]) config_b.add_children_deep(["b", "ba", "baa"]) # root level differences config_a.add_children_deep(["c", "ca"]) config_b.add_child("d") diff = list(config_a.unified_diff(config_b)) assert diff == [ "a", " aa", " - aaa", " - aaaa", " + aab", " + aaba", "- c", " - ca", "+ d", ]
def test_future_config(self): running_config = HConfig(host=self.host_a) running_config.add_children_deep(["a", "aa", "aaa", "aaaa"]) running_config.add_children_deep(["a", "ab", "aba", "abaa"]) config = HConfig(host=self.host_a) config.add_children_deep(["a", "ac"]) config.add_children_deep(["a", "no ab"]) config.add_children_deep(["a", "no az"]) future_config = running_config.future(config) assert list(c.cisco_style_text() for c in future_config.all_children()) == [ "a", " ac", # config lines are added first " no az", " aa", # self lines not in config are added last " aaa", " aaaa", ]