diff options
| -rw-r--r-- | test/test_utils.py | 17 | ||||
| -rw-r--r-- | youtube_dl/utils.py | 4 | 
2 files changed, 19 insertions, 2 deletions
diff --git a/test/test_utils.py b/test/test_utils.py index acd994bd7..ca6d832a4 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -33,11 +33,13 @@ from youtube_dl.utils import (      ExtractorError,      find_xpath_attr,      fix_xml_ampersands, +    float_or_none,      get_element_by_class,      get_element_by_attribute,      get_elements_by_class,      get_elements_by_attribute,      InAdvancePagedList, +    int_or_none,      intlist_to_bytes,      is_html,      js_to_json, @@ -468,6 +470,21 @@ class TestUtil(unittest.TestCase):              shell_quote(args),              """ffmpeg -i 'ñ€ß'"'"'.mp4'""" if compat_os_name != 'nt' else '''ffmpeg -i "ñ€ß'.mp4"''') +    def test_float_or_none(self): +        self.assertEqual(float_or_none('42.42'), 42.42) +        self.assertEqual(float_or_none('42'), 42.0) +        self.assertEqual(float_or_none(''), None) +        self.assertEqual(float_or_none(None), None) +        self.assertEqual(float_or_none([]), None) +        self.assertEqual(float_or_none(set()), None) + +    def test_int_or_none(self): +        self.assertEqual(int_or_none('42'), 42) +        self.assertEqual(int_or_none(''), None) +        self.assertEqual(int_or_none(None), None) +        self.assertEqual(int_or_none([]), None) +        self.assertEqual(int_or_none(set()), None) +      def test_str_to_int(self):          self.assertEqual(str_to_int('123,456'), 123456)          self.assertEqual(str_to_int('123.456'), 123456) diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index f2726a579..71713f63a 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -1922,7 +1922,7 @@ def int_or_none(v, scale=1, default=None, get_attr=None, invscale=1):          return default      try:          return int(v) * invscale // scale -    except ValueError: +    except (ValueError, TypeError):          return default @@ -1943,7 +1943,7 @@ def float_or_none(v, scale=1, invscale=1, default=None):          return default      try:          return float(v) * invscale / scale -    except ValueError: +    except (ValueError, TypeError):          return default  | 
