[modules/publicip] handle missing public ip more gracefully
If location does not throw, but reports an empty public IP, return "n/a". Since this caused a bug, also add a test for it. fixes #853
This commit is contained in:
parent
b1f49f6a1e
commit
3aadab5628
2 changed files with 11 additions and 2 deletions
|
@ -16,13 +16,13 @@ class Module(core.module.Module):
|
||||||
self.__ip = ""
|
self.__ip = ""
|
||||||
|
|
||||||
def public_ip(self, widget):
|
def public_ip(self, widget):
|
||||||
return self.__ip
|
return self.__ip or "n/a"
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
try:
|
try:
|
||||||
self.__ip = util.location.public_ip()
|
self.__ip = util.location.public_ip()
|
||||||
except Exception:
|
except Exception:
|
||||||
self.__ip = "n/a"
|
self.__ip = None
|
||||||
|
|
||||||
|
|
||||||
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
||||||
|
|
|
@ -26,6 +26,15 @@ class PublicIPTest(TestCase):
|
||||||
|
|
||||||
assert widget(module).full_text() == '5.12.220.2'
|
assert widget(module).full_text() == '5.12.220.2'
|
||||||
|
|
||||||
|
@mock.patch('util.location.public_ip')
|
||||||
|
def test_public_ip(self, public_ip_mock):
|
||||||
|
public_ip_mock.return_value = None
|
||||||
|
|
||||||
|
module = build_module()
|
||||||
|
module.update()
|
||||||
|
|
||||||
|
assert widget(module).full_text() == 'n/a'
|
||||||
|
|
||||||
@mock.patch('util.location.public_ip')
|
@mock.patch('util.location.public_ip')
|
||||||
def test_public_ip_with_exception(self, public_ip_mock):
|
def test_public_ip_with_exception(self, public_ip_mock):
|
||||||
public_ip_mock.side_effect = Exception
|
public_ip_mock.side_effect = Exception
|
||||||
|
|
Loading…
Reference in a new issue