Exemple #1
0
 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']]])
Exemple #2
0
 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')
Exemple #3
0
 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')
Exemple #4
0
 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')
Exemple #5
0
 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)
Exemple #6
0
    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], [])
Exemple #7
0
    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')
Exemple #8
0
    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])
Exemple #9
0
 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')
Exemple #10
0
    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')
Exemple #11
0
    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])
Exemple #12
0
    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')
Exemple #13
0
    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', []]])
Exemple #14
0
    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])
Exemple #15
0
    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')
Exemple #16
0
    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)
Exemple #17
0
    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')
Exemple #18
0
    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)
Exemple #19
0
    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']]]]])
Exemple #20
0
    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], [])
Exemple #21
0
 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']]
     ])
Exemple #22
0
    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']]
            ]]
        ])
Exemple #23
0
    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')
Exemple #24
0
    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']]]]]
            ]
        )
Exemple #25
0
    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)
Exemple #26
0
 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')