diff options
Diffstat (limited to 'test/test_execution.py')
-rw-r--r-- | test/test_execution.py | 59 |
1 files changed, 31 insertions, 28 deletions
diff --git a/test/test_execution.py b/test/test_execution.py index d9aa965..56a4b2e 100644 --- a/test/test_execution.py +++ b/test/test_execution.py @@ -1,53 +1,56 @@ #!/usr/bin/env python3 -# coding: utf-8 - -from __future__ import unicode_literals +# Allow direct execution +import os +import sys import unittest -import sys -import os -import subprocess sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) -from hypervideo_dl.utils import encodeArgument -rootDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +import contextlib +import subprocess +from hypervideo_dl.utils import Popen -try: - _DEV_NULL = subprocess.DEVNULL -except AttributeError: - _DEV_NULL = open(os.devnull, 'wb') +rootDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +LAZY_EXTRACTORS = 'hypervideo_dl/extractor/lazy_extractors.py' class TestExecution(unittest.TestCase): + def run_hypervideo_dl(self, exe=(sys.executable, 'hypervideo_dl/__main__.py'), opts=('--version', )): + stdout, stderr, returncode = Popen.run( + [*exe, '--ignore-config', *opts], cwd=rootDir, text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + print(stderr, file=sys.stderr) + self.assertEqual(returncode, 0) + return stdout.strip(), stderr.strip() + + def test_main_exec(self): + self.run_hypervideo_dl() + def test_import(self): - subprocess.check_call([sys.executable, '-c', 'import hypervideo_dl'], cwd=rootDir) + self.run_hypervideo_dl(exe=(sys.executable, '-c', 'import hypervideo_dl')) def test_module_exec(self): - if sys.version_info >= (2, 7): # Python 2.6 doesn't support package execution - subprocess.check_call([sys.executable, '-m', 'hypervideo_dl', '--version'], cwd=rootDir, stdout=_DEV_NULL) - - def test_main_exec(self): - subprocess.check_call([sys.executable, 'hypervideo_dl/__main__.py', '--version'], cwd=rootDir, stdout=_DEV_NULL) + self.run_hypervideo_dl(exe=(sys.executable, '-m', 'hypervideo_dl')) def test_cmdline_umlauts(self): - p = subprocess.Popen( - [sys.executable, 'hypervideo_dl/__main__.py', encodeArgument('ä'), '--version'], - cwd=rootDir, stdout=_DEV_NULL, stderr=subprocess.PIPE) - _, stderr = p.communicate() + _, stderr = self.run_hypervideo_dl(opts=('ä', '--version')) self.assertFalse(stderr) def test_lazy_extractors(self): try: - subprocess.check_call([sys.executable, 'devscripts/make_lazy_extractors.py', 'hypervideo_dl/extractor/lazy_extractors.py'], cwd=rootDir, stdout=_DEV_NULL) - subprocess.check_call([sys.executable, 'test/test_all_urls.py'], cwd=rootDir, stdout=_DEV_NULL) + subprocess.check_call([sys.executable, 'devscripts/make_lazy_extractors.py', LAZY_EXTRACTORS], + cwd=rootDir, stdout=subprocess.DEVNULL) + self.assertTrue(os.path.exists(LAZY_EXTRACTORS)) + + _, stderr = self.run_hypervideo_dl(opts=('-s', 'test:')) + self.assertFalse(stderr) + + subprocess.check_call([sys.executable, 'test/test_all_urls.py'], cwd=rootDir, stdout=subprocess.DEVNULL) finally: - try: - os.remove('hypervideo_dl/extractor/lazy_extractors.py') - except (IOError, OSError): - pass + with contextlib.suppress(OSError): + os.remove(LAZY_EXTRACTORS) if __name__ == '__main__': |