Add more f-string tests.

This commit is contained in:
Dave Halter
2017-08-25 09:47:24 +02:00
parent 0c0a4b5a5d
commit 204e750dd5

View File

@@ -1,6 +1,6 @@
import pytest import pytest
from parso import load_grammar from parso import load_grammar, ParserSyntaxError
@pytest.fixture @pytest.fixture
@@ -16,9 +16,38 @@ def grammar():
'{1!a:1}', '{1!a:1}',
'{1:1}', '{1:1}',
'{1:1.{32}}', '{1:1.{32}}',
'{1::>4}',
'{foo} {bar}',
# Invalid, but will be checked, later.
'{}',
'{1:}',
'{:}',
'{:1}',
'{!:}',
'{!}',
'{!a}',
'{1:{}}',
'{1:{:}}',
] ]
) )
def test_valid(code, grammar): def test_valid(code, grammar):
fstring = grammar.parse(code, error_recovery=False) fstring = grammar.parse(code, error_recovery=False)
assert fstring.type == 'fstring' assert fstring.type == 'fstring'
assert fstring.get_code() == code assert fstring.get_code() == code
@pytest.mark.parametrize(
'code', [
'}',
'{',
'{1!{a}}',
'{!{a}}',
]
)
def test_invalid(code, grammar):
with pytest.raises(ParserSyntaxError):
grammar.parse(code, error_recovery=False)
# It should work with error recovery.
grammar.parse(code, error_recovery=True)