perf(expression): improve string lexing & error messages

This commit is contained in:
lovetheguitar
2024-06-21 12:07:31 +02:00
parent f4897391ec
commit 1e7eb20347
2 changed files with 30 additions and 21 deletions

View File

@@ -207,25 +207,29 @@ def test_invalid_idents(ident: str) -> None:
@pytest.mark.parametrize(
"expr, expected_error_msg",
(
("mark(1=2)", 'unexpected character/s "1"'),
("mark(/=2)", 'unexpected character/s "/"'),
("mark(True=False)", 'unexpected character/s "True"'),
("mark(def=False)", 'unexpected character/s "def"'),
("mark(class=False)", 'unexpected character/s "class"'),
("mark(if=False)", 'unexpected character/s "if"'),
("mark(else=False)", 'unexpected character/s "else"'),
("mark(1)", 'unexpected character/s "1"'),
("mark(var:=False", 'unexpected character/s "var:"'),
("mark(valid=False, def=1)", 'unexpected character/s "def"'),
("mark(True=False)", "unexpected reserved python keyword `True`"),
("mark(def=False)", "unexpected reserved python keyword `def`"),
("mark(class=False)", "unexpected reserved python keyword `class`"),
("mark(if=False)", "unexpected reserved python keyword `if`"),
("mark(else=False)", "unexpected reserved python keyword `else`"),
("mark(valid=False, def=1)", "unexpected reserved python keyword `def`"),
("mark(1)", "not a valid python identifier 1"),
("mark(var:=False", "not a valid python identifier var:"),
("mark(1=2)", "not a valid python identifier 1"),
("mark(/=2)", "not a valid python identifier /"),
("mark(var==", "expected identifier; got ="),
("mark(var)", "expected =; got right parenthesis"),
("mark(var=none)", 'unexpected character/s "none"'),
("mark(var=1.1)", 'unexpected character/s "1.1"'),
("mark(var)", "expected =; got right parenthesis"),
("mark(var=')", """closing quote "'" is missing"""),
('mark(var=")', 'closing quote """ is missing'),
("""mark(var="')""", 'closing quote """ is missing'),
("""mark(var='")""", """closing quote "'" is missing"""),
(r"mark(var='\hugo')", "escaping not supported in marker expression"),
(
r"mark(var='\hugo')",
r'escaping with "\\" not supported in marker expression',
),
("mark(empty_list=[])", r'unexpected character/s "\[\]"'),
),
)
def test_invalid_kwarg_name_or_value( # TODO: move to `test_syntax_errors` ?