blob: 22a655722887547d74fb34017d9c98bf66a73e13 (
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
#!/usr/bin/env bash
# SPDX-License-Identifier: AGPL-3.0-or-later
test.help() {
cat <<EOF
test.:
yamllint : lint YAML files (YAMLLINT_FILES)
pylint : lint ./searx, ./searxng_extra and ./tests
pyright : check Python types
black : check Python code format
shfmt : check Shell script code format
unit : run unit tests
coverage : run unit tests with coverage
robot : run robot test
rst : test .rst files incl. README.rst
clean : clean intermediate test stuff
EOF
}
if [ "$VERBOSE" = "1" ]; then
TEST_NOSE2_VERBOSE="-vvv"
fi
test.yamllint() {
build_msg TEST "[yamllint] $YAMLLINT_FILES"
pyenv.cmd yamllint --strict --format parsable "${YAMLLINT_FILES[@]}"
dump_return $?
}
test.pylint() {
(
set -e
pyenv.activate
PYLINT_OPTIONS="--rcfile .pylintrc"
build_msg TEST "[pylint] ./searx/engines"
# shellcheck disable=SC2086
pylint ${PYLINT_OPTIONS} ${PYLINT_VERBOSE} \
--additional-builtins="traits,supported_languages,language_aliases,logger,categories" \
searx/engines
build_msg TEST "[pylint] ./searx ./searxng_extra ./tests"
# shellcheck disable=SC2086
pylint ${PYLINT_OPTIONS} ${PYLINT_VERBOSE} \
--ignore=searx/engines \
searx searx/searxng.msg \
searxng_extra searxng_extra/docs_prebuild \
tests
)
dump_return $?
}
test.pyright() {
# For integration into your IDE (editor) use the basedpyright-langserver
# (LSP) installed by 'pipx basedpyright' and read:
#
# - https://docs.basedpyright.com/latest/installation/ides/
#
# The $REPO_ROOT/pyrightconfig.json uses the virtualenv found in
# $REPO_ROOT/local/py3 and create by a 'make pyenv'
build_msg TEST "[basedpyright] static type check of python sources"
LANG=C pyenv.cmd basedpyright
# ignore exit value from basedpyright
# dump_return $?
return 0
}
test.pyright_modified() {
build_msg TEST "[basedpyright] static type check of local modified files"
local pyrigth_files=()
readarray -t pyrigth_files < <(git status --porcelain | awk 'match($2,".py[i]*$") {print $2}')
if [ ${#pyrigth_files[@]} -eq 0 ]; then
echo "there are no locally modified python files that could be checked"
else
pyenv.cmd basedpyright "${pyrigth_files[@]}"
fi
# ignore exit value from basedpyright
# dump_return $?
return 0
}
test.black() {
build_msg TEST "[black] $BLACK_TARGETS"
pyenv.cmd black --check --diff "${BLACK_OPTIONS[@]}" "${BLACK_TARGETS[@]}"
dump_return $?
}
test.shfmt() {
build_msg TEST "[shfmt] ${SHFMT_SCRIPTS[*]}"
go.tool shfmt --list --diff "${SHFMT_SCRIPTS[@]}"
dump_return $?
}
test.unit() {
build_msg TEST 'tests/unit'
# shellcheck disable=SC2086
pyenv.cmd python -m nose2 ${TEST_NOSE2_VERBOSE} -s tests/unit
dump_return $?
}
test.coverage() {
build_msg TEST 'unit test coverage'
(
set -e
pyenv.activate
# shellcheck disable=SC2086
python -m nose2 ${TEST_NOSE2_VERBOSE} -C --log-capture --with-coverage --coverage searx -s tests/unit
coverage report
coverage html
)
dump_return $?
}
test.robot() {
build_msg TEST 'robot'
gecko.driver
PYTHONPATH=. pyenv.cmd python -m tests.robot
dump_return $?
}
test.rst() {
build_msg TEST "[reST markup] ${RST_FILES[*]}"
for rst in "${RST_FILES[@]}"; do
pyenv.cmd rst2html --halt error "$rst" >/dev/null || die 42 "fix issue in $rst"
done
}
test.themes() {
build_msg TEST 'SearXNG themes'
themes.test
dump_return $?
}
test.pybabel() {
TEST_BABEL_FOLDER="build/test/pybabel"
build_msg TEST "[extract messages] pybabel"
mkdir -p "${TEST_BABEL_FOLDER}"
pyenv.cmd pybabel extract -F babel.cfg -o "${TEST_BABEL_FOLDER}/messages.pot" searx
}
test.clean() {
build_msg CLEAN "test stuff"
rm -rf geckodriver.log .coverage coverage/
dump_return $?
}
|