diff options
Diffstat (limited to 'test/test_utils.py')
| -rw-r--r-- | test/test_utils.py | 29 | 
1 files changed, 27 insertions, 2 deletions
| diff --git a/test/test_utils.py b/test/test_utils.py index f31559e71..e50f3764e 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -98,6 +98,7 @@ from youtube_dl.compat import (      compat_chr,      compat_etree_fromstring,      compat_getenv, +    compat_os_name,      compat_setenv,      compat_urlparse,      compat_parse_qs, @@ -278,6 +279,7 @@ class TestUtil(unittest.TestCase):          self.assertEqual(unescapeHTML('/'), '/')          self.assertEqual(unescapeHTML('é'), 'é')          self.assertEqual(unescapeHTML('�'), '�') +        self.assertEqual(unescapeHTML('&a"'), '&a"')          # HTML5 entities          self.assertEqual(unescapeHTML('.''), '.\'') @@ -340,6 +342,7 @@ class TestUtil(unittest.TestCase):          self.assertEqual(unified_timestamp('May 16, 2016 11:15 PM'), 1463440500)          self.assertEqual(unified_timestamp('Feb 7, 2016 at 6:35 pm'), 1454870100)          self.assertEqual(unified_timestamp('2017-03-30T17:52:41Q'), 1490896361) +        self.assertEqual(unified_timestamp('Sep 11, 2013 | 5:49 AM'), 1378878540)      def test_determine_ext(self):          self.assertEqual(determine_ext('http://example.com/foo/bar.mp4/?download'), 'mp4') @@ -447,7 +450,9 @@ class TestUtil(unittest.TestCase):      def test_shell_quote(self):          args = ['ffmpeg', '-i', encodeFilename('ñ€ß\'.mp4')] -        self.assertEqual(shell_quote(args), """ffmpeg -i 'ñ€ß'"'"'.mp4'""") +        self.assertEqual( +            shell_quote(args), +            """ffmpeg -i 'ñ€ß'"'"'.mp4'""" if compat_os_name != 'nt' else '''ffmpeg -i "ñ€ß'.mp4"''')      def test_str_to_int(self):          self.assertEqual(str_to_int('123,456'), 123456) @@ -678,6 +683,14 @@ class TestUtil(unittest.TestCase):          d = json.loads(stripped)          self.assertEqual(d, {'status': 'success'}) +        stripped = strip_jsonp('window.cb && window.cb({"status": "success"});') +        d = json.loads(stripped) +        self.assertEqual(d, {'status': 'success'}) + +        stripped = strip_jsonp('window.cb && cb({"status": "success"});') +        d = json.loads(stripped) +        self.assertEqual(d, {'status': 'success'}) +      def test_uppercase_escape(self):          self.assertEqual(uppercase_escape('aä'), 'aä')          self.assertEqual(uppercase_escape('\\U0001d550'), '𝕐') @@ -907,6 +920,8 @@ class TestUtil(unittest.TestCase):              supports_outside_bmp = False          if supports_outside_bmp:              self.assertEqual(extract_attributes('<e x="Smile 😀!">'), {'x': 'Smile \U0001f600!'}) +        # Malformed HTML should not break attributes extraction on older Python +        self.assertEqual(extract_attributes('<mal"formed/>'), {})      def test_clean_html(self):          self.assertEqual(clean_html('a:\nb'), 'a: b') @@ -921,7 +936,7 @@ class TestUtil(unittest.TestCase):      def test_args_to_str(self):          self.assertEqual(              args_to_str(['foo', 'ba/r', '-baz', '2 be', '']), -            'foo ba/r -baz \'2 be\' \'\'' +            'foo ba/r -baz \'2 be\' \'\'' if compat_os_name != 'nt' else 'foo ba/r -baz "2 be" ""'          )      def test_parse_filesize(self): @@ -1168,6 +1183,10 @@ part 3</font></u>              cli_bool_option(                  {'nocheckcertificate': False}, '--check-certificate', 'nocheckcertificate', 'false', 'true', '='),              ['--check-certificate=true']) +        self.assertEqual( +            cli_bool_option( +                {}, '--check-certificate', 'nocheckcertificate', 'false', 'true', '='), +            [])      def test_ohdave_rsa_encrypt(self):          N = 0xab86b6371b5318aaa1d3c9e612a9f1264f372323c8c0f19875b5fc3b3fd3afcc1e5bec527aa94bfa85bffc157e4245aebda05389a5357b75115ac94f074aefcd @@ -1217,6 +1236,12 @@ part 3</font></u>          self.assertEqual(get_element_by_attribute('class', 'foo', html), None)          self.assertEqual(get_element_by_attribute('class', 'no-such-foo', html), None) +        html = ''' +            <div itemprop="author" itemscope>foo</div> +        ''' + +        self.assertEqual(get_element_by_attribute('itemprop', 'author', html), 'foo') +      def test_get_elements_by_class(self):          html = '''              <span class="foo bar">nice</span><span class="foo bar">also nice</span> | 
