Support forwardslash characters in identifiers (#9249)

Closes #8377.
This commit is contained in:
Alexander King 2021-11-01 02:54:18 -04:00 committed by GitHub
parent 11bb9205d7
commit 31c207a0b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 6 additions and 4 deletions

View File

@ -0,0 +1,2 @@
The test selection options ``pytest -k`` and ``pytest -m`` now support matching
names containing forward slash (``/``) characters.

View File

@ -6,7 +6,7 @@ expression: expr? EOF
expr: and_expr ('or' and_expr)* expr: and_expr ('or' and_expr)*
and_expr: not_expr ('and' not_expr)* and_expr: not_expr ('and' not_expr)*
not_expr: 'not' not_expr | '(' expr ')' | ident not_expr: 'not' not_expr | '(' expr ')' | ident
ident: (\w|:|\+|-|\.|\[|\]|\\)+ ident: (\w|:|\+|-|\.|\[|\]|\\|/)+
The semantics are: The semantics are:
@ -88,7 +88,7 @@ class Scanner:
yield Token(TokenType.RPAREN, ")", pos) yield Token(TokenType.RPAREN, ")", pos)
pos += 1 pos += 1
else: else:
match = re.match(r"(:?\w|:|\+|-|\.|\[|\]|\\)+", input[pos:]) match = re.match(r"(:?\w|:|\+|-|\.|\[|\]|\\|/)+", input[pos:])
if match: if match:
value = match.group(0) value = match.group(0)
if value == "or": if value == "or":

View File

@ -1111,7 +1111,7 @@ def test_pytest_param_id_allows_none_or_string(s) -> None:
assert pytest.param(id=s) assert pytest.param(id=s)
@pytest.mark.parametrize("expr", ("NOT internal_err", "NOT (internal_err)", "bogus/")) @pytest.mark.parametrize("expr", ("NOT internal_err", "NOT (internal_err)", "bogus="))
def test_marker_expr_eval_failure_handling(pytester: Pytester, expr) -> None: def test_marker_expr_eval_failure_handling(pytester: Pytester, expr) -> None:
foo = pytester.makepyfile( foo = pytester.makepyfile(
""" """

View File

@ -144,6 +144,7 @@ def test_syntax_errors(expr: str, column: int, message: str) -> None:
"a:::c", "a:::c",
"a+-b", "a+-b",
r"\nhe\\l\lo\n\t\rbye", r"\nhe\\l\lo\n\t\rbye",
"a/b",
"אבגד", "אבגד",
"aaאבגדcc", "aaאבגדcc",
"a[bcd]", "a[bcd]",
@ -170,7 +171,6 @@ def test_valid_idents(ident: str) -> None:
@pytest.mark.parametrize( @pytest.mark.parametrize(
"ident", "ident",
( (
"/",
"^", "^",
"*", "*",
"=", "=",