コード例 #1
0
 def setUp(self):
     from certbot_nginx._internal.parser_obj import Statements
     self.statements = Statements(None)
     self.raw = [['sentence', 'one'], ['sentence', 'two'],
                 ['and', 'another']]
     self.raw_spaced = [['\n  ', 'sentence', ' ', 'one'],
                        ['\n  ', 'sentence', ' ', 'two'],
                        ['\n  ', 'and', ' ', 'another'], '\n\n']
コード例 #2
0
class StatementsTest(unittest.TestCase):
    def setUp(self):
        from certbot_nginx._internal.parser_obj import Statements
        self.statements = Statements(None)
        self.raw = [['sentence', 'one'], ['sentence', 'two'],
                    ['and', 'another']]
        self.raw_spaced = [['\n  ', 'sentence', ' ', 'one'],
                           ['\n  ', 'sentence', ' ', 'two'],
                           ['\n  ', 'and', ' ', 'another'], '\n\n']

    def test_set_tabs(self):
        self.statements.parse(self.raw)
        self.statements.set_tabs()
        for statement in self.statements.iterate():
            self.assertEqual(statement.dump(True)[0], '\n    ')

    def test_set_tabs_with_parent(self):
        # Trailing whitespace should inherit from parent tabbing.
        self.statements.parse(self.raw)
        self.statements.parent = mock.Mock()
        self.statements.parent.get_tabs.return_value = '\t\t'
        self.statements.set_tabs()
        for statement in self.statements.iterate():
            self.assertEqual(statement.dump(True)[0], '\n    ')
        self.assertEqual(self.statements.dump(True)[-1], '\n\t\t')

    def test_get_tabs(self):
        self.raw[0].insert(0, '\n \n  \t')
        self.statements.parse(self.raw)
        self.assertEqual(self.statements.get_tabs(), '  \t')
        self.statements.parse([])
        self.assertEqual(self.statements.get_tabs(), '')

    def test_parse_with_added_spaces(self):
        self.statements.parse(self.raw, add_spaces=True)
        self.assertEqual(
            self.statements.dump(True)[0], ['sentence', ' ', 'one'])

    def test_parse_bad_list_raises_error(self):
        from certbot import errors
        self.assertRaises(errors.MisconfigurationError, self.statements.parse,
                          'lol not a list')

    def test_parse_hides_trailing_whitespace(self):
        self.statements.parse(self.raw + ['\n\n  '])
        self.assertTrue(isinstance(self.statements.dump()[-1], list))
        self.assertTrue(self.statements.dump(True)[-1].isspace())
        self.assertEqual(self.statements.dump(True)[-1], '\n\n  ')

    def test_iterate(self):
        self.statements.parse(self.raw)
        expected = [['sentence', 'one'], ['sentence', 'two']]
        for i, elem in enumerate(
                self.statements.iterate(match=lambda x: 'sentence' in x)):
            self.assertEqual(expected[i], elem.dump())