Exemple #1
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)
Exemple #2
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
    """)
Exemple #3
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
        ^^^
    """)
Exemple #4
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
    """)
Exemple #5
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 ...)
    """)
Exemple #6
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
        ^^^   ^^^
    """)
Exemple #7
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
        ^^^^^
    """)
Exemple #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
    """)
Exemple #9
0
def test_print_class_doc(decorators, body, expected):
    doc = ClassDoc(IdDoc("TestClass"), decorators, body)
    assert to_python_script(doc) == format_script(expected)
Exemple #10
0
def test_print_literal_doc(doc, expected):
    assert to_python_script(doc) == format_script(expected)
Exemple #11
0
def test_print_function_doc(args, decorators, body, return_type, expected):
    doc = FunctionDoc(IdDoc("func"), args, decorators, return_type, body)
    assert to_python_script(doc) == format_script(expected)  # test
Exemple #12
0
def test_print_return_doc(value, expected):
    doc = ReturnDoc(value)
    assert to_python_script(doc) == format_script(expected)
Exemple #13
0
def test_print_tuple_doc(elements, expected):
    doc = TupleDoc(elements)
    assert to_python_script(doc) == format_script(expected)
Exemple #14
0
def test_print_index_doc(indices, expected):
    doc = IdDoc("x")[indices]
    assert to_python_script(doc) == format_script(f"x{expected}")
Exemple #15
0
def test_print_lambda_doc(args, expected):
    doc = LambdaDoc(args, body=LiteralDoc(0))
    assert to_python_script(doc) == format_script(expected)
Exemple #16
0
def test_print_if_doc(then_branch, else_branch, expected):
    doc = IfDoc(IdDoc("pred"), then_branch, else_branch)
    assert to_python_script(doc) == format_script(expected)
Exemple #17
0
def test_print_while_doc(body, expected):
    doc = WhileDoc(IdDoc("pred"), body)
    assert to_python_script(doc) == format_script(expected)
Exemple #18
0
def test_print_stmt_block_doc(stmts, expected):
    doc = StmtBlockDoc(stmts)
    assert to_python_script(doc).strip() == format_script(expected).strip()
Exemple #19
0
def test_print_slice_doc(slice_doc, expected):
    doc = IdDoc("x")[slice_doc]
    assert to_python_script(doc) == format_script(f"x[{expected}]")
Exemple #20
0
def test_print_dict_doc(content, expected):
    doc = DictDoc(content)
    assert to_python_script(doc) == format_script(expected)
Exemple #21
0
def test_print_call_doc(args, kwargs, expected):
    doc = CallDoc(IdDoc("f"), *args, **kwargs)
    assert to_python_script(doc) == format_script(f"f{expected}")
Exemple #22
0
def test_expr_precedence(doc, expected):
    assert to_python_script(doc) == format_script(expected)
Exemple #23
0
def test_print_special_operation_doc(op_kind, operands, expected):
    doc = OperationDoc(op_kind, operands)
    assert to_python_script(doc) == format_script(expected)
Exemple #24
0
def test_print_expr_stmt_doc():
    doc = ExprStmtDoc(CallDoc(IdDoc("f"), IdDoc("x")))
    assert to_python_script(doc) == format_script("f(x)")
Exemple #25
0
def test_print_binary_operation_doc(op_kind, expected_token):
    doc = OperationDoc(op_kind, [IdDoc("x"), IdDoc("y")])
    assert to_python_script(doc) == format_script(f"x {expected_token} y")
Exemple #26
0
def test_print_assert_doc(msg, expected):
    test = LiteralDoc(True)

    doc = AssertDoc(test, msg)

    assert to_python_script(doc) == format_script(expected)
Exemple #27
0
def test_print_for_doc(body, expected):
    doc = ForDoc(IdDoc("x"), IdDoc("y"), body)
    assert to_python_script(doc) == format_script(expected)
Exemple #28
0
def test_print_list_doc(elements, expected):
    doc = ListDoc(elements)
    assert to_python_script(doc) == format_script(expected)
Exemple #29
0
def test_print_scope_doc(lhs, body, expected):
    doc = ScopeDoc(lhs, CallDoc(IdDoc("context")), body)
    assert to_python_script(doc) == format_script(expected)
Exemple #30
0
def test_print_attr_doc(attr):
    doc = IdDoc("x").attr(attr)
    assert to_python_script(doc) == format_script(f"x.{attr}")