Add apache specific functionality to the interface

This commit is contained in:
Joona Hoikkala 2019-08-15 17:12:11 +03:00
parent e43f5b05f7
commit 933a21ec3d
No known key found for this signature in database
GPG key ID: D5AA86BBF9B29A5C
2 changed files with 50 additions and 5 deletions

View file

@ -121,8 +121,21 @@ class ParserNode(object):
# True if this node has been modified since last save.
dirty: bool
# Filepath of the file where the configuration element for this ParserNode
# object resides.
filepath: str
"""
@abc.abstractmethod
def metadata(self, key):
"""
Gets an element from the metadata dictionary for this ParserNode object.
:param str key: Element key name
:returns: Requested metadata element
"""
@abc.abstractmethod
def save(self, msg):
"""
@ -142,7 +155,7 @@ class ParserNode(object):
@six.add_metaclass(abc.ABCMeta)
class CommentNode(ParserNode):
class CommentNode(object):
"""
CommentNode class is used for representation of comments within the parsed
configuration structure. Because of the nature of comments, it is not able
@ -161,7 +174,7 @@ class CommentNode(ParserNode):
@six.add_metaclass(abc.ABCMeta)
class DirectiveNode(ParserNode):
class DirectiveNode(object):
"""
DirectiveNode class represents a configuration directive within the configuration.
It can have zero or more parameters attached to it. Because of the nature of
@ -195,7 +208,7 @@ class DirectiveNode(ParserNode):
@six.add_metaclass(abc.ABCMeta)
class BlockNode(ParserNode):
class BlockNode(object):
"""
BlockNode class represents a block of nested configuration directives, comments
and other blocks as its children. A BlockNode can have zero or more parameters

View file

@ -8,28 +8,41 @@ from certbot_apache import interfaces
class DummyCommentNode(interfaces.CommentNode):
class DummyCommentNode(interfaces.ParserNode):
""" A dummy class implementing CommentNode interface """
ancestor = None
comment = ""
dirty = False
filename = ""
def metadata(self, key): # pragma: no cover
"""Metadata"""
pass
def save(self, msg): # pragma: no cover
"""Save"""
pass
class DummyDirectiveNode(interfaces.DirectiveNode):
class DummyDirectiveNode(interfaces.ParserNode):
""" A dummy class implementing DirectiveNode interface """
ancestor = None
parameters = tuple() # type: Tuple[str, ...]
dirty = False
enabled = True
name = ""
filename = ""
def metadata(self, key): # pragma: no cover
"""Metadata"""
pass
def save(self, msg): # pragma: no cover
"""Save"""
pass
def set_parameters(self, parameters): # pragma: no cover
"""Set parameters"""
pass
@ -41,38 +54,57 @@ class DummyBlockNode(interfaces.BlockNode):
dirty = False
enabled = True
name = ""
filename = ""
def save(self, msg): # pragma: no cover
"""Save"""
pass
def add_child_block(self, name, parameters=None, position=None): # pragma: no cover
"""Add child block"""
pass
def add_child_directive(self, name, parameters=None, position=None): # pragma: no cover
"""Add child directive"""
pass
def add_child_comment(self, comment="", position=None): # pragma: no cover
"""Add child comment"""
pass
def find_blocks(self, name, exclude=True): # pragma: no cover
"""Find blocks"""
pass
def find_directives(self, name, exclude=True): # pragma: no cover
"""Find directives"""
pass
def find_comments(self, comment, exact=False): # pragma: no cover
"""Find comments"""
pass
def delete_child(self, child): # pragma: no cover
"""Delete child"""
pass
def metadata(self, key): # pragma: no cover
"""Metadata"""
pass
def set_parameters(self, parameters): # pragma: no cover
"""Set parameters"""
pass
def unsaved_files(self): # pragma: no cover
"""Unsaved files"""
pass
interfaces.CommentNode.register(DummyCommentNode)
interfaces.DirectiveNode.register(DummyDirectiveNode)
interfaces.BlockNode.register(DummyBlockNode)
class ParserNodeTest(unittest.TestCase):
"""Dummy placeholder test case for ParserNode interfaces"""