changeset 298:16a5c337fcb9

FIX: peeking for byte strings on Python3 needs to convert from int to bytes
author Franz Glasner <fzglas.hg@dom66.de>
date Tue, 04 Mar 2025 09:01:42 +0100
parents 141a3aa0b403
children bcbc68d8aa12
files cutils/util/glob.py tests/test_match.py
diffstat 2 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/cutils/util/glob.py	Tue Mar 04 01:52:18 2025 +0100
+++ b/cutils/util/glob.py	Tue Mar 04 09:01:42 2025 +0100
@@ -220,4 +220,6 @@
         if self._nch is not None:
             return self._nch
         self._nch = next(self._it, None)
+        if isinstance(self._nch, int):
+            self._nch = bytes((self._nch,))
         return self._nch
--- a/tests/test_match.py	Tue Mar 04 01:52:18 2025 +0100
+++ b/tests/test_match.py	Tue Mar 04 09:01:42 2025 +0100
@@ -63,6 +63,16 @@
         self.assertEqual("234", chars)
         self.assertIsNone(it.peek())
 
+    def test_peek_from_second_with_bytes(self):
+        it = CharIter(b"1234")
+        self.assertEqual(b"1", it.peek())
+        self.assertEqual(b"1", next(it))
+        self.assertEqual(b"2", it.peek())
+        self.assertEqual(b"2", it.peek())        # a second peek is idempotent  
+        chars = b"".join(it)
+        self.assertEqual(b"234", chars)
+        self.assertIsNone(it.peek())
+
 
 class TestGlobToRegexp(unittest.TestCase):