From fa240ee05a4e2cae9407fa9ad395815bdafa89da Mon Sep 17 00:00:00 2001 From: hellysmile Date: Fri, 3 Nov 2017 12:32:22 +0200 Subject: [PATCH] Hotfix 0.1.8 --- README.rst | 3 ++ fake_useragent/utils.py | 6 ++- tests/assets/no_browser_versions.html | 63 +++++++++++++++++++++++++++ tests/test_utils.py | 20 ++++++++- tests/utils.py | 5 +++ 5 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 tests/assets/no_browser_versions.html diff --git a/README.rst b/README.rst index f1b2a59a..bdb8c150 100644 --- a/README.rst +++ b/README.rst @@ -191,6 +191,9 @@ Tests Changelog --------- +* 0.1.8 November 2, 2017 + - fix `useragentstring.com` `Can't connect to local MySQL server through socket` + * 0.1.7 April 2, 2017 - fix broken README.rst diff --git a/fake_useragent/utils.py b/fake_useragent/utils.py index 8f8c450e..e1a38f29 100644 --- a/fake_useragent/utils.py +++ b/fake_useragent/utils.py @@ -2,8 +2,8 @@ from __future__ import absolute_import, unicode_literals import contextlib -import io import inspect +import io import json import os import re @@ -139,6 +139,10 @@ def get_browser_versions(browser, verify_ssl=True): if len(browsers) == settings.BROWSERS_COUNT_LIMIT: break + if not browsers: + raise FakeUserAgentError( + 'No browsers version found for {browser}'.format(browser=browser)) + return browsers diff --git a/tests/assets/no_browser_versions.html b/tests/assets/no_browser_versions.html new file mode 100644 index 00000000..5e8c3b30 --- /dev/null +++ b/tests/assets/no_browser_versions.html @@ -0,0 +1,63 @@ + +Connection could not be established !!
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) + + +UserAgentString.com - List of chrome User Agent Strings + + + + + + + +

 User Agent String.Com 

+
 
+
+ + +
+ +Connection could not be established !!
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

User Agent Strings

+ + +
+ +
+
+
+
+
+© 2005 - 2011 +UserAgentString.com +
+Wordconstructor - Random Word Generator :: +707 Directory - SEO friendly directory +
+
+
+
+ + + + diff --git a/tests/test_utils.py b/tests/test_utils.py index 3e01dfd8..e1af9616 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -11,7 +11,7 @@ from fake_useragent import errors, settings, utils from fake_useragent.utils import urlopen_has_ssl_context -from tests.utils import _request, find_unused_port +from tests.utils import _request, find_unused_port, assets try: # Python 2 # pragma: no cover from urllib2 import Request @@ -127,6 +127,24 @@ def test_utils_get_browser_versions(): utils.get_browser_versions(browser) +def test_utils_get_browser_versions_no_browser_versions(): + browser_names = [browser[0] for browser in utils.get_browsers()] + + for browser in browser_names: + with mock.patch('fake_useragent.utils.urlopen') as mocked: + path = os.path.join(assets, 'no_browser_versions.html') + + with io.open(path, mode='rb') as fp: + m = mock.Mock() + m.read = fp.read + mocked.return_value = m + + with pytest.raises(errors.FakeUserAgentError) as ctx: + utils.get_browser_versions(browser) + + assert ctx.value.args[0].startswith('No browsers version') + + def test_utils_load(path): _load = utils.load diff --git a/tests/utils.py b/tests/utils.py index 264d796a..eb776bb2 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals +import os import socket try: # Python 2 # pragma: no cover @@ -11,6 +12,10 @@ _used_ports = set() +here = os.path.dirname(os.path.abspath(__file__)) +assets = os.path.join(here, 'assets') + + def find_unused_port(): while True: service = socket.socket()