コード例 #1
0
def test_underline_based_on_path_prefix():
    doc = StmtBlockDoc(
        [ExprStmtDoc(make_id_doc("foo")),
         ExprStmtDoc(make_id_doc("bar"))])
    result = to_python_script(
        doc, path_to_underline=make_path("foo").attr("x").attr("y"))
    # There is no document that matches the desired path exactly,
    # but path of "foo" is a prefix of the desired path, and thus should be underlined.
    assert result == format_script("""
        foo
        ^^^
        bar
    """)
コード例 #2
0
def test_underline_multiline():
    doc = StmtBlockDoc([
        ExprStmtDoc(IdDoc("foo")),
        ExprStmtDoc(IdDoc("bar")),
    ])
    doc.source_paths = [make_path("whole_doc")]

    assert to_python_script(
        doc, path_to_underline=make_path("whole_doc")) == format_script("""
        foo
        ^^^
        bar
        ^^^
    """)
コード例 #3
0
def test_underline_basic():
    doc = StmtBlockDoc([
        ExprStmtDoc(make_id_doc("foo")),
        ExprStmtDoc(
            OperationDoc(
                OperationKind.Add,
                [make_id_doc("bar"), make_id_doc("baz")])),
        ExprStmtDoc(make_id_doc("qux")),
    ])
    assert to_python_script(
        doc, path_to_underline=make_path("baz")) == format_script("""
        foo
        bar + baz
              ^^^
        qux
    """)
コード例 #4
0
def test_underline_multiple_spans():
    doc = StmtBlockDoc([
        ExprStmtDoc(make_id_doc("foo")),
        ExprStmtDoc(make_id_doc("bar")),
        ExprStmtDoc(
            OperationDoc(
                OperationKind.Add,
                [make_id_doc("foo"), make_id_doc("foo")])),
    ])
    assert to_python_script(
        doc, path_to_underline=make_path("foo")) == format_script("""
        foo
        ^^^
        bar
        foo + foo
        ^^^   ^^^
    """)
コード例 #5
0
def test_longer_prefix_must_win():
    foo_x = IdDoc("foo_x")
    foo_x.source_paths = [make_path("foo").attr("x")]

    doc = StmtBlockDoc([
        ExprStmtDoc(make_id_doc("foo")),
        ExprStmtDoc(make_id_doc("bar")),
        ExprStmtDoc(foo_x)
    ])
    result = to_python_script(
        doc, path_to_underline=make_path("foo").attr("x").attr("y"))
    # "foo" should not be underlined because there is a document with a more specific path prefix
    assert result == format_script("""
        foo
        bar
        foo_x
        ^^^^^
    """)
コード例 #6
0
def test_print_two_context_lines(to_underline, expected_text):
    doc = StmtBlockDoc([
        ExprStmtDoc(make_id_doc(f"x{i}", "yes" if i in to_underline else "no"))
        for i in range(10)
    ])
    result = to_python_script(doc,
                              num_context_lines=2,
                              path_to_underline=make_path("yes"))
    assert result == format_script(expected_text)
コード例 #7
0
def test_underline_and_print_line_numbers_with_context():
    doc = StmtBlockDoc(
        [ExprStmtDoc(make_id_doc(f"line{i + 1}")) for i in range(12)])
    result = to_python_script(doc,
                              print_line_numbers=True,
                              num_context_lines=2,
                              path_to_underline=make_path("line8"))
    assert result == format_script("""
           (... 5 lines skipped ...)
            6 line6
            7 line7
            8 line8
              ^^^^^
            9 line9
           10 line10
           (... 2 lines skipped ...)
    """)
コード例 #8
0
def test_underline_and_print_line_numbers():
    doc = StmtBlockDoc(
        [ExprStmtDoc(make_id_doc(f"line{i + 1}")) for i in range(12)])
    result = to_python_script(doc,
                              print_line_numbers=True,
                              path_to_underline=make_path("line6"))
    assert result == format_script("""
            1 line1
            2 line2
            3 line3
            4 line4
            5 line5
            6 line6
              ^^^^^
            7 line7
            8 line8
            9 line9
           10 line10
           11 line11
           12 line12
    """)
コード例 #9
0
def test_print_expr_stmt_doc():
    doc = ExprStmtDoc(CallDoc(IdDoc("f"), IdDoc("x")))
    assert to_python_script(doc) == format_script("f(x)")
コード例 #10
0
    ids=itertools.count(),
)
def test_print_slice_doc(slice_doc, expected):
    doc = IdDoc("x")[slice_doc]
    assert to_python_script(doc) == format_script(f"x[{expected}]")


@pytest.mark.parametrize(
    "stmts, expected",
    [
        (
            [],
            "",
        ),
        (
            [ExprStmtDoc(IdDoc("x"))],
            "x",
        ),
        (
            [ExprStmtDoc(IdDoc("x")), ExprStmtDoc(IdDoc("y"))],
            """
            x
            y
            """,
        ),
    ],
    ids=itertools.count(),
)
def test_print_stmt_block_doc(stmts, expected):
    doc = StmtBlockDoc(stmts)
    assert to_python_script(doc).strip() == format_script(expected).strip()