Correctly check for search backend validation in search settings form

Review Request #9824 — Created March 22, 2018 and submitted

Information

Review Board
release-3.0.x
efd02b6...

Reviewers

The search settings form was assuming that the search_backend_id field
would be available in clean, but the value is only present if the
backend passes validation. We now check for its existence instead of
assuming that it does exist and carry on with validation accordingly.

  • Ran unit tests.
  • Selecting "elasticsearch" on the search settings form without it
    installed no longer results in a 500.
  • Enabling Elasticsearch works.
  • Enabling Whoosh works.
Description From Last Updated

I also want to see test cases for a correct backend, and info in Testing Done that you've tested all …

chipx86chipx86

E501 line too long (84 > 79 characters)

reviewbotreviewbot

This should be two tests: One for a backend that doesn't exist, another for the validate() check.

chipx86chipx86

This line is too long.

chipx86chipx86

Ordering is all over the place. Can you fix this?

chipx86chipx86

Rather than the reset() above, can you use this pattern: register try: ... finally: unregister

chipx86chipx86

The "plain" version of a test should always go above the other ones. This should be first.

chipx86chipx86

F841 local variable 'form' is assigned to but never used

reviewbotreviewbot

E251 unexpected spaces around keyword / parameter equals

reviewbotreviewbot

E251 unexpected spaces around keyword / parameter equals

reviewbotreviewbot

E251 unexpected spaces around keyword / parameter equals

reviewbotreviewbot

E251 unexpected spaces around keyword / parameter equals

reviewbotreviewbot

Ordering is still off here.

chipx86chipx86
Checks run (1 failed, 1 succeeded)
flake8 failed.
JSHint passed.

flake8

brennie
chipx86
  1. 
      
  2. reviewboard/admin/tests.py (Diff revision 2)
     
     
     
     
    Show all issues

    This should be two tests: One for a backend that doesn't exist, another for the validate() check.

  3. reviewboard/admin/tests.py (Diff revision 2)
     
     
    Show all issues

    This line is too long.

  4. 
      
chipx86
  1. 
      
  2. Show all issues

    I also want to see test cases for a correct backend, and info in Testing Done that you've tested all backends in there.

  3. 
      
brennie
Review request changed
Testing Done:
~  

Ran unit tests.

~   Selecting "elasticsearch" on the search settings form without it
~   installed no longer results in a 500.

  ~
  • Ran unit tests.
  ~
  • Selecting "elasticsearch" on the search settings form without it
    installed no longer results in a 500.
  ~
  • Enabling Elasticsearch works.
  +
  • Enabling Whoosh works.
Commit:
c956c13e78057ace5840ce8ea99ba60a6bfe72df
306886b306b2e1029bd7120f11eea76d6d53a081

Checks run (1 failed, 1 succeeded)

flake8 failed.
JSHint passed.

flake8

chipx86
  1. 
      
  2. reviewboard/admin/tests.py (Diff revision 3)
     
     
     
     
     
     
     
     
     
    Show all issues

    Ordering is all over the place. Can you fix this?

  3. reviewboard/admin/tests.py (Diff revision 3)
     
     
     
     
     
     
     
     
     
     
     
    Show all issues

    Rather than the reset() above, can you use this pattern:

    register
    
    try:
        ...
    finally:
        unregister
    
  4. reviewboard/admin/tests.py (Diff revision 3)
     
     
     
     
     
     
     
     
    Show all issues

    The "plain" version of a test should always go above the other ones. This should be first.

  5. 
      
brennie
Review request changed
Commit:
306886b306b2e1029bd7120f11eea76d6d53a081
ebfc44acef0532405496f53b1bab8aa3b2235f3e

Checks run (1 failed, 1 succeeded)

flake8 failed.
JSHint passed.

flake8

brennie
chipx86
  1. 
      
  2. reviewboard/admin/tests.py (Diff revision 5)
     
     
     
    Show all issues

    Ordering is still off here.

  3. 
      
brennie
david
chipx86
  1. Ship It!
  2. 
      
brennie
Review request changed
Status:
Completed
Change Summary:
Pushed to release-3.0.x (ce0c109)