Skip to content

Commit becfed2

Browse files
committed
Response to feedback
1 parent 6676692 commit becfed2

File tree

10 files changed

+330
-91
lines changed

10 files changed

+330
-91
lines changed

CHANGES.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ Changelog
33

44
Unreleased
55
----------
6+
- Use `gherkin-official` parser to replace custom parsing logic.
7+
- Multiline steps must now always use triple-quotes for the additional lines.
8+
- All feature files must now use the keyword `Feature:` to be considered valid.
9+
- Tags can no longer have spaces (e.g. "@tag one" "@tag two" are no longer valid).
610

711
7.2.0
812
----------

src/pytest_bdd/exceptions.py

Lines changed: 53 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,58 @@ class NoScenariosFound(Exception):
2727
"""No scenarios found."""
2828

2929

30-
class FeatureError(Exception):
31-
"""Feature parse error."""
30+
class GherkinParseError(Exception):
31+
"""Base class for all Gherkin parsing errors."""
3232

33-
message = "{0}.\nLine number: {1}.\nLine: {2}.\nFile: {3}"
33+
def __init__(self, message, line, line_content, filename):
34+
super().__init__(message)
35+
self.message = message
36+
self.line = line
37+
self.line_content = line_content
38+
self.filename = filename
39+
self.line = line
40+
self.line_content = line_content
41+
self.filename = filename
3442

35-
def __str__(self) -> str:
36-
"""String representation."""
37-
return self.message.format(*self.args)
43+
def __str__(self):
44+
return f"{self.__class__.__name__}: {self.message}\nLine number: {self.line}\nLine: {self.line_content}\nFile: {self.filename}"
45+
46+
47+
class FeatureError(GherkinParseError):
48+
pass
49+
50+
51+
class BackgroundError(GherkinParseError):
52+
pass
53+
54+
55+
class ScenarioOutlineError(GherkinParseError):
56+
pass
57+
58+
59+
class ScenarioError(GherkinParseError):
60+
pass
61+
62+
63+
class ExamplesError(GherkinParseError):
64+
pass
65+
66+
67+
class StepError(GherkinParseError):
68+
pass
69+
70+
71+
class TagError(GherkinParseError):
72+
pass
73+
74+
75+
class RuleError(GherkinParseError):
76+
pass
77+
78+
79+
class DocStringError(GherkinParseError):
80+
pass
81+
82+
83+
class TokenError(GherkinParseError):
84+
pass

0 commit comments

Comments
 (0)