Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
 def visit_TestCaseSection(self, node):
     self.generic_visit(node)
     node.body.items.append(
         TestCase(Name([Token('NAME', 'Added'),
                        Token('EOL', '\n')])))
     return node
Пример #4
0
*** 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)])