fix: reject stray pipe in sign by using [+-] character class

Inside a character class '|' is a literal, so [+|-] matched '+', '-', or
'|'. A leading pipe was captured as a sign and stripped, letting malformed
input like '|5m' parse to 300 instead of returning None. Restrict the
class to the two intended sign characters.
This commit is contained in:
dualfroz committed 2026-09-04 09:31:35 +02:00
1 parent 81c649efa1
commit 8db541c87e
3 files changed
+63 -1

No files matched your search

+4
View File
@@ -83,6 +83,10 @@ class TestTimeparse(unittest.TestCase):
self.assertEqual(timeparse.timeparse('- 32 m 1 s'), -1921)
self.assertIsNone(timeparse.timeparse('32 m - 1 s'))
self.assertIsNone(timeparse.timeparse('32 m + 1 s'))
# A stray pipe is not a valid sign and must not be silently accepted.
self.assertIsNone(timeparse.timeparse('|5m'))
self.assertIsNone(timeparse.timeparse('| 5m'))
self.assertIsNone(timeparse.timeparse('|1:24'))
def test_timeparse_1(self):
'''timeparse test case 1.'''