Commit 910b1c39 authored by Zachary Ware's avatar Zachary Ware

Merge heads

parents 29f8cb64 822963ed
import unittest import unittest
from test import support
import builtins import builtins
import io
import os import os
import uuid import uuid
...@@ -356,6 +358,25 @@ class TestUUID(unittest.TestCase): ...@@ -356,6 +358,25 @@ class TestUUID(unittest.TestCase):
self.assertEqual(node1, node2) self.assertEqual(node1, node2)
def test_find_mac(self):
data = '''\
fake hwaddr
cscotun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
eth0 Link encap:Ethernet HWaddr 12:34:56:78:90:ab
'''
def mock_popen(cmd):
return io.StringIO(data)
with support.swap_attr(os, 'popen', mock_popen):
mac = uuid._find_mac(
command='ifconfig',
args='',
hw_identifiers=['hwaddr'],
get_index=lambda x: x + 1,
)
self.assertEqual(mac, 0x1234567890ab)
@unittest.skipUnless(importable('ctypes'), 'requires ctypes') @unittest.skipUnless(importable('ctypes'), 'requires ctypes')
def test_uuid1(self): def test_uuid1(self):
equal = self.assertEqual equal = self.assertEqual
......
...@@ -327,8 +327,16 @@ def _find_mac(command, args, hw_identifiers, get_index): ...@@ -327,8 +327,16 @@ def _find_mac(command, args, hw_identifiers, get_index):
words = line.lower().split() words = line.lower().split()
for i in range(len(words)): for i in range(len(words)):
if words[i] in hw_identifiers: if words[i] in hw_identifiers:
return int( try:
words[get_index(i)].replace(':', ''), 16) return int(
words[get_index(i)].replace(':', ''), 16)
except (ValueError, IndexError):
# Virtual interfaces, such as those provided by
# VPNs, do not have a colon-delimited MAC address
# as expected, but a 16-byte HWAddr separated by
# dashes. These should be ignored in favor of a
# real MAC address
pass
except OSError: except OSError:
continue continue
return None return None
......
...@@ -407,6 +407,7 @@ John Fouhy ...@@ -407,6 +407,7 @@ John Fouhy
Andrew Francis Andrew Francis
Stefan Franke Stefan Franke
Martin Franklin Martin Franklin
Kent Frazier
Bruce Frederiksen Bruce Frederiksen
Robin Friedrich Robin Friedrich
Bradley Froehle Bradley Froehle
......
...@@ -16,6 +16,9 @@ Core and Builtins ...@@ -16,6 +16,9 @@ Core and Builtins
Library Library
------- -------
- Issue #11508: Fixed uuid.getnode() and uuid.uuid1() on environment with
virtual interface. Original patch by Kent Frazier.
- Issue #11489: JSON decoder now accepts lone surrogates. - Issue #11489: JSON decoder now accepts lone surrogates.
- Issue #19545: Avoid chained exceptions while passing stray % to - Issue #19545: Avoid chained exceptions while passing stray % to
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment