-#!/usr/bin/env python
-# coding: utf-8
-from __future__ import unicode_literals
+#!/usr/bin/env python3
# Allow direct execution
import os
-import re
import sys
import unittest
+
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-from youtube_dl import YoutubeDL
-from youtube_dl.compat import compat_http_server
-from youtube_dl.downloader.http import HttpFD
-from youtube_dl.utils import encodeFilename
-import ssl
-import threading
-TEST_DIR = os.path.dirname(os.path.abspath(__file__))
+import http.server
+import re
+import threading
+from test.helper import http_server_port, try_rm
+from yt_dlp import YoutubeDL
+from yt_dlp.downloader.http import HttpFD
+from yt_dlp.utils import encodeFilename
+from yt_dlp.utils._utils import _YDLLogger as FakeLogger
-def http_server_port(httpd):
- if os.name == 'java' and isinstance(httpd.socket, ssl.SSLSocket):
- # In Jython SSLSocket is not a subclass of socket.socket
- sock = httpd.socket.sock
- else:
- sock = httpd.socket
- return sock.getsockname()[1]
+TEST_DIR = os.path.dirname(os.path.abspath(__file__))
TEST_SIZE = 10 * 1024
-class HTTPTestRequestHandler(compat_http_server.BaseHTTPRequestHandler):
+class HTTPTestRequestHandler(http.server.BaseHTTPRequestHandler):
def log_message(self, format, *args):
pass
end = int(mobj.group(2))
valid_range = start is not None and end is not None
if valid_range:
- content_range = 'bytes %d-%d' % (start, end)
+ content_range = f'bytes {start}-{end}'
if total:
- content_range += '/%d' % total
+ content_range += f'/{total}'
self.send_header('Content-Range', content_range)
return (end - start + 1) if valid_range else total
assert False
-class FakeLogger(object):
- def debug(self, msg):
- pass
-
- def warning(self, msg):
- pass
-
- def error(self, msg):
- pass
-
-
class TestHttpFD(unittest.TestCase):
def setUp(self):
- self.httpd = compat_http_server.HTTPServer(
+ self.httpd = http.server.HTTPServer(
('127.0.0.1', 0), HTTPTestRequestHandler)
self.port = http_server_port(self.httpd)
self.server_thread = threading.Thread(target=self.httpd.serve_forever)
ydl = YoutubeDL(params)
downloader = HttpFD(ydl, params)
filename = 'testfile.mp4'
+ try_rm(encodeFilename(filename))
self.assertTrue(downloader.real_download(filename, {
- 'url': 'http://127.0.0.1:%d/%s' % (self.port, ep),
- }))
- self.assertEqual(os.path.getsize(encodeFilename(filename)), TEST_SIZE)
- os.remove(encodeFilename(filename))
+ 'url': f'http://127.0.0.1:{self.port}/{ep}',
+ }), ep)
+ self.assertEqual(os.path.getsize(encodeFilename(filename)), TEST_SIZE, ep)
+ try_rm(encodeFilename(filename))
def download_all(self, params):
for ep in ('regular', 'no-content-length', 'no-range', 'no-range-no-content-length'):