[utils] Introduce expand_path
authorSergey M․ <dstftw@gmail.com>
Sat, 25 Mar 2017 19:30:10 +0000 (02:30 +0700)
committerSergey M․ <dstftw@gmail.com>
Sat, 25 Mar 2017 19:30:10 +0000 (02:30 +0700)
test/test_utils.py
youtube_dl/utils.py

index 173c495146c4fca68301465300b54a29c0d5bfd8..8c50b46e8283ee40522ca623cc77c967b33b6ac6 100644 (file)
@@ -56,6 +56,7 @@ from youtube_dl.utils import (
     read_batch_urls,
     sanitize_filename,
     sanitize_path,
+    expand_path,
     prepend_extension,
     replace_extension,
     remove_start,
@@ -95,6 +96,8 @@ from youtube_dl.utils import (
 from youtube_dl.compat import (
     compat_chr,
     compat_etree_fromstring,
+    compat_getenv,
+    compat_setenv,
     compat_urlparse,
     compat_parse_qs,
 )
@@ -214,6 +217,13 @@ class TestUtil(unittest.TestCase):
         self.assertEqual(sanitize_path('./abc'), 'abc')
         self.assertEqual(sanitize_path('./../abc'), '..\\abc')
 
+    def test_expand_path(self):
+        compat_setenv('YOUTUBE-DL-EXPATH-PATH', 'expanded')
+        self.assertEqual(expand_path('%YOUTUBE-DL-EXPATH-PATH%'), 'expanded')
+        self.assertEqual(expand_path('%HOMEPATH%'), compat_getenv('HOMEPATH'))
+        self.assertEqual(expand_path('~'), compat_getenv('HOME'))
+        self.assertEqual(expand_path('~/%YOUTUBE-DL-EXPATH-PATH%'), '%s/expanded' % compat_getenv('HOME'))
+
     def test_prepend_extension(self):
         self.assertEqual(prepend_extension('abc.ext', 'temp'), 'abc.temp.ext')
         self.assertEqual(prepend_extension('abc.ext', 'temp', 'ext'), 'abc.temp.ext')
index d293c74982f2a9f5797f101a7658536c7a800d00..2340bc306b69652d43246472e7fd3f5e819e2af2 100644 (file)
@@ -39,6 +39,7 @@ from .compat import (
     compat_basestring,
     compat_chr,
     compat_etree_fromstring,
+    compat_expanduser,
     compat_html_entities,
     compat_html_entities_html5,
     compat_http_client,
@@ -539,6 +540,11 @@ def sanitized_Request(url, *args, **kwargs):
     return compat_urllib_request.Request(sanitize_url(url), *args, **kwargs)
 
 
+def expand_path(s):
+    """Expand shell variables and ~"""
+    return os.path.expandvars(compat_expanduser(s))
+
+
 def orderedSet(iterable):
     """ Remove all duplicates from the input iterable """
     res = []