From b13cab0b7ac2c66dcd7703d783457b7c8fbd1c39 Mon Sep 17 00:00:00 2001 From: marcwebbie Date: Fri, 27 Sep 2013 22:03:34 -0300 Subject: [PATCH] Added python2 test for writing json-info to stdout --- test/test_write_info_json.py | 39 +++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/test/test_write_info_json.py b/test/test_write_info_json.py index 84a885d61..1c4d94d03 100644 --- a/test/test_write_info_json.py +++ b/test/test_write_info_json.py @@ -13,16 +13,20 @@ import youtube_dl.YoutubeDL import youtube_dl.extractor from youtube_dl.utils import * -PARAMETERS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "parameters.json") +PARAMETERS_FILE = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "parameters.json") # General configuration (from __init__, not very elegant...) jar = compat_cookiejar.CookieJar() cookie_processor = compat_urllib_request.HTTPCookieProcessor(jar) proxy_handler = compat_urllib_request.ProxyHandler() -opener = compat_urllib_request.build_opener(proxy_handler, cookie_processor, YoutubeDLHandler()) +opener = compat_urllib_request.build_opener( + proxy_handler, cookie_processor, YoutubeDLHandler()) compat_urllib_request.install_opener(opener) + class YoutubeDL(youtube_dl.YoutubeDL): + def __init__(self, *args, **kwargs): super(YoutubeDL, self).__init__(*args, **kwargs) self.to_stderr = self.to_screen @@ -42,7 +46,9 @@ This is a test video for youtube-dl. For more information, contact phihag@phihag.de .''' + class TestInfoJSON(unittest.TestCase): + def setUp(self): # Clear old files self.tearDown() @@ -68,18 +74,31 @@ class TestInfoJSON(unittest.TestCase): self.assertEqual(descr, EXPECTED_DESCRIPTION) def test_info_json_with_stdout_as_output_returns_good_json(self): - from unittest.mock import patch - from io import StringIO params['writedescription'] = False params['quiet'] = True params['outtmpl'] = '-' - with patch('sys.stdout', new_callable=StringIO) as mock_stdout: - ie = youtube_dl.extractor.YoutubeIE() - ydl = YoutubeDL(params) - ydl.add_info_extractor(ie) - ydl.download([TEST_ID]) - output = mock_stdout.getvalue() + + jd = None + if sys.version_info < (3, 0): + from subprocess import Popen, PIPE + import shlex + tests_dir = os.path.dirname(os.path.realpath(__file__)) + repo_dir = os.path.dirname(tests_dir) + os.chdir(repo_dir) + cmd = "youtube_dl/__main__.py --skip-download --write-info-json -quite BaW_jenozKc -o -" + output = Popen(shlex.split(cmd), stdout=PIPE).communicate()[0] jd = json.loads(output) + else: + from unittest.mock import patch + from io import StringIO + with patch('sys.stdout', new_callable=StringIO) as mock_stdout: + ie = youtube_dl.extractor.YoutubeIE() + ydl = YoutubeDL(params) + ydl.add_info_extractor(ie) + ydl.download([TEST_ID]) + output = mock_stdout.getvalue() + jd = json.loads(output) + self.assertEqual(jd['upload_date'], u'20121002') self.assertEqual(jd['description'], EXPECTED_DESCRIPTION) self.assertEqual(jd['id'], TEST_ID)