def test_get_node_by_path_empty_mapping(self):
     empty_map = {}
     self.assertRaises(KeyError, get_node_by_xpath, empty_map, 'level1')
     self.assertRaises(KeyError, get_node_by_xpath, empty_map, 'level1.other')
     self.assertEqual(
         get_node_by_xpath(empty_map, 'level1', default="default value", ignore_errors=True),
         "default value")
     self.assertEqual(
         get_node_by_xpath(empty_map, '', default="default value", ignore_errors=True),
         "default value")
 def test_get_node_by_path(self):
     mapping = {'level1': {'level2': {'level3': 42}}}
     expected = 42
     actual = get_node_by_xpath(mapping, 'level1.level2.level3')
     self.assertEqual(expected, actual)
     self.assertRaisesRegex(
         KeyError, (r"Invalid 'level1.unknown' selector: 'unknown' doesn't match anything. "
                    r"Available keys: \['level2'\]"), get_node_by_xpath, mapping,
         'level1.unknown')
     actual = get_node_by_xpath(
         mapping, 'level1.unknown', default="default value", ignore_errors=True)
     self.assertEqual(actual, "default value")
 def test_set_node_by_path(self):
     mapping = {'level1': {'level2': {'level3': None}}}
     expected = 42
     set_node_by_xpath(mapping, 'level1.level2.level3', expected)
     actual = get_node_by_xpath(mapping, 'level1.level2.level3')
     self.assertEqual(expected, actual)
     set_node_by_xpath(mapping, 'level1.unknown', expected)
     actual = get_node_by_xpath(mapping, 'level1.unknown')
     self.assertEqual(expected, actual)
     self.assertRaises(KeyError, set_node_by_xpath, mapping, 'level1.invalid.level3', '')
     expected = 'extended'
     set_node_by_xpath(mapping, 'level1.missing.level3', expected, extend=True)
     actual = get_node_by_xpath(mapping, 'level1.missing.level3')
     self.assertEqual(expected, actual)
 def test_get_node_by_path_invalid_first_level(self):
     mapping = {"level1": {}}
     self.assertRaises(KeyError, get_node_by_xpath, mapping, 'invalid_level1')
     self.assertEqual(
         get_node_by_xpath(
             mapping, 'invalid_level1', default="default value", ignore_errors=True),
         "default value")
 def test_get_node_by_path_incomplete_mapping(self):
     mapping = {'level1': {'level2': {}}}
     self.assertRaises(KeyError, get_node_by_xpath, mapping, 'level1.level2.level3')
     self.assertRaises(KeyError, get_node_by_xpath, mapping, 'level1.unknown')
     # test with tailing "." at the end of path
     self.assertRaises(KeyError, get_node_by_xpath, mapping, 'level1.')
     self.assertEqual(
         get_node_by_xpath(
             mapping, 'level1.level2', default="default value", ignore_errors=True), {})
     self.assertEqual(
         get_node_by_xpath(
             mapping, 'level1.unknown', default="default value", ignore_errors=True),
         "default value")
     # test with tailing "." at the end of path
     self.assertEqual(
         get_node_by_xpath(mapping, 'level1.', default="default value", ignore_errors=True),
         "default value")
 def test_get_node_by_path_mapping_not_dict(self):
     mapping_no_a_dict = "simple string!"
     self.assertEqual(
         get_node_by_xpath(mapping_no_a_dict, '', default="default value", ignore_errors=True),
         "default value")
     self.assertRaises(
         KeyError,
         get_node_by_xpath,
         mapping_no_a_dict,
         'level1.unknown',
         ignore_errors=False,
     )
 def test_get_w_bad_lst_selctr_n_default_val(self):
     mapping = {'level1': {'level_2_is_a_list': ['item1', 'item2']}}
     actual = get_node_by_xpath(
         mapping, 'level1.level_2_is_a_list[1]', handle_list_selector=True, default="N/A")
     self.assertEqual('item2', actual)
     self.assertRaisesRegex(
         KeyError,
         (r"Invalid \'level1.level_2_is_a_list\[99\]\' selector: "
          r"item index \'99\' of \'level_2_is_a_list\' is outside of the list boundaries. "
          r"Length is: 2"),
         get_node_by_xpath,
         mapping,
         'level1.level_2_is_a_list[99]',
         handle_list_selector=True,
         default="N/A")
 def test_get_node_w_lst_selctr_sub_list(self):
     mapping = {
         'level1': {
             'level_2_is_a_list': [
                 {
                     'item1': {
                         'k1': 'v1'
                     }
                 },
                 {
                     'item2': {
                         'k2': 'v2'
                     }
                 },
             ]
         }
     }
     actual = get_node_by_xpath(
         mapping, 'level1.level_2_is_a_list[1].item2.k2', handle_list_selector=True)
     self.assertEqual('v2', actual)
 def test_get_node_by_path_with_list_selector(self):
     mapping = {'level1': {'level_2_is_a_list': ['item1', 'item2']}}
     actual = get_node_by_xpath(
         mapping, 'level1.level_2_is_a_list[1]', handle_list_selector=True)
     self.assertEqual('item2', actual)
Exemple #10
0
 def get_cfg_value(self, xpath, default=None):
     """
     Get a value from cfgtree.
     """
     return get_node_by_xpath(self.cfgtree, xpath, default=default).value