mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #21443 -- Cannot show debug info on PY3's importlib
Thanks productions@zaziork.co.uk for the review.
This commit is contained in:
		
				
					committed by
					
						 Claude Paroz
						Claude Paroz
					
				
			
			
				
	
			
			
			
						parent
						
							47afe07324
						
					
				
				
					commit
					18185724e6
				
			| @@ -388,7 +388,10 @@ class ExceptionReporter(object): | |||||||
|         """ |         """ | ||||||
|         source = None |         source = None | ||||||
|         if loader is not None and hasattr(loader, "get_source"): |         if loader is not None and hasattr(loader, "get_source"): | ||||||
|             source = loader.get_source(module_name) |             try: | ||||||
|  |                 source = loader.get_source(module_name) | ||||||
|  |             except ImportError: | ||||||
|  |                 pass | ||||||
|             if source is not None: |             if source is not None: | ||||||
|                 source = source.splitlines() |                 source = source.splitlines() | ||||||
|         if source is None: |         if source is None: | ||||||
|   | |||||||
| @@ -19,6 +19,7 @@ from django.test import TestCase, RequestFactory | |||||||
| from django.test.utils import (override_settings, setup_test_template_loader, | from django.test.utils import (override_settings, setup_test_template_loader, | ||||||
|     restore_template_loaders) |     restore_template_loaders) | ||||||
| from django.utils.encoding import force_text, force_bytes | from django.utils.encoding import force_text, force_bytes | ||||||
|  | from django.utils import importlib, six | ||||||
| from django.views.debug import ExceptionReporter | from django.views.debug import ExceptionReporter | ||||||
|  |  | ||||||
| from .. import BrokenException, except_args | from .. import BrokenException, except_args | ||||||
| @@ -239,6 +240,21 @@ class ExceptionReporterTests(TestCase): | |||||||
|         self.assertIn('<h2>Request information</h2>', html) |         self.assertIn('<h2>Request information</h2>', html) | ||||||
|         self.assertIn('<p>Request data not supplied</p>', html) |         self.assertIn('<p>Request data not supplied</p>', html) | ||||||
|  |  | ||||||
|  |     @skipIf(six.PY2, 'Bug manifests on PY3 only') | ||||||
|  |     def test_unfrozen_importlib(self): | ||||||
|  |         """ | ||||||
|  |         importlib is not a frozen app, but its loader thinks it's frozen which | ||||||
|  |         results in an ImportError on Python 3. Refs #21443. | ||||||
|  |         """ | ||||||
|  |         try: | ||||||
|  |             request = self.rf.get('/test_view/') | ||||||
|  |             importlib.import_module('abc.def.invalid.name') | ||||||
|  |         except Exception: | ||||||
|  |             exc_type, exc_value, tb = sys.exc_info() | ||||||
|  |         reporter = ExceptionReporter(request, exc_type, exc_value, tb) | ||||||
|  |         html = reporter.get_traceback_html() | ||||||
|  |         self.assertIn('<h1>ImportError at /test_view/</h1>', html) | ||||||
|  |  | ||||||
|  |  | ||||||
| class PlainTextReportTests(TestCase): | class PlainTextReportTests(TestCase): | ||||||
|     rf = RequestFactory() |     rf = RequestFactory() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user