Remove usage of parser module (deprecated in Python 3.9) (#6407)
Remove usage of parser module (deprecated in Python 3.9)
This commit is contained in:
commit
e8c8559efa
|
@ -1 +1 @@
|
|||
Removed unused ``_pytest.code.Source.isparseable`` function.
|
||||
Remove usage of ``parser`` module, deprecated in Python 3.9.
|
||||
|
|
|
@ -136,6 +136,21 @@ class Source:
|
|||
newsource.lines[:] = deindent(self.lines)
|
||||
return newsource
|
||||
|
||||
def isparseable(self, deindent: bool = True) -> bool:
|
||||
""" return True if source is parseable, heuristically
|
||||
deindenting it by default.
|
||||
"""
|
||||
if deindent:
|
||||
source = str(self.deindent())
|
||||
else:
|
||||
source = str(self)
|
||||
try:
|
||||
ast.parse(source)
|
||||
except (SyntaxError, ValueError, TypeError):
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def __str__(self) -> str:
|
||||
return "\n".join(self.lines)
|
||||
|
||||
|
|
|
@ -121,6 +121,15 @@ def test_syntaxerror_rerepresentation() -> None:
|
|||
assert ex.value.text == "xyz xyz\n"
|
||||
|
||||
|
||||
def test_isparseable() -> None:
|
||||
assert Source("hello").isparseable()
|
||||
assert Source("if 1:\n pass").isparseable()
|
||||
assert Source(" \nif 1:\n pass").isparseable()
|
||||
assert not Source("if 1:\n").isparseable()
|
||||
assert not Source(" \nif 1:\npass").isparseable()
|
||||
assert not Source(chr(0)).isparseable()
|
||||
|
||||
|
||||
class TestAccesses:
|
||||
def setup_class(self) -> None:
|
||||
self.source = Source(
|
||||
|
@ -134,6 +143,7 @@ class TestAccesses:
|
|||
|
||||
def test_getrange(self) -> None:
|
||||
x = self.source[0:2]
|
||||
assert x.isparseable()
|
||||
assert len(x.lines) == 2
|
||||
assert str(x) == "def f(x):\n pass"
|
||||
|
||||
|
|
Loading…
Reference in New Issue