def testNonBlockSingleValue__add_option(self): """ SettingParser.add_option: adding non-block option, single value provided. """ self.parser = parser.SettingParser() self.parser.add_option(None, 'option_name', 'value1') self.assertEqual(self.parser._ast[1], [['option_name', ['value1']]])
def testBlockNotExistNoValue__add_option(self): """ SettingParser.add_option: adding option for for non-existing block. """ self.parser = parser.SettingParser() with self.assertRaises(ValueError): self.parser.add_option('block_name', 'option_name')
def testNonBlockNoValue__add_option(self): """ SettingParser.add_option: adding non-block option, no value provided. """ self.parser = parser.SettingParser() with self.assertRaises(ValueError): self.parser.add_option(None, 'option_name')
def testBlockNotExist__remove_option(self): """ SettingParser.remove_option: removing option from non-existent block. """ self.parser = parser.SettingParser() with self.assertRaises(ValueError): self.parser.remove_option('non_exist', 'option_name')
def setUp(self): super(TestSettingParser, self).setUp() self.setup_dir() self.stream = StringIO(_TEST_DATA) self.parser = parser.SettingParser() self.parser._lexer = parser.SettingLexer() self.parser._lexer.readstream(self.stream)
def testNonBlockOptionExist__remove_option(self): """ SettingParser.remove_option: removing option. """ self.parser = parser.SettingParser() self.parser._ast = self._get_nonblock_options('opt') self.parser.remove_option(None, 'opt') self.assertEqual(self.parser._ast[1], [])
def test__filename(self): """ SettingParser.filename (property): returns correct values. """ self.parser = parser.SettingParser() self.assertIsNone(self.parser.filename) # not set self.parser._filename = 'test' self.assertEqual(self.parser.filename, 'test')
def testNotExist__add_block(self): """ SettingParser.add_block: adding block that doesn't exist. """ self.parser = parser.SettingParser() self.parser.add_block('test') ast, _ = self._get_block('test') self.assertEqual(self.parser._ast[2], ast[2])
def testExist__add_block(self): """ SettingParser.add_block: adding block that already exists. """ self.parser = parser.SettingParser() res = self._get_block('test') self.parser._ast, self.parser._block_map = res with self.assertRaises(ValueError): self.parser.add_block('test')
def test__header(self): """ SettingParser.header (property): returns correct values. """ # not set self.parser = parser.SettingParser() self.assertIsNone(self.parser.header) self.parser._ast = ['test', [], []] self.assertEqual(self.parser.header, 'test')
def test__options(self): """ SettingParser.options (property): returns correct values. """ # not set self.parser = parser.SettingParser() self.assertEqual([], list(self.parser.options)) # empty generator self.parser._ast = self._get_nonblock_options('opt_test') self.assertEqual(list(self.parser.options), self.parser._ast[1])
def testBlockExistOptionNotExist__remove_option(self): """ SettingParser.remove_option: removing non-existent option from an existing block. """ self.parser = parser.SettingParser() res = self._get_block_options('test', 'opt') self.parser._ast, self.parser._block_map = res with self.assertRaises(ValueError): self.parser.remove_option('test', 'non_exist')
def testBlockExistOptionExist__remove_option(self): """ SettingParser.remove_option: removing option from an existing block. """ self.parser = parser.SettingParser() res = self._get_block_options('test', 'opt') self.parser._ast, self.parser._block_map = res self.parser.remove_option('test', 'opt') self.assertEqual(self.parser._ast[2], [['test', []]])
def test__blocks(self): """ SettingParser.blocks (property): returns correct values. """ # not set self.parser = parser.SettingParser() self.assertEqual([], list(self.parser.blocks)) # empty generator res = self._get_block_options('test', 'opt') self.parser._ast, self.parser._block_map = res self.assertEqual(list(self.parser.blocks), self.parser._ast[2])
def testBlockExistNoValue__add_option(self): """ SettingParser.add_option: adding option to existing block, no value provided. """ self.parser = parser.SettingParser() res = self._get_block_options('test', 'opt') self.parser._ast, self.parser._block_map = res with self.assertRaises(ValueError): self.parser.add_option('test', 'opt')
def test__write(self): """ SettingParser.write: writes to file. """ new_stream = StringIO(_TEST_DATA) self.parser = parser.SettingParser() self.parser.readstream(new_stream) filename = self.make_file() self.assertTrue(self.parser.write(filename, 'header_value')) self.assertTrue(self.parser._filename, filename) self.assertEqual(open(filename, 'r').read(), _TEST_DATA)
def testNonBlockOptionNotExist__remove_option(self): """ SettingParser.remove_option: removing non-existent option. """ self.parser = parser.SettingParser() self.parser._ast = self._get_nonblock_options() with self.assertRaises(ValueError): self.parser.remove_option(None, 'non_exist') self.parser._ast = self._get_nonblock_options('test') with self.assertRaises(ValueError): self.parser.remove_option(None, 'non_exist')
def test__writestream(self): """ SettingParser.writestream: writes to stream. """ new_stream = StringIO(_TEST_DATA) self.parser = parser.SettingParser() self.parser.readstream(new_stream) filename = self.make_file() with open(filename, 'w', 0) as f: self.assertTrue(self.parser.writestream(f, 'header_value')) self.assertEqual(open(filename, 'r').read(), _TEST_DATA)
def test__readstream(self): """ SettingParser.readstream: read data from stream, parses correctly. """ new_stream = StringIO(_TEST_DATA) self.parser = parser.SettingParser() self.parser.readstream(new_stream) self.assertEqual(self.parser._ast[0], 'header_value') self.assertEqual(self.parser._ast[1], [['option', ['12345']]]) self.assertEqual(self.parser._ast[2], [['block_name', [['option', ['name']], ['option', ['name 2']]]]])
def testExist__remove_block(self): """ SettingParser.remove_block: removing existing block. """ self.parser = parser.SettingParser() # existing block with options, then existing block no options args = [('test', 'opt1'), ('test',)] for arg in args: res = self._get_block_options(*arg) self.parser._ast, self.parser._block_map = res self.parser.remove_block('test') self.assertEqual(self.parser._ast[2], [])
def testNonBlockMultiValue__add_option(self): """ SettingParser.add_option: adding non-block option, multiple values provided. """ self.parser = parser.SettingParser() self.parser.add_option(None, 'option_name', 'value1') self.parser.add_option(None, 'option_name', 'value1') self.parser.add_option(None, 'other_opt_name', 'value2') self.assertEqual(self.parser._ast[1], [ ['option_name', ['value1']], ['option_name', ['value1']], ['other_opt_name', ['value2']] ])
def testBlockExistSingleValue__add_option(self): """ SettingParser.add_option: adding option to existing block, single value provided. """ self.parser = parser.SettingParser() res = self._get_block('test') self.parser._ast, self.parser._block_map = res self.parser.add_option('test', 'option_name', 'value1') self.assertEqual(self.parser._ast[2], [ ['test', [ ['option_name', ['value1']] ]] ])
def testReadFileBlockNotExist__remove_option(self): """ SettingParser.remove_option: removing option from existent block after reading from file. """ filename = self.make_file() with open(filename, 'w', 0) as f: f.write(_TEST_DATA) self.parser = parser.SettingParser(filename) self.parser.remove_option('block_name', 'option') self.parser.remove_option('block_name', 'option') with self.assertRaises(ValueError): self.parser.remove_option('block_name', 'option')
def testDupeBlock___rule_container(self): """ SettingParser._rule_container: parses container rule with duplicate blocks and dedupes them. """ self.stream = StringIO(_TEST_DUPEBLK_DATA) self.parser = parser.SettingParser() self.parser._lexer = parser.SettingLexer() self.parser._lexer.readstream(self.stream) self.assertEqual(self.parser._rule_container(), ['header_value', [['option', ['12345']]], [['block_name', [['option', ['name 3']]]], ['block_name2', [['option', ['name 5']]]], ['block_name3', [['option', ['name 6']]]]] ] )
def _save_active_file(self): """ Saves current task information to active file. Example format:: active_task { name "task name"; start_time "2012-04-23 15:18:22"; } """ _parser = parser.SettingParser() # add name _parser.add_option(None, 'name', common.to_utf8(self._name)) # add start time start_time = self._start_time.strftime('%Y-%m-%d %H:%M:%S.%f') _parser.add_option(None, 'start_time', start_time) # write it to file return _parser.write(self._paths['active_file'], self.HEADER_ACTIVE_FILE)
def testNotExist__remove_block(self): """ SettingParser.remove_block: removing non-existent block. """ self.parser = parser.SettingParser() with self.assertRaises(ValueError): self.parser.remove_block('non_exist')