Loading searx/plugins/calculator.py +2 −2 Original line number Diff line number Diff line Loading @@ -47,10 +47,10 @@ def post_search(request, search): if type(value) in (int, float): search.result_container.answers.clear() answer = "{} = {}".format(unmodified_query, value) search.result_container.answers[answer] = {'answer': answer, 'calculator': True} search.result_container.answers['calculator'] = {'answer': answer, 'calculator': True} except (ZeroDivisionError, ValueError, FloatingPointError, MemoryError, OverflowError, TimeoutError) as e: answer = gettext('Error') search.result_container.answers[answer] = {'answer': answer, 'calculator': True} search.result_container.answers['calculator'] = {'answer': answer, 'calculator': True} except Exception as e: logger.debug(e) Loading tests/unit/test_plugins.py +48 −0 Original line number Diff line number Diff line Loading @@ -137,3 +137,51 @@ class HashPluginTest(SearxTestCase): self.assertTrue('sha512 hash digest: ee26b0dd4af7e749aa1a8ee3c10ae9923f6' '18980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5' 'fa9ad8e6f57f50028a8ff' in search.result_container.answers['hash']['answer']) class CalculatorPluginTest(SearxTestCase): def test_PluginStore_init(self): store = plugins.PluginStore() store.register(plugins.calculator) self.assertTrue(len(store.plugins) == 1) request = Mock(remote_addr='127.0.0.1') request.headers.getlist.return_value = [] # True addition test search = get_search_mock(query='2+2', pageno=1) store.call(store.plugins, 'post_search', request, search) self.assertTrue('4' in search.result_container.answers['calculator']['answer']) # False addition test search = get_search_mock(query='2+2', pageno=1) store.call(store.plugins, 'post_search', request, search) self.assertFalse('4' not in search.result_container.answers['calculator']['answer']) # no result test search = get_search_mock(query='2+2', pageno=2) store.call(store.plugins, 'post_search', request, search) self.assertFalse('calculator' in search.result_container.answers) # no result test search = get_search_mock(query='2+2/sdf', pageno=1) store.call(store.plugins, 'post_search', request, search) self.assertFalse('calculator' in search.result_container.answers) # error result test search = get_search_mock(query='2+2/0', pageno=1) store.call(store.plugins, 'post_search', request, search) self.assertTrue('Error' in search.result_container.answers['calculator']['answer']) # error result test search = get_search_mock(query='2**999999999**99999999', pageno=1) store.call(store.plugins, 'post_search', request, search) self.assertTrue('Error' in search.result_container.answers['calculator']['answer']) No newline at end of file Loading
searx/plugins/calculator.py +2 −2 Original line number Diff line number Diff line Loading @@ -47,10 +47,10 @@ def post_search(request, search): if type(value) in (int, float): search.result_container.answers.clear() answer = "{} = {}".format(unmodified_query, value) search.result_container.answers[answer] = {'answer': answer, 'calculator': True} search.result_container.answers['calculator'] = {'answer': answer, 'calculator': True} except (ZeroDivisionError, ValueError, FloatingPointError, MemoryError, OverflowError, TimeoutError) as e: answer = gettext('Error') search.result_container.answers[answer] = {'answer': answer, 'calculator': True} search.result_container.answers['calculator'] = {'answer': answer, 'calculator': True} except Exception as e: logger.debug(e) Loading
tests/unit/test_plugins.py +48 −0 Original line number Diff line number Diff line Loading @@ -137,3 +137,51 @@ class HashPluginTest(SearxTestCase): self.assertTrue('sha512 hash digest: ee26b0dd4af7e749aa1a8ee3c10ae9923f6' '18980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5' 'fa9ad8e6f57f50028a8ff' in search.result_container.answers['hash']['answer']) class CalculatorPluginTest(SearxTestCase): def test_PluginStore_init(self): store = plugins.PluginStore() store.register(plugins.calculator) self.assertTrue(len(store.plugins) == 1) request = Mock(remote_addr='127.0.0.1') request.headers.getlist.return_value = [] # True addition test search = get_search_mock(query='2+2', pageno=1) store.call(store.plugins, 'post_search', request, search) self.assertTrue('4' in search.result_container.answers['calculator']['answer']) # False addition test search = get_search_mock(query='2+2', pageno=1) store.call(store.plugins, 'post_search', request, search) self.assertFalse('4' not in search.result_container.answers['calculator']['answer']) # no result test search = get_search_mock(query='2+2', pageno=2) store.call(store.plugins, 'post_search', request, search) self.assertFalse('calculator' in search.result_container.answers) # no result test search = get_search_mock(query='2+2/sdf', pageno=1) store.call(store.plugins, 'post_search', request, search) self.assertFalse('calculator' in search.result_container.answers) # error result test search = get_search_mock(query='2+2/0', pageno=1) store.call(store.plugins, 'post_search', request, search) self.assertTrue('Error' in search.result_container.answers['calculator']['answer']) # error result test search = get_search_mock(query='2**999999999**99999999', pageno=1) store.call(store.plugins, 'post_search', request, search) self.assertTrue('Error' in search.result_container.answers['calculator']['answer']) No newline at end of file