summaryrefslogtreecommitdiff
path: root/searx/search/checker/__main__.py
blob: 2f808237a2dced7b144bebeae98cead1f4033d7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import sys
import os

import searx.search
import searx.search.processors
import searx.search.checker


if sys.stdout.isatty() and os.environ.get('TERM') not in ['dumb', 'unknown']:
    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()