Merge branch 'master' of https://github.com/rg3/youtube-dl
[youtube-dl] / test / test_utils.py
index ceefabefc83151d8590e1cf355b14d4d3567a0e7..eeaaa7fad7a47d9cc376a73368d65c25d31841b0 100644 (file)
@@ -1,3 +1,5 @@
+#!/usr/bin/env python
+
 # Various small unit tests
 
 import sys
@@ -13,11 +15,12 @@ from youtube_dl.utils import sanitize_filename
 from youtube_dl.utils import unescapeHTML
 from youtube_dl.utils import orderedSet
 
-if sys.version_info < (3,0):
+if sys.version_info < (3, 0):
     _compat_str = lambda b: b.decode('unicode-escape')
 else:
     _compat_str = lambda s: s
 
+
 class TestUtil(unittest.TestCase):
     def test_timeconvert(self):
         self.assertTrue(timeconvert('') is None)
@@ -62,11 +65,11 @@ class TestUtil(unittest.TestCase):
         self.assertEqual('yes_no', sanitize_filename('yes? no', restricted=True))
         self.assertEqual('this_-_that', sanitize_filename('this: that', restricted=True))
 
-        tests =_compat_str('a\xe4b\u4e2d\u56fd\u7684c')
+        tests = _compat_str('a\xe4b\u4e2d\u56fd\u7684c')
         self.assertEqual(sanitize_filename(tests, restricted=True), 'a_b_c')
-        self.assertTrue(sanitize_filename(_compat_str('\xf6'), restricted=True) != '') # No empty filename
+        self.assertTrue(sanitize_filename(_compat_str('\xf6'), restricted=True) != '')  # No empty filename
 
-        forbidden = '"\0\\/&!: \'\t\n'
+        forbidden = '"\0\\/&!: \'\t\n()[]{}$;`^,#'
         for fc in forbidden:
             for fbc in forbidden:
                 self.assertTrue(fbc not in sanitize_filename(fc, restricted=True))
@@ -78,12 +81,17 @@ class TestUtil(unittest.TestCase):
         self.assertTrue(sanitize_filename('-', restricted=True) != '')
         self.assertTrue(sanitize_filename(':', restricted=True) != '')
 
+    def test_sanitize_ids(self):
+        self.assertEqual(sanitize_filename('_n_cd26wFpw', is_id=True), '_n_cd26wFpw')
+        self.assertEqual(sanitize_filename('_BD_eEpuzXw', is_id=True), '_BD_eEpuzXw')
+        self.assertEqual(sanitize_filename('N0Y__7-UOdI', is_id=True), 'N0Y__7-UOdI')
+
     def test_ordered_set(self):
-        self.assertEqual(orderedSet([1,1,2,3,4,4,5,6,7,3,5]), [1,2,3,4,5,6,7])
+        self.assertEqual(orderedSet([1, 1, 2, 3, 4, 4, 5, 6, 7, 3, 5]), [1, 2, 3, 4, 5, 6, 7])
         self.assertEqual(orderedSet([]), [])
         self.assertEqual(orderedSet([1]), [1])
         #keep the list ordered
-        self.assertEqual(orderedSet([135,1,1,1]), [135,1])
+        self.assertEqual(orderedSet([135, 1, 1, 1]), [135, 1])
 
     def test_unescape_html(self):
         self.assertEqual(unescapeHTML(_compat_str('%20;')), _compat_str('%20;'))