X-Git-Url: https://git.rapsys.eu/youtubedl/blobdiff_plain/28d5370e4a3ed87a622c07b81844b14420e5bcba..d1a5eac72c0b1116e8efbbf50766d8d00678f5c8:/test/test_utils.py?ds=sidebyside
diff --git a/test/test_utils.py b/test/test_utils.py
index c4b7136..bee355e 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -1,21 +1,35 @@
#!/usr/bin/env python
+# coding: utf-8
-# Various small unit tests
-
+# Allow direct execution
+import os
import sys
import unittest
+sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-# Allow direct execution
-import os
-sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
+
+# Various small unit tests
+import xml.etree.ElementTree
#from youtube_dl.utils import htmlentity_transform
-from youtube_dl.utils import timeconvert
-from youtube_dl.utils import sanitize_filename
-from youtube_dl.utils import unescapeHTML
-from youtube_dl.utils import orderedSet
-from youtube_dl.utils import DateRange
-from youtube_dl.utils import unified_strdate
+from youtube_dl.utils import (
+ DateRange,
+ encodeFilename,
+ find_xpath_attr,
+ get_meta_content,
+ orderedSet,
+ parse_duration,
+ sanitize_filename,
+ shell_quote,
+ smuggle_url,
+ str_to_int,
+ timeconvert,
+ unescapeHTML,
+ unified_strdate,
+ unsmuggle_url,
+ url_basename,
+ xpath_with_ns,
+)
if sys.version_info < (3, 0):
_compat_str = lambda b: b.decode('unicode-escape')
@@ -112,5 +126,79 @@ class TestUtil(unittest.TestCase):
self.assertEqual(unified_strdate('Dec 14, 2012'), '20121214')
self.assertEqual(unified_strdate('2012/10/11 01:56:38 +0000'), '20121011')
+ def test_find_xpath_attr(self):
+ testxml = u'''
+
+
+
+
+ '''
+ doc = xml.etree.ElementTree.fromstring(testxml)
+
+ self.assertEqual(find_xpath_attr(doc, './/fourohfour', 'n', 'v'), None)
+ self.assertEqual(find_xpath_attr(doc, './/node', 'x', 'a'), doc[1])
+ self.assertEqual(find_xpath_attr(doc, './/node', 'y', 'c'), doc[2])
+
+ def test_meta_parser(self):
+ testhtml = u'''
+
+
+
+
+ '''
+ get_meta = lambda name: get_meta_content(name, testhtml)
+ self.assertEqual(get_meta('description'), u'foo & bar')
+ self.assertEqual(get_meta('author'), 'Plato')
+
+ def test_xpath_with_ns(self):
+ testxml = u'''
+
+ The Author
+ http://server.com/download.mp3
+
+ '''
+ doc = xml.etree.ElementTree.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, u'The Author')
+ self.assertEqual(find('media:song/url').text, u'http://server.com/download.mp3')
+
+ def test_smuggle_url(self):
+ data = {u"ö": u"ö", u"abc": [3]}
+ url = 'https://foo.bar/baz?x=y#a'
+ smug_url = smuggle_url(url, data)
+ unsmug_url, unsmug_data = unsmuggle_url(smug_url)
+ self.assertEqual(url, unsmug_url)
+ self.assertEqual(data, unsmug_data)
+
+ res_url, res_data = unsmuggle_url(url)
+ self.assertEqual(res_url, url)
+ self.assertEqual(res_data, None)
+
+ def test_shell_quote(self):
+ args = ['ffmpeg', '-i', encodeFilename(u'ñâ¬Ã\'.mp4')]
+ self.assertEqual(shell_quote(args), u"""ffmpeg -i 'ñâ¬Ã'"'"'.mp4'""")
+
+ def test_str_to_int(self):
+ self.assertEqual(str_to_int('123,456'), 123456)
+ self.assertEqual(str_to_int('123.456'), 123456)
+
+ def test_url_basename(self):
+ self.assertEqual(url_basename(u'http://foo.de/'), u'')
+ self.assertEqual(url_basename(u'http://foo.de/bar/baz'), u'baz')
+ self.assertEqual(url_basename(u'http://foo.de/bar/baz?x=y'), u'baz')
+ self.assertEqual(url_basename(u'http://foo.de/bar/baz#x=y'), u'baz')
+ self.assertEqual(url_basename(u'http://foo.de/bar/baz/'), u'baz')
+ self.assertEqual(
+ url_basename(u'http://media.w3.org/2010/05/sintel/trailer.mp4'),
+ u'trailer.mp4')
+
+ def test_parse_duration(self):
+ self.assertEqual(parse_duration(None), None)
+ self.assertEqual(parse_duration('1'), 1)
+ self.assertEqual(parse_duration('1337:12'), 80232)
+ self.assertEqual(parse_duration('9:12:43'), 33163)
+ self.assertEqual(parse_duration('x:y'), None)
+
if __name__ == '__main__':
unittest.main()