Barry A. Warsaw <ba...@python.org> added the comment: On Dec 6, 2017, at 02:06, Xavier de Gaye <rep...@bugs.python.org> wrote: > > Whatever the change made to fix this issue, it is not possible to add a test > case for this change.
Even with say, exception raising mocks for the getters? > So following the suggestion made by Barry in PR 4696, we can add (in another > issue) a new keyword parameter to getnode() named 'methods' whose value may > be None (the default, meaning try all the known methods) or a tuple > containing a subset of the following methods ('unix', 'ifconfig', 'ip', > 'arp', 'lanscan', 'netstat', 'random') that would raise an exception if the > value cannot be obtained using one of the requested method tried in the > requested order. This would also improve the documentation on the methods > getnode() is using. Then if we decide to make the change for 'ip link' in the > current issue, one can add a test case that would first test for the > avaibility of the ip command and if the command exists would fail if > getnode(methods=('ip',)) raises an exception. I am thinking about this slightly differently. What if getnode() accepted a `handler` argument and the code was changed to something like this: 1 file changed, 4 insertions(+), 2 deletions(-) Lib/uuid.py | 6 ++++-- modified Lib/uuid.py @@ -656,7 +656,7 @@ def _random_getnode(): _node = None -def getnode(): +def getnode(handler=None): """Get the hardware address as a 48-bit positive integer. The first time this runs, it may launch a separate program, which could @@ -677,7 +677,9 @@ def getnode(): for getter in getters + [_random_getnode]: try: _node = getter() - except: + except Exception as error: + if handler is not None: + handler(getter, error) continue if _node is not None: return _node `handler` could log some diagnostics, reraise the exception, raise StopIteration, etc. Then we could use that in the test suite too, because we could mock a getter to raise an exception and then pass in a handler that verified the exception was raised with the expected getter. (Maybe we spell `handler` as `error_handler`.) ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue32199> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com