]> granicus.if.org Git - python/commitdiff
Fix a regression in uuid added in bpo-32107. (#4677)
authorSerhiy Storchaka <storchaka@gmail.com>
Mon, 4 Dec 2017 09:51:55 +0000 (11:51 +0200)
committerGitHub <noreply@github.com>
Mon, 4 Dec 2017 09:51:55 +0000 (11:51 +0200)
uuid.get_node() always must return a stable result.
Also added a test for non-reproducibility of _random_getnode().
Original patch by Xavier de Gaye.

Lib/test/test_uuid.py
Lib/uuid.py

index f113c551209c35dcad6e64cb3a24baf94b7a765c..f21bd6dfa15235667f4b5192be76441abfe8be43 100644 (file)
@@ -565,6 +565,9 @@ eth0      Link encap:Ethernet  HWaddr 12:34:56:78:90:ab
         self.assertTrue(node & (1 << 40), '%012x' % node)
         self.check_node(node)
 
+        node2 = self.uuid._random_getnode()
+        self.assertNotEqual(node2, node, '%012x' % node)
+
     @unittest.skipUnless(os.name == 'posix', 'requires Posix')
     def test_unix_getnode(self):
         if not importable('_uuid') and not importable('ctypes'):
index cb2bc092bdfcde38fffad8bea3899c20554d50eb..be06a6eff3f0153ff9c4f8614becca3a342254ba 100644 (file)
@@ -674,14 +674,14 @@ def getnode():
         getters = [_unix_getnode, _ifconfig_getnode, _ip_getnode,
                    _arp_getnode, _lanscan_getnode, _netstat_getnode]
 
-    for getter in getters:
+    for getter in getters + [_random_getnode]:
         try:
             _node = getter()
         except:
             continue
         if _node is not None:
             return _node
-    return _random_getnode()
+    assert False, '_random_getnode() returned None'
 
 
 _last_timestamp = None