Commit e838df83 authored by Jérome Perrin's avatar Jérome Perrin

tidrange: different exceptions for TidRangeInvalid/TidInvalid

parent 77fa2e4b
......@@ -26,7 +26,7 @@ import pytz
from freezegun import freeze_time
from ZODB.TimeStamp import TimeStamp
from zodbtools.util import TidRangeInvalid, ashex, parse_tid, parse_tidrange
from zodbtools.util import TidRangeInvalid, TidInvalid, ashex, parse_tid, parse_tidrange
@pytest.fixture
......@@ -64,8 +64,13 @@ def test_tidrange_tid():
assert (None, None) == parse_tidrange("..")
with pytest.raises(TidRangeInvalid) as exc:
parse_tidrange("invalid")
assert exc.value.args == ("invalid",)
parse_tidrange("inv.alid")
assert exc.value.args == ("inv.alid", )
# range is correct, but a TID is invalid
with pytest.raises(TidInvalid) as exc:
parse_tidrange("invalid..")
assert exc.value.args == ("invalid", )
def test_tidrange_date():
......@@ -76,6 +81,16 @@ def test_tidrange_date():
"2018-01-01T10:30:00Z..2018-01-02T00:00:00.000000+00:00")
def test_parse_tid():
assert b"\x00\x00\x00\x00\x00\x00\xbb\xbb" == parse_tid("000000000000bbbb")
with pytest.raises(TidInvalid) as exc:
parse_tid("invalid")
assert exc.value.args == ("invalid", )
with pytest.raises(TidInvalid) as exc:
parse_tid('')
assert exc.value.args == ('', )
test_parameters = []
......
......@@ -63,7 +63,11 @@ def txnobjv(txn):
return objv
# "tidmin..tidmax" -> (tidmin, tidmax)
class TidRangeInvalid(Exception):
class TidInvalid(ValueError):
pass
class TidRangeInvalid(ValueError):
pass
......@@ -76,7 +80,7 @@ def parse_tid(tid_string, raw_only=False):
is invalid.
"""
if not tid_string:
return tid_string
raise TidInvalid(tid_string)
# If it "looks like a TID", don't try to parse it as time,
# because parsing is slow.
......@@ -101,7 +105,7 @@ def parse_tid(tid_string, raw_only=False):
try:
return fromhex(tid_string)
except TypeError:
raise TidRangeInvalid(tid_string)
raise TidInvalid(tid_string)
# build a ZODB.TimeStamp to convert as a TID
return TimeStamp(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment