SegmentRange: more explicit slice matching (#31451)

* more explicit

* fix it

* use non capturing group

* only needed for regex101

* make test_logreader.py executable

* fix

* stash

* passes test

* none

* type anotate

* test

* fix

* nice for syntax highlighting
old-commit-hash: 796671fe1a
chrysler-long2
Shane Smiskol 1 year ago committed by GitHub
parent 5c16ae62d8
commit 9d941a9682
  1. 2
      tools/lib/helpers.py
  2. 10
      tools/lib/route.py
  3. 4
      tools/lib/tests/test_logreader.py

@ -15,7 +15,7 @@ class RE:
INDEX = r'-?[0-9]+' INDEX = r'-?[0-9]+'
SLICE = r'(?P<start>{})?:?(?P<end>{})?:?(?P<step>{})?'.format(INDEX, INDEX, INDEX) SLICE = r'(?P<start>{})?:?(?P<end>{})?:?(?P<step>{})?'.format(INDEX, INDEX, INDEX)
SEGMENT_RANGE = r'{}(?:--|/)?(?P<slice>({}))?/?(?P<selector>([qras]))?'.format(ROUTE_NAME, SLICE) SEGMENT_RANGE = r'{}(?:(--|/)(?P<slice>({})))?(?:/(?P<selector>([qras])))?'.format(ROUTE_NAME, SLICE)
BOOTLOG_NAME = ROUTE_NAME BOOTLOG_NAME = ROUTE_NAME

@ -265,7 +265,11 @@ class SegmentRange:
@property @property
def _slice(self) -> str: def _slice(self) -> str:
return self.m.group("slice") return self.m.group("slice") or ""
@property
def selector(self) -> str | None:
return self.m.group("selector")
@property @property
def seg_idxs(self) -> list[int]: def seg_idxs(self) -> list[int]:
@ -286,10 +290,6 @@ class SegmentRange:
else: else:
return list(range(end + 1))[s] return list(range(end + 1))[s]
@property
def selector(self) -> str:
return self.m.group("selector")
def __str__(self) -> str: def __str__(self) -> str:
return f"{self.dongle_id}/{self.timestamp}" + (f"/{self._slice}" if self._slice else "") + (f"/{self.selector}" if self.selector else "") return f"{self.dongle_id}/{self.timestamp}" + (f"/{self._slice}" if self._slice else "") + (f"/{self.selector}" if self.selector else "")

@ -1,3 +1,4 @@
#!/usr/bin/env python3
import shutil import shutil
import tempfile import tempfile
import os import os
@ -83,6 +84,9 @@ class TestLogReader(unittest.TestCase):
(f"{TEST_ROUTE}/j",), (f"{TEST_ROUTE}/j",),
(f"{TEST_ROUTE}/0:1:2:3",), (f"{TEST_ROUTE}/0:1:2:3",),
(f"{TEST_ROUTE}/:::3",), (f"{TEST_ROUTE}/:::3",),
(f"{TEST_ROUTE}3",),
(f"{TEST_ROUTE}-3",),
(f"{TEST_ROUTE}--3a",),
]) ])
def test_bad_ranges(self, segment_range): def test_bad_ranges(self, segment_range):
with self.assertRaises(AssertionError): with self.assertRaises(AssertionError):

Loading…
Cancel
Save