test_execution.py (1806B)
1 #!/usr/bin/env python 2 # coding: utf-8 3 4 from __future__ import unicode_literals 5 6 import unittest 7 8 import sys 9 import os 10 import subprocess 11 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 12 13 from youtube_dl.utils import encodeArgument 14 15 rootDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 16 17 18 try: 19 _DEV_NULL = subprocess.DEVNULL 20 except AttributeError: 21 _DEV_NULL = open(os.devnull, 'wb') 22 23 24 class TestExecution(unittest.TestCase): 25 def test_import(self): 26 subprocess.check_call([sys.executable, '-c', 'import youtube_dl'], cwd=rootDir) 27 28 def test_module_exec(self): 29 if sys.version_info >= (2, 7): # Python 2.6 doesn't support package execution 30 subprocess.check_call([sys.executable, '-m', 'youtube_dl', '--version'], cwd=rootDir, stdout=_DEV_NULL) 31 32 def test_main_exec(self): 33 subprocess.check_call([sys.executable, 'youtube_dl/__main__.py', '--version'], cwd=rootDir, stdout=_DEV_NULL) 34 35 def test_cmdline_umlauts(self): 36 p = subprocess.Popen( 37 [sys.executable, 'youtube_dl/__main__.py', encodeArgument('รค'), '--version'], 38 cwd=rootDir, stdout=_DEV_NULL, stderr=subprocess.PIPE) 39 _, stderr = p.communicate() 40 self.assertFalse(stderr) 41 42 def test_lazy_extractors(self): 43 try: 44 subprocess.check_call([sys.executable, 'devscripts/make_lazy_extractors.py', 'youtube_dl/extractor/lazy_extractors.py'], cwd=rootDir, stdout=_DEV_NULL) 45 subprocess.check_call([sys.executable, 'test/test_all_urls.py'], cwd=rootDir, stdout=_DEV_NULL) 46 finally: 47 try: 48 os.remove('youtube_dl/extractor/lazy_extractors.py') 49 except (IOError, OSError): 50 pass 51 52 53 if __name__ == '__main__': 54 unittest.main()