示例#1
0
 def leave_SimpleStatementLine(
         self, node: cst.SimpleStatementLine,
         updated_node: cst.SimpleStatementLine) -> cst.SimpleStatementLine:
     body = []
     for line in node.body:
         if isinstance(line, cst.Expr) and isinstance(
                 line.value, cst.Comparison):
             body.append(cst.Assert(test=line.value))
         else:
             body.append(line)
     return updated_node.with_changes(body=body)
示例#2
0
class AssertConstructionTest(CSTNodeTest):
    @data_provider((
        # Simple assert
        {
            "node": cst.Assert(cst.Name("True")),
            "code": "assert True",
            "parser": None,
            "expected_position": None,
        },
        # Assert with message
        {
            "node":
            cst.Assert(cst.Name("True"),
                       cst.SimpleString('"Value should be true"')),
            "code":
            'assert True, "Value should be true"',
            "parser":
            None,
            "expected_position":
            None,
        },
        # Whitespace oddities test
        {
            "node":
            cst.Assert(
                cst.Name("True",
                         lpar=(cst.LeftParen(), ),
                         rpar=(cst.RightParen(), )),
                whitespace_after_assert=cst.SimpleWhitespace(""),
            ),
            "code":
            "assert(True)",
            "parser":
            None,
            "expected_position":
            CodeRange((1, 0), (1, 12)),
        },
        # Whitespace rendering test
        {
            "node":
            cst.Assert(
                whitespace_after_assert=cst.SimpleWhitespace("  "),
                test=cst.Name("True"),
                comma=cst.Comma(
                    whitespace_before=cst.SimpleWhitespace("  "),
                    whitespace_after=cst.SimpleWhitespace("  "),
                ),
                msg=cst.SimpleString('"Value should be true"'),
            ),
            "code":
            'assert  True  ,  "Value should be true"',
            "parser":
            None,
            "expected_position":
            CodeRange((1, 0), (1, 39)),
        },
    ))
    def test_valid(self, **kwargs: Any) -> None:
        self.validate_node(**kwargs)

    @data_provider((
        # Validate whitespace handling
        {
            "get_node": (lambda: cst.Assert(
                cst.Name("True"),
                whitespace_after_assert=cst.SimpleWhitespace(""),
            )),
            "expected_re":
            "Must have at least one space after 'assert'",
        },
        # Validate comma handling
        {
            "get_node":
            (lambda: cst.Assert(test=cst.Name("True"), comma=cst.Comma())),
            "expected_re":
            "Cannot have trailing comma after 'test'",
        },
    ))
    def test_invalid(self, **kwargs: Any) -> None:
        self.assert_invalid(**kwargs)
示例#3
0
class AssertParsingTest(CSTNodeTest):
    @data_provider((
        # Simple assert
        {
            "node": cst.Assert(cst.Name("True")),
            "code": "assert True",
            "parser": _assert_parser,
            "expected_position": None,
        },
        # Assert with message
        {
            "node":
            cst.Assert(
                cst.Name("True"),
                cst.SimpleString('"Value should be true"'),
                comma=cst.Comma(whitespace_after=cst.SimpleWhitespace(" ")),
            ),
            "code":
            'assert True, "Value should be true"',
            "parser":
            _assert_parser,
            "expected_position":
            None,
        },
        # Whitespace oddities test
        {
            "node":
            cst.Assert(
                cst.Name("True",
                         lpar=(cst.LeftParen(), ),
                         rpar=(cst.RightParen(), )),
                whitespace_after_assert=cst.SimpleWhitespace(""),
            ),
            "code":
            "assert(True)",
            "parser":
            _assert_parser,
            "expected_position":
            None,
        },
        # Whitespace rendering test
        {
            "node":
            cst.Assert(
                whitespace_after_assert=cst.SimpleWhitespace("  "),
                test=cst.Name("True"),
                comma=cst.Comma(
                    whitespace_before=cst.SimpleWhitespace("  "),
                    whitespace_after=cst.SimpleWhitespace("  "),
                ),
                msg=cst.SimpleString('"Value should be true"'),
            ),
            "code":
            'assert  True  ,  "Value should be true"',
            "parser":
            _assert_parser,
            "expected_position":
            None,
        },
    ))
    def test_valid(self, **kwargs: Any) -> None:
        self.validate_node(**kwargs)