martin-bts / askbot-devel

Askbot is a Django/Python Q&A forum. **Contributors README**: https://github.com/ASKBOT/askbot-devel#how-to-contribute. Commercial hosting of Askbot and support are available at https://askbot.com
Other
0 stars 2 forks source link

ERROR: test_show_answer (askbot.tests.test_page_load.QuestionPageRedirectTests) #61

Closed sebastian-philipp closed 5 years ago

sebastian-philipp commented 5 years ago

This is most likely a cache invalidation error.

======================================================================
FAIL: test_show_answer (askbot.tests.test_page_load.QuestionPageRedirectTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sebastian/Repos/askbot-devel/.tox/py3.6/lib/python3.6/site-packages/askbot/tests/test_page_load.py", line 656, in test_show_answer
    self.assertRedirects(resp, expected_url=self.a.get_absolute_url())
  File "/home/sebastian/Repos/askbot-devel/.tox/py3.6/lib/python3.6/site-packages/django/test/testcases.py", line 283, in assertRedirects
    % (response.status_code, status_code)
AssertionError: 404 != 302 : Response didn't redirect as expected: Response code was 404 (expected 302)

This is the code that generates the 404:

======================================================================
ERROR: test_show_answer (askbot.tests.test_page_load.QuestionPageRedirectTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sebastian/Repos/askbot-devel/.tox/py3.6/lib/python3.6/site-packages/askbot/views/readers.py", line 403, in question
    ).select_related('thread')[0]
  File "/home/sebastian/Repos/askbot-devel/.tox/py3.6/lib/python3.6/site-packages/django/db/models/query.py", line 307, in __getitem__
    return qs._result_cache[0]
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sebastian/Repos/askbot-devel/.tox/py3.6/lib/python3.6/site-packages/askbot/views/readers.py", line 410, in question
    ).select_related('thread')[0]
  File "/home/sebastian/Repos/askbot-devel/.tox/py3.6/lib/python3.6/site-packages/django/db/models/query.py", line 307, in __getitem__
    return qs._result_cache[0]
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sebastian/Repos/askbot-devel/.tox/py3.6/lib/python3.6/site-packages/django/core/handlers/exception.py", line 35, in inner
    response = get_response(request)
  File "/home/sebastian/Repos/askbot-devel/.tox/py3.6/lib/python3.6/site-packages/django/core/handlers/base.py", line 128, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/sebastian/Repos/askbot-devel/.tox/py3.6/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/sebastian/Repos/askbot-devel/.tox/py3.6/lib/python3.6/site-packages/django/utils/decorators.py", line 142, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/home/sebastian/Repos/askbot-devel/.tox/py3.6/lib/python3.6/site-packages/askbot/views/readers.py", line 413, in question
    raise Http404

These are possible hacks to fix this.

diff --git a/askbot/tests/test_page_load.py b/askbot/tests/test_page_load.py
index 57cec547a..d6b02ce76 100644
--- a/askbot/tests/test_page_load.py
+++ b/askbot/tests/test_page_load.py
@@ -603,6 +603,9 @@ class QuestionPageRedirectTests(AskbotTestCase):
         self.q = self.post_question()
         self.q.old_question_id = 101
         self.q.save()
+        # Anyone of those fixes this error:
+        #self.q.thread.reset_cached_data()
+        #self.q.thread._question_post(refresh=True)

         self.a = self.post_answer(question=self.q)
         self.a.old_answer_id = 201
martin-bts commented 5 years ago

The same errors came back at a different test. https://github.com/martin-bts/askbot-devel/pull/108 Same test though. Why always in relation to post_question()? Is the question object passed through too many hands?

closing for now. waiting for reoccurance