1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
from friendly_traceback.syntax_errors import syntax_utils as su
from friendly_traceback import token_utils as tu
def test_highlight_token():
tokens = tu.tokenize("\nA good test.")
tokens = tu.remove_meaningless_tokens(tokens)
good = tokens[1]
assert good == "good"
assert su.highlight_single_token(good) == {2: " ^^^^"}
def test_highlight_two_tokens():
tokens = tu.tokenize("abc 123 def 456 ghi")
tokens = tu.remove_meaningless_tokens(tokens)
first, second = tokens[1], tokens[2]
assert first == "123"
assert second == "def"
assert su.highlight_two_tokens(first, second) == {1: " ^^^ ^^^"}
assert su.highlight_two_tokens(
first, second, first_marker="-", second_marker="-", between="^"
) == {1: " ---^---"}
tokens = tu.tokenize("abc== def")
tokens = tu.remove_meaningless_tokens(tokens)
first, second = tokens[0], tokens[1]
# No space to highlight; markers converted
assert su.highlight_two_tokens(
first, second, first_marker="-", second_marker=">"
) == {1: "^^^^^"}
def test_get_expression_before_specified_token():
tokens = tu.tokenize("yield i = 3") # SyntaxError
tokens = tu.remove_meaningless_tokens(tokens)
first = tokens[0]
assert first == "yield"
assert su.get_expression_before_specified_token(first, tokens, "=") == "yield i"
# ensure that capture expression enclosed in parens
tokens = tu.tokenize("(yield i) = 3") # SyntaxError
tokens = tu.remove_meaningless_tokens(tokens)
second = tokens[1]
assert second == "yield"
assert su.get_expression_before_specified_token(second, tokens, "=") == "(yield i)"
def test_highlight_before_specified_token():
tokens = tu.tokenize("yield i = 3") # SyntaxError
tokens = tu.remove_meaningless_tokens(tokens)
first = tokens[0]
assert first == "yield"
# this highlights 'yield i'
assert su.highlight_before_specified_token(first, tokens, "=") == {1: "^^^^^^^"}
# ensure that capture expression enclosed in parens; highlights '(yield i)'
tokens = tu.tokenize("(yield i) = 3") # SyntaxError
tokens = tu.remove_meaningless_tokens(tokens)
second = tokens[1]
assert second == "yield"
assert su.highlight_before_specified_token(first, tokens, "=") == {1: "^^^^^^^^^"}
|