def test_ast_NodeTransformer(self): class Transformer(ast.NodeTransformer): def visit_Tags(self, node): return None def visit_TestCaseSection(self, node): self.generic_visit(node) node.body.items.append( TestCase(Name([Token('NAME', 'Added'), Token('EOL', '\n')]))) return node def visit_TestCase(self, node): self.generic_visit(node) return node if node.name != 'REMOVE' else None def visit_Name(self, node): name = node.get_token(Token.NAME) name.value = name.value.upper() return node def visit_Block(self, node): raise RuntimeError('Should not be executed.') def visit_Statement(self, node): raise RuntimeError('Should not be executed.') model = get_model('''\ *** Test Cases *** Example [Tags] to be removed Remove ''') Transformer().visit(model) expected = File(sections=[ TestCaseSection( header=TestCaseSectionHeader([ Token('TESTCASE_HEADER', '*** Test Cases ***', 1, 0), Token('EOL', '\n', 1, 18) ]), body=[ TestCase( Name([ Token('NAME', 'EXAMPLE', 2, 0), Token('EOL', '\n', 2, 7) ])), TestCase(Name([Token('NAME', 'Added'), Token('EOL', '\n')])) ]) ]) assert_model(model, expected)
def test_ModelTransformer(self): class Transformer(ModelTransformer): def visit_TestCaseSectionHeader(self, node): return node def visit_Name(self, node): return node def visit_Statement(self, node): return None def visit_Block(self, node): self.generic_visit(node) if hasattr(node, 'header'): for token in node.header.data_tokens: token.value = token.value.upper() return node model = get_model('''\ *** Test Cases *** Example [Tags] to be removed To be removed ''') Transformer().visit(model) expected = File(sections=[ TestCaseSection(header=TestCaseSectionHeader([ Token('TESTCASE_HEADER', '*** TEST CASES ***', 1, 0), Token('EOL', '\n', 1, 18) ]), body=[ TestCase( Name([ Token('NAME', 'EXAMPLE', 2, 0), Token('EOL', '\n', 2, 7) ])), ]) ]) assert_model(model, expected)
def visit_TestCaseSection(self, node): self.generic_visit(node) node.body.items.append( TestCase(Name([Token('NAME', 'Added'), Token('EOL', '\n')]))) return node
*** Keywords *** Keyword [Arguments] ${arg1} ${arg2} Log Got ${arg1} and ${arg}! ''' PATH = os.path.join( os.getenv('TEMPDIR') or tempfile.gettempdir(), 'test_model.robot') EXPECTED = File(sections=[ CommentSection(body=[EmptyLine([Token('EOL', '\n', 1, 0)])]), TestCaseSection(header=TestCaseSectionHeader([ Token('TESTCASE_HEADER', '*** Test Cases ***', 2, 0), Token('EOL', '\n', 2, 18) ]), body=[ TestCase(header=Name([ Token('NAME', 'Example', 3, 0), Token('EOL', '\n', 3, 7) ]), body=[ KeywordCall([ Token('SEPARATOR', ' ', 4, 0), Token('KEYWORD', 'Keyword', 4, 4), Token('SEPARATOR', ' ', 4, 11), Token('ARGUMENT', 'arg', 4, 15), Token('EOL', '\n', 4, 18), Token('SEPARATOR', ' ', 5, 0), Token('CONTINUATION', '...', 5, 4), Token('SEPARATOR', ' ', 5, 7), Token('ARGUMENT', 'argh', 5, 11), Token('EOL', '\n', 5, 15) ]), EmptyLine([Token('EOL', '\n', 6, 0)])