diff options
| author | Markus Heiser <markus.heiser@darmarit.de> | 2023-08-06 16:39:00 +0200 |
|---|---|---|
| committer | Markus Heiser <markus.heiser@darmarIT.de> | 2023-08-06 19:37:12 +0200 |
| commit | 64100db9045ec712afbd8fa1becee14f7109921c (patch) | |
| tree | fc80dd5f2006c278abcc74c77c84c865579a9f10 /utils/lib_sxng_test.sh | |
| parent | 1d0abb7157a24fd2c43afe30a35527cba3d6967a (diff) | |
[doc] improve documentation of make targets and ./manage script
BTW force modularization of the ./mange script into sub modules:
- utils/lib_sxng_data.sh
- utils/lib_sxng_node.sh
- utils/lib_sxng_static.sh
- utils/lib_sxng_test.sh
- utils/lib_sxng_themes.sh
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Diffstat (limited to 'utils/lib_sxng_test.sh')
| -rw-r--r-- | utils/lib_sxng_test.sh | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/utils/lib_sxng_test.sh b/utils/lib_sxng_test.sh new file mode 100644 index 000000000..41a20d86f --- /dev/null +++ b/utils/lib_sxng_test.sh @@ -0,0 +1,111 @@ +test.help(){ + cat <<EOF +test.: + yamllint : lint YAML files (YAMLLINT_FILES) + pylint : lint PYLINT_FILES, searx/engines, searx & tests + pyright : static type check of python sources + black : check black 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 +} + +test.yamllint() { + build_msg TEST "[yamllint] \$YAMLLINT_FILES" + pyenv.cmd yamllint --strict --format parsable "${YAMLLINT_FILES[@]}" + dump_return $? +} + +test.pylint() { + # shellcheck disable=SC2086 + ( set -e + build_msg TEST "[pylint] \$PYLINT_FILES" + pyenv.activate + python ${PYLINT_OPTIONS} ${PYLINT_VERBOSE} \ + --additional-builtins="${PYLINT_ADDITIONAL_BUILTINS_FOR_ENGINES}" \ + "${PYLINT_FILES[@]}" + + build_msg TEST "[pylint] searx/engines" + python ${PYLINT_OPTIONS} ${PYLINT_VERBOSE} \ + --disable="${PYLINT_SEARXNG_DISABLE_OPTION}" \ + --additional-builtins="${PYLINT_ADDITIONAL_BUILTINS_FOR_ENGINES}" \ + searx/engines + + build_msg TEST "[pylint] searx tests" + python ${PYLINT_OPTIONS} ${PYLINT_VERBOSE} \ + --disable="${PYLINT_SEARXNG_DISABLE_OPTION}" \ + --ignore=searx/engines \ + searx tests + ) + dump_return $? +} + +test.pyright() { + build_msg TEST "[pyright] static type check of python sources" + node.env.dev + # We run Pyright in the virtual environment because Pyright + # executes "python" to determine the Python version. + build_msg TEST "[pyright] suppress warnings related to intentional monkey patching" + pyenv.cmd npx --no-install pyright -p pyrightconfig-ci.json \ + | grep -v ".py$" \ + | grep -v '/engines/.*.py.* - warning: "logger" is not defined'\ + | grep -v '/plugins/.*.py.* - error: "logger" is not defined'\ + | grep -v '/engines/.*.py.* - warning: "supported_languages" is not defined' \ + | grep -v '/engines/.*.py.* - warning: "language_aliases" is not defined' \ + | grep -v '/engines/.*.py.* - warning: "categories" is not defined' + dump_return $? +} + +test.black() { + build_msg TEST "[black] \$BLACK_TARGETS" + pyenv.cmd black --check --diff "${BLACK_OPTIONS[@]}" "${BLACK_TARGETS[@]}" + dump_return $? +} + +test.unit() { + build_msg TEST 'tests/unit' + pyenv.cmd python -m nose2 -s tests/unit + dump_return $? +} + +test.coverage() { + build_msg TEST 'unit test coverage' + ( set -e + pyenv.activate + python -m nose2 -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.py --halt error "$rst" > /dev/null || die 42 "fix issue in $rst" + done +} + +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 $? +} + |