@@ -19,13 +19,13 @@ def test_url_name(self):
1919 self .assertEqual ({'URL_NAMESPACE' : 'events' , 'URL_NAME' : 'events:calendar_list' }, context_processors .url_name (request ))
2020
2121 request = self .factory .get ('/getit-404/releases/3.3.3/not-an-actual-thing/' )
22- self .assertEqual ({}, context_processors .url_name (request ))
22+ self .assertEqual ({'URL_NAMESPACE' : None , 'URL_NAME' : None }, context_processors .url_name (request ))
2323
2424 request = self .factory .get ('/getit-404/releases/3.3.3/\r \n /' )
25- self .assertEqual ({}, context_processors .url_name (request ))
25+ self .assertEqual ({'URL_NAMESPACE' : None , 'URL_NAME' : None }, context_processors .url_name (request ))
2626
2727 request = self .factory .get ('/nothing/here/' )
28- self .assertEqual ({}, context_processors .url_name (request ))
28+ self .assertEqual ({'URL_NAMESPACE' : None , 'URL_NAME' : None }, context_processors .url_name (request ))
2929
3030 def test_blog_url (self ):
3131 request = self .factory .get ('/about/' )
@@ -114,3 +114,19 @@ def test_user_nav_bar_links_for_anonymous_user(self):
114114 request .user = AnonymousUser ()
115115
116116 self .assertEqual ({"USER_NAV_BAR" : {}}, context_processors .user_nav_bar_links (request ))
117+
118+ def test_url_name_always_returns_keys (self ):
119+ """Ensure URL_NAME and URL_NAMESPACE are always present in context, even for 404s.
120+ Because it makes sentry unhappy: https://python-software-foundation.sentry.io/issues/6931306293/
121+ """
122+ # test with a 404 path
123+ request = self .factory .get ('/this-does-not-exist/' )
124+ result = context_processors .url_name (request )
125+
126+ # kyes should always be present
127+ self .assertIn ('URL_NAME' , result )
128+ self .assertIn ('URL_NAMESPACE' , result )
129+
130+ # values should be None for unresolved URLs
131+ self .assertIsNone (result ['URL_NAME' ])
132+ self .assertIsNone (result ['URL_NAMESPACE' ])
0 commit comments