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 unittest.mock import Mock
|
||||||
|
|
||||||
from subiquitycore.tests import SubiTestCase
|
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):
|
class TestOrigEnviron(SubiTestCase):
|
||||||
|
@ -68,3 +68,23 @@ class TestOrigEnviron(SubiTestCase):
|
||||||
"PATH": "/usr/bin:/bin",
|
"PATH": "/usr/bin:/bin",
|
||||||
}
|
}
|
||||||
self.assertEqual(expected, orig_environ(env))
|
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
|
for item in items
|
||||||
if all(k in item and item[k] == v for k, v in criteria.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