mirror of
https://github.com/ytdl-org/youtube-dl
synced 2025-03-18 22:12:21 +09:00
Added python2 test for writing json-info to stdout
This commit is contained in:
parent
48af4b55b3
commit
b13cab0b7a
@ -13,16 +13,20 @@ import youtube_dl.YoutubeDL
|
|||||||
import youtube_dl.extractor
|
import youtube_dl.extractor
|
||||||
from youtube_dl.utils import *
|
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...)
|
# General configuration (from __init__, not very elegant...)
|
||||||
jar = compat_cookiejar.CookieJar()
|
jar = compat_cookiejar.CookieJar()
|
||||||
cookie_processor = compat_urllib_request.HTTPCookieProcessor(jar)
|
cookie_processor = compat_urllib_request.HTTPCookieProcessor(jar)
|
||||||
proxy_handler = compat_urllib_request.ProxyHandler()
|
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)
|
compat_urllib_request.install_opener(opener)
|
||||||
|
|
||||||
|
|
||||||
class YoutubeDL(youtube_dl.YoutubeDL):
|
class YoutubeDL(youtube_dl.YoutubeDL):
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(YoutubeDL, self).__init__(*args, **kwargs)
|
super(YoutubeDL, self).__init__(*args, **kwargs)
|
||||||
self.to_stderr = self.to_screen
|
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 .'''
|
For more information, contact phihag@phihag.de .'''
|
||||||
|
|
||||||
|
|
||||||
class TestInfoJSON(unittest.TestCase):
|
class TestInfoJSON(unittest.TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
# Clear old files
|
# Clear old files
|
||||||
self.tearDown()
|
self.tearDown()
|
||||||
@ -68,11 +74,23 @@ class TestInfoJSON(unittest.TestCase):
|
|||||||
self.assertEqual(descr, EXPECTED_DESCRIPTION)
|
self.assertEqual(descr, EXPECTED_DESCRIPTION)
|
||||||
|
|
||||||
def test_info_json_with_stdout_as_output_returns_good_json(self):
|
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['writedescription'] = False
|
||||||
params['quiet'] = True
|
params['quiet'] = True
|
||||||
params['outtmpl'] = '-'
|
params['outtmpl'] = '-'
|
||||||
|
|
||||||
|
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:
|
with patch('sys.stdout', new_callable=StringIO) as mock_stdout:
|
||||||
ie = youtube_dl.extractor.YoutubeIE()
|
ie = youtube_dl.extractor.YoutubeIE()
|
||||||
ydl = YoutubeDL(params)
|
ydl = YoutubeDL(params)
|
||||||
@ -80,6 +98,7 @@ class TestInfoJSON(unittest.TestCase):
|
|||||||
ydl.download([TEST_ID])
|
ydl.download([TEST_ID])
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
jd = json.loads(output)
|
jd = json.loads(output)
|
||||||
|
|
||||||
self.assertEqual(jd['upload_date'], u'20121002')
|
self.assertEqual(jd['upload_date'], u'20121002')
|
||||||
self.assertEqual(jd['description'], EXPECTED_DESCRIPTION)
|
self.assertEqual(jd['description'], EXPECTED_DESCRIPTION)
|
||||||
self.assertEqual(jd['id'], TEST_ID)
|
self.assertEqual(jd['id'], TEST_ID)
|
||||||
|
Loading…
Reference in New Issue
Block a user