def test_build_indent_based_list__multiline_indent(self): LINE = ' cfg_line' cfg = LINE + '\n' + LINE parser = HTParser(cfg) parser.find_objects("fake_object") res = [(2, LINE), (2, LINE)] self.assertEqual(res, parser._indent_list)
def test_init__multiline_mixed_different_indent(self): LINE = "cfg_line" cfg = " " + LINE + "\n" + " \n" + " " + LINE parser = HTParser(cfg) parser.find_objects("fake_object") res = [(2, ' cfg_line'), (3, ' cfg_line')] self.assertEqual(res, parser._indent_list)
def test_re_search_children_interface(self): linespec = "^interf" child_linespec = "\s*no ip*" exp = ['interface Serial1/0', ' no ip address'] parse = HTParser(self.cfg) act = [ obj for obj in parse.find_objects(linespec) if obj.re_search_children(child_linespec) ] self.assertEqual(1, len(act)) self.assertEqual(exp, act[0].str_list())
def test_re_match_nat(self): linespec = "^interf" child_linespec = "\s*ip nat inside" match_regex = "^interface (\S+)" exp = 'Port-channel11.2033' parse = HTParser(self.cfg) act = [ obj for obj in parse.find_objects(linespec) if obj.re_search_children(child_linespec) ] self.assertEqual(1, len(act)) self.assertEqual(exp, act[0].re_match(match_regex))
def test_re_search_children_acl(self): linespec = "^ip access" child_linespec = ACL_CHILD_REGEX exp = [ 'ip access-list standard neutron_acl_2033_5c409ae1', ' permit 10.10.0.0 0.0.255.255', ' dummy-input2' ] parse = HTParser(self.cfg) act = [ obj for obj in parse.find_objects(linespec) if obj.re_search_children(child_linespec) ] self.assertEqual(1, len(act)) self.assertEqual(exp, act[0].str_list())
def test_init__multiline_blank(self): LINE = "" cfg = LINE + "\n" + LINE + "\n" + LINE parser = HTParser(cfg) parser.find_objects("fake_object") self.assertEqual([], parser._indent_list)
def test_build_indent_based_list__singleline_comment(self): LINE = '!' cfg = LINE parser = HTParser(cfg) parser.find_objects("fake_object") self.assertEqual([], parser._indent_list)