diff options
Diffstat (limited to 'tests/unit/network_services/vnf_generic/vnf/test_iniparser.py')
-rw-r--r-- | tests/unit/network_services/vnf_generic/vnf/test_iniparser.py | 107 |
1 files changed, 70 insertions, 37 deletions
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_iniparser.py b/tests/unit/network_services/vnf_generic/vnf/test_iniparser.py index b74e5d9fd..1ad8df9c6 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_iniparser.py +++ b/tests/unit/network_services/vnf_generic/vnf/test_iniparser.py @@ -28,6 +28,7 @@ stl_patch.start() if stl_patch: from yardstick.network_services.vnf_generic.vnf.iniparser import ParseError + from yardstick.network_services.vnf_generic.vnf.iniparser import LineParser from yardstick.network_services.vnf_generic.vnf.iniparser import BaseParser from yardstick.network_services.vnf_generic.vnf.iniparser import ConfigParser @@ -38,15 +39,18 @@ key1=value1 list1: value2 value3 value4 -key2="double quote value" key3='single quote value' ; comment here key4= -[section2] +[section2] ; comment with #2 other symbol # here is a comment line list2: value5 +key with no value # mixed comment ; symbols ; another comment line key5= + +[section1] ; reopen a section! +key2="double quote value" """ PARSE_TEXT_2 = """\ @@ -69,15 +73,10 @@ PARSE_TEXT_BAD_3 = """\ PARSE_TEXT_BAD_4 = """\ [section1] -no list or key -""" - -PARSE_TEXT_BAD_5 = """\ -[section1] bad continuation """ -PARSE_TEXT_BAD_6 = """\ +PARSE_TEXT_BAD_5 = """\ [section1] =value with no key """ @@ -90,6 +89,17 @@ class TestParseError(unittest.TestCase): self.assertEqual(str(error), "at line 2, a: 'c'") +class TestLineParser(unittest.TestCase): + + def test___repr__(self): + line_parser = LineParser('', 101) + self.assertIsNotNone(repr(line_parser)) + + def test_error_invalid_assignment(self): + line_parser = LineParser('', 101) + self.assertIsNotNone(line_parser.error_invalid_assignment()) + + class TestBaseParser(unittest.TestCase): @staticmethod @@ -100,23 +110,26 @@ class TestBaseParser(unittest.TestCase): return internal_open - @mock.patch('yardstick.network_services.vnf_generic.vnf.iniparser.open') - def test_parse_none(self, mock_open): - mock_open.side_effect = self.make_open('') - + def test_parse(self): parser = BaseParser() + parser.parse() - self.assertIsNone(parser.parse()) + def test_parse_empty_string(self): + parser = BaseParser() + self.assertIsNone(parser.parse('')) def test_not_implemented_methods(self): parser = BaseParser() with self.assertRaises(NotImplementedError): - parser.assignment('key', 'value') + parser.assignment('key', 'value', LineParser('', 100)) with self.assertRaises(NotImplementedError): parser.new_section('section') + with self.assertRaises(NotImplementedError): + parser.comment('comment') + class TestConfigParser(unittest.TestCase): @@ -132,39 +145,60 @@ class TestConfigParser(unittest.TestCase): def test_parse(self, mock_open): mock_open.side_effect = self.make_open(PARSE_TEXT_1) - config_parser = ConfigParser('my_file', {}) + existing_data = [['section0', [['key0', 'value0']]]] + config_parser = ConfigParser('my_file', existing_data) config_parser.parse() - expected = { - 'section1': [ - ['key1', 'value1'], - ['list1', 'value2\nvalue3\nvalue4'], - ['key2', 'double quote value'], - ['key3', 'single quote value'], - ['key4', ''], + expected = [ + [ + 'section0', + [ + ['key0', 'value0'], + ], ], - 'section2': [ - ['list2', 'value5'], - ['key5', ''], + [ + 'section1', + [ + ['key1', 'value1'], + ['list1', 'value2\nvalue3\nvalue4'], + ['key3', 'single quote value'], + ['key4', ''], + ['key2', 'double quote value'], + ], ], - } + [ + 'section2', + [ + ['list2', 'value5'], + ['key with no value', '@'], + ['key5', ''], + ], + ], + ] - self.assertDictEqual(config_parser.sections, expected) + self.assertEqual(config_parser.sections, expected) + self.assertIsNotNone(config_parser.find_section('section1')) + self.assertIsNone(config_parser.find_section('section3')) + self.assertEqual(config_parser.find_section_index('section1'), 1) + self.assertEqual(config_parser.find_section_index('section3'), -1) @mock.patch('yardstick.network_services.vnf_generic.vnf.iniparser.open') def test_parse_2(self, mock_open): mock_open.side_effect = self.make_open(PARSE_TEXT_2) - config_parser = ConfigParser('my_file', {}) + config_parser = ConfigParser('my_file') config_parser.parse() - expected = { - 'section1': [ - ['list1', 'item1\nitem2\nended by eof'], + expected = [ + [ + 'section1', + [ + ['list1', 'item1\nitem2\nended by eof'], + ], ], - } + ] - self.assertDictEqual(config_parser.sections, expected) + self.assertEqual(config_parser.sections, expected) @mock.patch('yardstick.network_services.vnf_generic.vnf.iniparser.open') def test_parse_negative(self, mock_open): @@ -172,15 +206,14 @@ class TestConfigParser(unittest.TestCase): 'no section': PARSE_TEXT_BAD_1, 'incomplete section': PARSE_TEXT_BAD_2, 'empty section name': PARSE_TEXT_BAD_3, - 'no list or key': PARSE_TEXT_BAD_4, - 'bad_continuation': PARSE_TEXT_BAD_5, - 'value with no key': PARSE_TEXT_BAD_6, + 'bad_continuation': PARSE_TEXT_BAD_4, + 'value with no key': PARSE_TEXT_BAD_5, } for bad_reason, bad_text in bad_text_dict.items(): mock_open.side_effect = self.make_open(bad_text) - config_parser = ConfigParser('my_file', {}) + config_parser = ConfigParser('my_file', []) try: # TODO: replace with assertRaises, when the UT framework supports |