diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/test_compat.py | 17 | ||||
| -rw-r--r-- | test/test_jsinterp.py | 3 | ||||
| -rw-r--r-- | test/test_subtitles.py | 21 | ||||
| -rw-r--r-- | test/test_utils.py | 31 | 
4 files changed, 66 insertions, 6 deletions
| diff --git a/test/test_compat.py b/test/test_compat.py index 4ee0dc99d..b6bfad05e 100644 --- a/test/test_compat.py +++ b/test/test_compat.py @@ -13,8 +13,10 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))  from youtube_dl.utils import get_filesystem_encoding  from youtube_dl.compat import (      compat_getenv, +    compat_etree_fromstring,      compat_expanduser,      compat_shlex_split, +    compat_str,      compat_urllib_parse_unquote,      compat_urllib_parse_unquote_plus,  ) @@ -71,5 +73,20 @@ class TestCompat(unittest.TestCase):      def test_compat_shlex_split(self):          self.assertEqual(compat_shlex_split('-option "one two"'), ['-option', 'one two']) +    def test_compat_etree_fromstring(self): +        xml = ''' +            <root foo="bar" spam="中文"> +                <normal>foo</normal> +                <chinese>中文</chinese> +                <foo><bar>spam</bar></foo> +            </root> +        ''' +        doc = compat_etree_fromstring(xml.encode('utf-8')) +        self.assertTrue(isinstance(doc.attrib['foo'], compat_str)) +        self.assertTrue(isinstance(doc.attrib['spam'], compat_str)) +        self.assertTrue(isinstance(doc.find('normal').text, compat_str)) +        self.assertTrue(isinstance(doc.find('chinese').text, compat_str)) +        self.assertTrue(isinstance(doc.find('foo/bar').text, compat_str)) +  if __name__ == '__main__':      unittest.main() diff --git a/test/test_jsinterp.py b/test/test_jsinterp.py index fc73e5dc2..63c350b8f 100644 --- a/test/test_jsinterp.py +++ b/test/test_jsinterp.py @@ -19,6 +19,9 @@ class TestJSInterpreter(unittest.TestCase):          jsi = JSInterpreter('function x3(){return 42;}')          self.assertEqual(jsi.call_function('x3'), 42) +        jsi = JSInterpreter('var x5 = function(){return 42;}') +        self.assertEqual(jsi.call_function('x5'), 42) +      def test_calc(self):          jsi = JSInterpreter('function x4(a){return 2*a+1;}')          self.assertEqual(jsi.call_function('x4', 3), 7) diff --git a/test/test_subtitles.py b/test/test_subtitles.py index 0343967d9..75f0ea75f 100644 --- a/test/test_subtitles.py +++ b/test/test_subtitles.py @@ -28,6 +28,7 @@ from youtube_dl.extractor import (      ThePlatformFeedIE,      RTVEALaCartaIE,      FunnyOrDieIE, +    DemocracynowIE,  ) @@ -346,5 +347,25 @@ class TestFunnyOrDieSubtitles(BaseTestSubtitles):          self.assertEqual(md5(subtitles['en']), 'c5593c193eacd353596c11c2d4f9ecc4') +class TestDemocracynowSubtitles(BaseTestSubtitles): +    url = 'http://www.democracynow.org/shows/2015/7/3' +    IE = DemocracynowIE + +    def test_allsubtitles(self): +        self.DL.params['writesubtitles'] = True +        self.DL.params['allsubtitles'] = True +        subtitles = self.getSubtitles() +        self.assertEqual(set(subtitles.keys()), set(['en'])) +        self.assertEqual(md5(subtitles['en']), 'acaca989e24a9e45a6719c9b3d60815c') + +    def test_subtitles_in_page(self): +        self.url = 'http://www.democracynow.org/2015/7/3/this_flag_comes_down_today_bree' +        self.DL.params['writesubtitles'] = True +        self.DL.params['allsubtitles'] = True +        subtitles = self.getSubtitles() +        self.assertEqual(set(subtitles.keys()), set(['en'])) +        self.assertEqual(md5(subtitles['en']), 'acaca989e24a9e45a6719c9b3d60815c') + +  if __name__ == '__main__':      unittest.main() diff --git a/test/test_utils.py b/test/test_utils.py index 0c34f0e55..501355c74 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -21,6 +21,7 @@ from youtube_dl.utils import (      clean_html,      DateRange,      detect_exe_version, +    determine_ext,      encodeFilename,      escape_rfc3986,      escape_url, @@ -68,6 +69,9 @@ from youtube_dl.utils import (      cli_valueless_option,      cli_bool_option,  ) +from youtube_dl.compat import ( +    compat_etree_fromstring, +)  class TestUtil(unittest.TestCase): @@ -207,8 +211,8 @@ class TestUtil(unittest.TestCase):          self.assertEqual(unescapeHTML('%20;'), '%20;')          self.assertEqual(unescapeHTML('/'), '/')          self.assertEqual(unescapeHTML('/'), '/') -        self.assertEqual( -            unescapeHTML('é'), 'é') +        self.assertEqual(unescapeHTML('é'), 'é') +        self.assertEqual(unescapeHTML('�'), '�')      def test_daterange(self):          _20century = DateRange("19000101", "20000101") @@ -233,6 +237,14 @@ class TestUtil(unittest.TestCase):              unified_strdate('2/2/2015 6:47:40 PM', day_first=False),              '20150202')          self.assertEqual(unified_strdate('25-09-2014'), '20140925') +        self.assertEqual(unified_strdate('UNKNOWN DATE FORMAT'), None) + +    def test_determine_ext(self): +        self.assertEqual(determine_ext('http://example.com/foo/bar.mp4/?download'), 'mp4') +        self.assertEqual(determine_ext('http://example.com/foo/bar/?download', None), None) +        self.assertEqual(determine_ext('http://example.com/foo/bar.nonext/?download', None), None) +        self.assertEqual(determine_ext('http://example.com/foo/bar/mp4?download', None), None) +        self.assertEqual(determine_ext('http://example.com/foo/bar.m3u8//?download'), 'm3u8')      def test_find_xpath_attr(self):          testxml = '''<root> @@ -242,7 +254,7 @@ class TestUtil(unittest.TestCase):              <node x="b" y="d" />              <node x="" />          </root>''' -        doc = xml.etree.ElementTree.fromstring(testxml) +        doc = compat_etree_fromstring(testxml)          self.assertEqual(find_xpath_attr(doc, './/fourohfour', 'n'), None)          self.assertEqual(find_xpath_attr(doc, './/fourohfour', 'n', 'v'), None) @@ -263,7 +275,7 @@ class TestUtil(unittest.TestCase):                  <url>http://server.com/download.mp3</url>              </media:song>          </root>''' -        doc = xml.etree.ElementTree.fromstring(testxml) +        doc = compat_etree_fromstring(testxml)          find = lambda p: doc.find(xpath_with_ns(p, {'media': 'http://example.com/'}))          self.assertTrue(find('media:song') is not None)          self.assertEqual(find('media:song/media:author').text, 'The Author') @@ -275,9 +287,16 @@ class TestUtil(unittest.TestCase):          p = xml.etree.ElementTree.SubElement(div, 'p')          p.text = 'Foo'          self.assertEqual(xpath_element(doc, 'div/p'), p) +        self.assertEqual(xpath_element(doc, ['div/p']), p) +        self.assertEqual(xpath_element(doc, ['div/bar', 'div/p']), p)          self.assertEqual(xpath_element(doc, 'div/bar', default='default'), 'default') +        self.assertEqual(xpath_element(doc, ['div/bar'], default='default'), 'default')          self.assertTrue(xpath_element(doc, 'div/bar') is None) +        self.assertTrue(xpath_element(doc, ['div/bar']) is None) +        self.assertTrue(xpath_element(doc, ['div/bar'], 'div/baz') is None)          self.assertRaises(ExtractorError, xpath_element, doc, 'div/bar', fatal=True) +        self.assertRaises(ExtractorError, xpath_element, doc, ['div/bar'], fatal=True) +        self.assertRaises(ExtractorError, xpath_element, doc, ['div/bar', 'div/baz'], fatal=True)      def test_xpath_text(self):          testxml = '''<root> @@ -285,7 +304,7 @@ class TestUtil(unittest.TestCase):                  <p>Foo</p>              </div>          </root>''' -        doc = xml.etree.ElementTree.fromstring(testxml) +        doc = compat_etree_fromstring(testxml)          self.assertEqual(xpath_text(doc, 'div/p'), 'Foo')          self.assertEqual(xpath_text(doc, 'div/bar', default='default'), 'default')          self.assertTrue(xpath_text(doc, 'div/bar') is None) @@ -297,7 +316,7 @@ class TestUtil(unittest.TestCase):                  <p x="a">Foo</p>              </div>          </root>''' -        doc = xml.etree.ElementTree.fromstring(testxml) +        doc = compat_etree_fromstring(testxml)          self.assertEqual(xpath_attr(doc, 'div/p', 'x'), 'a')          self.assertEqual(xpath_attr(doc, 'div/bar', 'x'), None)          self.assertEqual(xpath_attr(doc, 'div/p', 'y'), None) | 
