Spaces:
Build error
Build error
| """Test that the FileResponse Content-Length patch is applied correctly.""" | |
| import os | |
| import tempfile | |
| def test_fileresponse_no_content_length_with_stat_result(): | |
| """FileResponse should not set Content-Length even when stat_result is provided.""" | |
| from starlette.responses import FileResponse | |
| with tempfile.NamedTemporaryFile(delete=False, suffix=".zip") as f: | |
| f.write(b"x" * 1024) | |
| tmp = f.name | |
| try: | |
| stat_result = os.stat(tmp) | |
| fr = FileResponse(tmp, filename="test.zip", stat_result=stat_result) | |
| headers_lower = {k.lower(): v for k, v in fr.headers.items()} | |
| assert "content-length" not in headers_lower, ( | |
| f"FileResponse should not set Content-Length. Headers: {fr.headers}" | |
| ) | |
| # But last-modified and etag should still be set | |
| assert "last-modified" in headers_lower | |
| assert "etag" in headers_lower | |
| finally: | |
| os.unlink(tmp) | |
| def test_fileresponse_no_content_length_without_stat_result(): | |
| """FileResponse should not set Content-Length when stat_result is None.""" | |
| from starlette.responses import FileResponse | |
| with tempfile.NamedTemporaryFile(delete=False, suffix=".zip") as f: | |
| f.write(b"x" * 512) | |
| tmp = f.name | |
| try: | |
| fr = FileResponse(tmp, filename="test2.zip", stat_result=None) | |
| headers_lower = {k.lower(): v for k, v in fr.headers.items()} | |
| assert "content-length" not in headers_lower, ( | |
| f"FileResponse should not set Content-Length. Headers: {fr.headers}" | |
| ) | |
| finally: | |
| os.unlink(tmp) | |
| def test_gradio_modules_use_patched_fileresponse(): | |
| """Gradio's route_utils and routes modules should reference the patched FileResponse.""" | |
| import gradio.route_utils as ru | |
| import gradio.routes as rt | |
| from starlette.responses import FileResponse | |
| if hasattr(ru, "FileResponse"): | |
| assert ru.FileResponse is FileResponse, ( | |
| f"route_utils.FileResponse is not the patched class: {ru.FileResponse}" | |
| ) | |
| if hasattr(rt, "FileResponse"): | |
| assert rt.FileResponse is FileResponse, ( | |
| f"routes.FileResponse is not the patched class: {rt.FileResponse}" | |
| ) | |