[utils] Add replace_extension
authorSergey M․ <dstftw@gmail.com>
Sat, 2 May 2015 17:23:06 +0000 (23:23 +0600)
committerSergey M․ <dstftw@gmail.com>
Sat, 2 May 2015 17:23:06 +0000 (23:23 +0600)
test/test_utils.py
youtube_dl/utils.py

index a9464f2e4dc31823e8af45d50f2511e204b6d64e..6906a65c224ecd28800c1a2fd5131cf4bda48c77 100644 (file)
@@ -42,6 +42,7 @@ from youtube_dl.utils import (
     sanitize_path,
     sanitize_url_path_consecutive_slashes,
     prepend_extension,
+    replace_extension,
     shell_quote,
     smuggle_url,
     str_to_int,
@@ -202,6 +203,14 @@ class TestUtil(unittest.TestCase):
         self.assertEqual(prepend_extension('.abc', 'temp'), '.abc.temp')
         self.assertEqual(prepend_extension('.abc.ext', 'temp'), '.abc.temp.ext')
 
+    def test_replace_extension(self):
+        self.assertEqual(replace_extension('abc.ext', 'temp'), 'abc.temp')
+        self.assertEqual(replace_extension('abc.ext', 'temp', 'ext'), 'abc.temp')
+        self.assertEqual(replace_extension('abc.unexpected_ext', 'temp', 'ext'), 'abc.unexpected_ext.temp')
+        self.assertEqual(replace_extension('abc', 'temp'), 'abc.temp')
+        self.assertEqual(replace_extension('.abc', 'temp'), '.abc.temp')
+        self.assertEqual(replace_extension('.abc.ext', 'temp'), '.abc.temp')
+
     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([]), [])
index b3abfbc11b8ac5f9d036ad04800c820337252da8..a5a5c317e0507e9ecb49f8ecae67f196877184d6 100644 (file)
@@ -1357,6 +1357,13 @@ def prepend_extension(filename, ext, expected_real_ext=None):
         else '{0}.{1}'.format(filename, ext))
 
 
+def replace_extension(filename, ext, expected_real_ext=None):
+    name, real_ext = os.path.splitext(filename)
+    return '{0}.{1}'.format(
+        name if not expected_real_ext or real_ext[1:] == expected_real_ext else filename,
+        ext)
+
+
 def check_executable(exe, args=[]):
     """ Checks if the given binary is installed somewhere in PATH, and returns its name.
     args can be a list of arguments for a short output (like -version) """