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']
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())