summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/test_unit.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/test_unit.py b/tests/test_unit.py
index 39fc658..9a8a95d 100644
--- a/tests/test_unit.py
+++ b/tests/test_unit.py
@@ -7633,6 +7633,54 @@ class Test2_WithoutPackrat(ppt.TestParseResultsAsserts, TestCase):
):
result = patt.parseString(line)
+ def testMiscellaneousExceptionBits(self):
+ try:
+ pp.Word(pp.nums).parseString("ABC")
+ except pp.ParseException as pe:
+ with self.assertRaises(AttributeError):
+ print(pe.nonexistent_attribute)
+
+ expected_str = "Expected W:(0-9), found 'A' (at char 0), (line:1, col:1)"
+ print(pe)
+ self.assertEqual(expected_str, str(pe), "invalid ParseException str")
+ print(repr(pe))
+ self.assertEqual(expected_str, repr(pe), "invalid ParseException repr")
+ print(dir(pe))
+ expected_dir = [
+ "args",
+ "col",
+ "explain",
+ "explain_exception",
+ "line",
+ "lineno",
+ "markInputline",
+ "with_traceback",
+ ]
+ observed_dir = [attr for attr in dir(pe) if not attr.startswith("_")]
+ self.assertEqual(expected_dir, observed_dir, "invalid dir(ParseException)")
+
+ # test explain using depth=None
+ explain_str = pe.explain(depth=None)
+ print(explain_str)
+ zero_depth_explain_str = pe.explain(depth=0)
+ self_testcase_name = type(self).__name__
+ for expected_function in [
+ "tests.test_unit." + self_testcase_name,
+ "pyparsing.core._WordRegex - W:(0-9)",
+ ]:
+ self.assertTrue(
+ expected_function in explain_str,
+ "{!r} not found in ParseException.explain()".format(
+ expected_function
+ ),
+ )
+ self.assertFalse(
+ expected_function in zero_depth_explain_str,
+ "{!r} found in ParseException.explain(depth=0)".format(
+ expected_function
+ ),
+ )
+
class Test3_EnablePackratParsing(TestCase):
def runTest(self):