utils: add gen_zsys_uuid
Add gen_zsys_uuid, to generate a uuid of the same form as used in the ubiquity zsys-setup script.
This commit is contained in:
parent
c7eea37546
commit
c73fac697e
|
@ -16,7 +16,7 @@
|
|||
# from unittest.mock import Mock
|
||||
|
||||
from subiquitycore.tests import SubiTestCase
|
||||
from subiquitycore.utils import orig_environ
|
||||
from subiquitycore.utils import _zsys_uuid_charset, gen_zsys_uuid, orig_environ
|
||||
|
||||
|
||||
class TestOrigEnviron(SubiTestCase):
|
||||
|
@ -68,3 +68,23 @@ class TestOrigEnviron(SubiTestCase):
|
|||
"PATH": "/usr/bin:/bin",
|
||||
}
|
||||
self.assertEqual(expected, orig_environ(env))
|
||||
|
||||
|
||||
class TestZsysUUID(SubiTestCase):
|
||||
def test_charset(self):
|
||||
charset = _zsys_uuid_charset()
|
||||
for c in "0", "9", "a", "z":
|
||||
self.assertIn(c, charset)
|
||||
bads = [
|
||||
chr(ord("0") - 1),
|
||||
chr(ord("9") + 1),
|
||||
chr(ord("a") - 1),
|
||||
chr(ord("z") + 1),
|
||||
]
|
||||
for c in bads:
|
||||
self.assertNotIn(c, charset)
|
||||
|
||||
def test_zsys_uuid(self):
|
||||
for i in range(10):
|
||||
uuid = gen_zsys_uuid()
|
||||
self.assertEqual(6, len(uuid), uuid)
|
||||
|
|
|
@ -269,3 +269,16 @@ def matching_dicts(items: Sequence[Dict[Any, Any]], **criteria):
|
|||
for item in items
|
||||
if all(k in item and item[k] == v for k, v in criteria.items())
|
||||
]
|
||||
|
||||
|
||||
def _zsys_uuid_charset() -> list:
|
||||
charset = [chr(c) for c in range(ord("0"), ord("9") + 1)]
|
||||
charset += [chr(c) for c in range(ord("a"), ord("z") + 1)]
|
||||
# random.choice wants a list
|
||||
return charset
|
||||
|
||||
|
||||
def gen_zsys_uuid():
|
||||
"""Create a 6 character identifier. Functionally equivalent to
|
||||
`head -100 /dev/urandom | tr -dc 'a-z0-9' | head -c6`"""
|
||||
return "".join([random.choice(_zsys_uuid_charset()) for i in range(6)])
|
||||
|
|
Loading…
Reference in New Issue