2022-06-13 17:43:54 +00:00
|
|
|
# Copyright 2022 Canonical, Ltd.
|
|
|
|
#
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
|
|
# it under the terms of the GNU Affero General Public License as
|
|
|
|
# published by the Free Software Foundation, either version 3 of the
|
|
|
|
# License, or (at your option) any later version.
|
|
|
|
#
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
# GNU Affero General Public License for more details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
# from unittest.mock import Mock
|
|
|
|
|
|
|
|
from subiquitycore.tests import SubiTestCase
|
2023-08-16 21:30:40 +00:00
|
|
|
from subiquitycore.utils import _zsys_uuid_charset, gen_zsys_uuid, orig_environ
|
2022-06-13 17:43:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
class TestOrigEnviron(SubiTestCase):
|
|
|
|
def test_empty(self):
|
|
|
|
env = {}
|
|
|
|
expected = env
|
|
|
|
self.assertEqual(expected, orig_environ(env))
|
|
|
|
|
|
|
|
def test_orig_path(self):
|
|
|
|
env = {"PATH": "a", "PATH_ORIG": "b"}
|
|
|
|
expected = {"PATH": "b"}
|
|
|
|
self.assertEqual(expected, orig_environ(env))
|
|
|
|
|
|
|
|
def test_not_this_key(self):
|
|
|
|
env = {"PATH": "a", "PATH_ORIG_AAAAA": "b"}
|
|
|
|
expected = env
|
|
|
|
self.assertEqual(expected, orig_environ(env))
|
|
|
|
|
|
|
|
def test_remove_empty_key(self):
|
|
|
|
env = {"STUFF": "a", "STUFF_ORIG": ""}
|
|
|
|
expected = {}
|
|
|
|
self.assertEqual(expected, orig_environ(env))
|
|
|
|
|
2023-03-30 22:34:12 +00:00
|
|
|
def test_no_ld_library_path(self):
|
|
|
|
env = {"LD_LIBRARY_PATH": "a"}
|
|
|
|
expected = {}
|
|
|
|
self.assertEqual(expected, orig_environ(env))
|
|
|
|
|
2022-06-13 17:43:54 +00:00
|
|
|
def test_practical(self):
|
|
|
|
snap = "/snap/subiquity/1234"
|
|
|
|
env = {
|
|
|
|
"TERM": "linux",
|
2023-03-30 22:34:12 +00:00
|
|
|
"LD_LIBRARY_PATH": "/var/lib/snapd/lib/gl",
|
2022-06-13 17:43:54 +00:00
|
|
|
"PYTHONIOENCODING_ORIG": "",
|
|
|
|
"PYTHONIOENCODING": "utf-8",
|
|
|
|
"SUBIQUITY_ROOT_ORIG": "",
|
|
|
|
"SUBIQUITY_ROOT": snap,
|
|
|
|
"PYTHON_ORIG": "",
|
2023-03-03 13:34:38 +00:00
|
|
|
"PYTHON": f"{snap}/usr/bin/python3.10",
|
2022-06-13 17:43:54 +00:00
|
|
|
"PYTHONPATH_ORIG": "",
|
|
|
|
"PYTHONPATH": f"{snap}/stuff/things",
|
|
|
|
"PY3OR2_PYTHON_ORIG": "",
|
2023-03-03 13:34:38 +00:00
|
|
|
"PY3OR2_PYTHON": f"{snap}/usr/bin/python3.10",
|
2022-06-13 17:43:54 +00:00
|
|
|
"PATH_ORIG": "/usr/bin:/bin",
|
|
|
|
"PATH": "/usr/bin:/bin:/snap/bin",
|
|
|
|
}
|
|
|
|
expected = {
|
|
|
|
"TERM": "linux",
|
|
|
|
"PATH": "/usr/bin:/bin",
|
|
|
|
}
|
|
|
|
self.assertEqual(expected, orig_environ(env))
|
2023-08-16 21:30:40 +00:00
|
|
|
|
|
|
|
|
|
|
|
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)
|