From 9d941a9682cea0f27e9f923f46a97ab43e9ad3c7 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 14 Feb 2024 06:36:58 -0600 Subject: [PATCH] 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: 796671fe1a9131275c4ff0d67293bb669d0dcd98 --- tools/lib/helpers.py | 2 +- tools/lib/route.py | 10 +++++----- tools/lib/tests/test_logreader.py | 4 ++++ 3 files changed, 10 insertions(+), 6 deletions(-) mode change 100644 => 100755 tools/lib/tests/test_logreader.py diff --git a/tools/lib/helpers.py b/tools/lib/helpers.py index cc4c5e148e..f0af3d03c5 100644 --- a/tools/lib/helpers.py +++ b/tools/lib/helpers.py @@ -15,7 +15,7 @@ class RE: INDEX = r'-?[0-9]+' SLICE = r'(?P{})?:?(?P{})?:?(?P{})?'.format(INDEX, INDEX, INDEX) - SEGMENT_RANGE = r'{}(?:--|/)?(?P({}))?/?(?P([qras]))?'.format(ROUTE_NAME, SLICE) + SEGMENT_RANGE = r'{}(?:(--|/)(?P({})))?(?:/(?P([qras])))?'.format(ROUTE_NAME, SLICE) BOOTLOG_NAME = ROUTE_NAME diff --git a/tools/lib/route.py b/tools/lib/route.py index eef6642769..aba95718d5 100644 --- a/tools/lib/route.py +++ b/tools/lib/route.py @@ -265,7 +265,11 @@ class SegmentRange: @property 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 def seg_idxs(self) -> list[int]: @@ -286,10 +290,6 @@ class SegmentRange: else: return list(range(end + 1))[s] - @property - def selector(self) -> str: - return self.m.group("selector") - 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 "") diff --git a/tools/lib/tests/test_logreader.py b/tools/lib/tests/test_logreader.py old mode 100644 new mode 100755 index 1ec04cae78..70c770427a --- a/tools/lib/tests/test_logreader.py +++ b/tools/lib/tests/test_logreader.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 import shutil import tempfile import os @@ -83,6 +84,9 @@ class TestLogReader(unittest.TestCase): (f"{TEST_ROUTE}/j",), (f"{TEST_ROUTE}/0:1:2:3",), (f"{TEST_ROUTE}/:::3",), + (f"{TEST_ROUTE}3",), + (f"{TEST_ROUTE}-3",), + (f"{TEST_ROUTE}--3a",), ]) def test_bad_ranges(self, segment_range): with self.assertRaises(AssertionError):