summaryrefslogtreecommitdiff
path: root/searx/search/checker/__main__.py
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2020-12-24 09:28:16 +0100
committerAlexandre Flament <alex@al-f.net>2021-01-12 11:47:17 +0100
commit8cbc9f2d5823eb984e99e15c963e306610007fa1 (patch)
tree4dea97c668d960926938aefc8f0f77456bee47d6 /searx/search/checker/__main__.py
parentf7e11fd7222363a72a8fa33cf69190f64a3880bd (diff)
[enh] add checker
Diffstat (limited to 'searx/search/checker/__main__.py')
-rw-r--r--searx/search/checker/__main__.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/searx/search/checker/__main__.py b/searx/search/checker/__main__.py
new file mode 100644
index 000000000..c071e6437
--- /dev/null
+++ b/searx/search/checker/__main__.py
@@ -0,0 +1,51 @@
+import sys
+
+import searx.search
+import searx.search.processors
+import searx.search.checker
+
+
+if sys.stdout.isatty():
+ RESET_SEQ = "\033[0m"
+ COLOR_SEQ = "\033[1;%dm"
+ BOLD_SEQ = "\033[1m"
+ BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = map(lambda i: COLOR_SEQ % (30 + i), range(8))
+else:
+ RESET_SEQ = ""
+ COLOR_SEQ = ""
+ BOLD_SEQ = ""
+ BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = "", "", "", "", "", "", "", ""
+
+
+def iter_processor():
+ if len(sys.argv) > 1:
+ for name, processor in searx.search.processors.items():
+ if name in sys.argv:
+ yield name, processor
+ else:
+ for name, processor in searx.search.processors.items():
+ yield name, processor
+
+
+def main():
+ searx.search.initialize()
+ broken_urls = []
+ for name, processor in iter_processor():
+ if sys.stdout.isatty():
+ print(BOLD_SEQ, 'Engine ', '%-30s' % name, RESET_SEQ, WHITE, ' Checking', RESET_SEQ)
+ checker = searx.search.checker.Checker(processor)
+ checker.run()
+ if checker.test_results.succesfull:
+ print(BOLD_SEQ, 'Engine ', '%-30s' % name, RESET_SEQ, GREEN, ' OK', RESET_SEQ)
+ else:
+ errors = [test_name + ': ' + error for test_name, error in checker.test_results]
+ print(BOLD_SEQ, 'Engine ', '%-30s' % name, RESET_SEQ, RED, ' Error ', str(errors), RESET_SEQ)
+
+ broken_urls += checker.test_results.broken_urls
+
+ for url in broken_urls:
+ print('Error fetching', url)
+
+
+if __name__ == '__main__':
+ main()