﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
21451	LiveServerTestCase returns a 404 on all URLs when MEDIA_URL = '' and DEBUG = True	Aymeric Augustin	Greg Chapple	"This is a fairly obscure bug and it was interesting to diagnose ;-)

I ran into it while working on the Django Debug Toolbar. Since the DDT isn't displayed when `DEBUG = False`, its tests run with `DEBUG = True`. I admit that this isn't a common use case. (Of course, I could change the function that controls whether the toolbar is shown to display it during tests regardless of `DEBUG`. But this isn't the point.) Since the toolbar doesn't handle any uploaded files, `MEDIA_URL` isn't set and defaults to the empty string.

In these circumstances, `_MediaFilesHandler.should_handle(path)` will always return `True` because any `path` starts with the empty string. Then `_MediaFilesHandler.get_response(request)` will fail to find the media file corresponding to `path` and catch the resulting `Http404`. When `DEBUG = False`, `get_response` will continue after the try/except block and call the parent `get_response`, which will return the expected result. But when `DEBUG = True`, `get_response` will happily return the 404 debug page! NB: all the code I've described is actually in `StaticFilesHandler`, which `_MediaFilesHandler` inherits.

I believe there are actually two bugs here:
- `_MediaFilesHandler` shouldn't be applied when `MEDIA_URL` isn't set — and while we're there, `StaticFilesHandler` shouldn't be applied either when `STATIC_URL` isn't set.
- `get_response` shouldn't swallow `Http404` exceptions when `DEBUG = False` — this behavior has hidden the previous problem until now."	Bug	closed	Testing framework	1.6	Normal	fixed			Accepted	1	0	0	0	0	0
