aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_uuid.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_uuid.py')
-rwxr-xr-xLib/test/test_uuid.py61
1 files changed, 59 insertions, 2 deletions
diff --git a/Lib/test/test_uuid.py b/Lib/test/test_uuid.py
index 958be5408ce..0e1a723ce3a 100755
--- a/Lib/test/test_uuid.py
+++ b/Lib/test/test_uuid.py
@@ -14,6 +14,7 @@ from unittest import mock
from test import support
from test.support import import_helper
+from test.support.script_helper import assert_python_ok
py_uuid = import_helper.import_fresh_module('uuid', blocked=['_uuid'])
c_uuid = import_helper.import_fresh_module('uuid', fresh=['_uuid'])
@@ -1139,6 +1140,23 @@ class BaseTestUUID:
weak = weakref.ref(strong)
self.assertIs(strong, weak())
+
+class CommandLineTestCases:
+ uuid = None # to be defined in subclasses
+
+ def do_test_standalone_uuid(self, version):
+ stdout = io.StringIO()
+ with contextlib.redirect_stdout(stdout):
+ self.uuid.main()
+ output = stdout.getvalue().strip()
+ u = self.uuid.UUID(output)
+ self.assertEqual(output, str(u))
+ self.assertEqual(u.version, version)
+
+ @mock.patch.object(sys, "argv", ["", "-u", "uuid1"])
+ def test_cli_uuid1(self):
+ self.do_test_standalone_uuid(1)
+
@mock.patch.object(sys, "argv", ["", "-u", "uuid3", "-n", "@dns"])
@mock.patch('sys.stderr', new_callable=io.StringIO)
def test_cli_namespace_required_for_uuid3(self, mock_err):
@@ -1213,14 +1231,53 @@ class BaseTestUUID:
self.assertEqual(output, str(uuid_output))
self.assertEqual(uuid_output.version, 5)
+ @mock.patch.object(sys, "argv", ["", "-u", "uuid6"])
+ def test_cli_uuid6(self):
+ self.do_test_standalone_uuid(6)
+
+ @mock.patch.object(sys, "argv", ["", "-u", "uuid7"])
+ def test_cli_uuid7(self):
+ self.do_test_standalone_uuid(7)
+
+ @mock.patch.object(sys, "argv", ["", "-u", "uuid8"])
+ def test_cli_uuid8(self):
+ self.do_test_standalone_uuid(8)
-class TestUUIDWithoutExtModule(BaseTestUUID, unittest.TestCase):
+
+class TestUUIDWithoutExtModule(CommandLineTestCases, BaseTestUUID, unittest.TestCase):
uuid = py_uuid
+
@unittest.skipUnless(c_uuid, 'requires the C _uuid module')
-class TestUUIDWithExtModule(BaseTestUUID, unittest.TestCase):
+class TestUUIDWithExtModule(CommandLineTestCases, BaseTestUUID, unittest.TestCase):
uuid = c_uuid
+ def check_has_stable_libuuid_extractable_node(self):
+ if not self.uuid._has_stable_extractable_node:
+ self.skipTest("libuuid cannot deduce MAC address")
+
+ @unittest.skipUnless(os.name == 'posix', 'POSIX only')
+ def test_unix_getnode_from_libuuid(self):
+ self.check_has_stable_libuuid_extractable_node()
+ script = 'import uuid; print(uuid._unix_getnode())'
+ _, n_a, _ = assert_python_ok('-c', script)
+ _, n_b, _ = assert_python_ok('-c', script)
+ n_a, n_b = n_a.decode().strip(), n_b.decode().strip()
+ self.assertTrue(n_a.isdigit())
+ self.assertTrue(n_b.isdigit())
+ self.assertEqual(n_a, n_b)
+
+ @unittest.skipUnless(os.name == 'nt', 'Windows only')
+ def test_windows_getnode_from_libuuid(self):
+ self.check_has_stable_libuuid_extractable_node()
+ script = 'import uuid; print(uuid._windll_getnode())'
+ _, n_a, _ = assert_python_ok('-c', script)
+ _, n_b, _ = assert_python_ok('-c', script)
+ n_a, n_b = n_a.decode().strip(), n_b.decode().strip()
+ self.assertTrue(n_a.isdigit())
+ self.assertTrue(n_b.isdigit())
+ self.assertEqual(n_a, n_b)
+
class BaseTestInternals:
_uuid = py_uuid