diff options
Diffstat (limited to 'utils/lib_sxng_test.sh')
| -rwxr-xr-x | utils/lib_sxng_test.sh | 69 |
1 files changed, 55 insertions, 14 deletions
diff --git a/utils/lib_sxng_test.sh b/utils/lib_sxng_test.sh index 895a338fa..b84852c1f 100755 --- a/utils/lib_sxng_test.sh +++ b/utils/lib_sxng_test.sh @@ -6,7 +6,7 @@ test.help(){ test.: yamllint : lint YAML files (YAMLLINT_FILES) pylint : lint ./searx, ./searxng_extra and ./tests - pyright : static type check of python sources + pyright : static type check of python sources (.dev or .ci) black : check black code format unit : run unit tests coverage : run unit tests with coverage @@ -16,6 +16,10 @@ test.: 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[@]}" @@ -23,40 +27,76 @@ test.yamllint() { } test.pylint() { - # shellcheck disable=SC2086 ( 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 + --ignore=searx/engines \ + searx searx/searxng.msg \ + searxng_extra searxng_extra/docs_prebuild \ + tests ) dump_return $? } -test.pyright() { +test.types.dev() { + # use this pyright test for local tests in development / it suppress + # warnings related to intentional monkey patching but gives good hints where + # we need to work on SearXNG's typification. + # + # --> pyrightconfig.json + + build_msg TEST "[pyright/types] static type check of python sources" + build_msg TEST " --> typeCheckingMode: on" + node.env.dev + + build_msg TEST "[pyright/types] suppress warnings related to intentional monkey patching" + # We run Pyright in the virtual environment because pyright executes + # "python" to determine the Python version. + pyenv.cmd npx --no-install pyright -p pyrightconfig.json \ + | grep -E '\.py:[0-9]+:[0-9]+'\ + | 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' + # ignore exit value from pyright + # dump_return ${PIPESTATUS[0]} + return 0 +} + +test.types.ci() { + # use this pyright test for CI / disables typeCheckingMode, needed as long + # we do not have fixed all typification issues. + # + # --> pyrightconfig-ci.json + build_msg TEST "[pyright] static type check of python sources" + build_msg TEST " --> typeCheckingMode: off !!!" 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" + # We run Pyright in the virtual environment because pyright executes + # "python" to determine the Python version. pyenv.cmd npx --no-install pyright -p pyrightconfig-ci.json \ - | grep -v ".py$" \ + | grep -E '\.py:[0-9]+:[0-9]+'\ | 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 $? + # ignore exit value from pyright + # dump_return ${PIPESTATUS[0]} + return 0 } test.black() { @@ -67,7 +107,8 @@ test.black() { test.unit() { build_msg TEST 'tests/unit' - pyenv.cmd python -m nose2 -s tests/unit + # shellcheck disable=SC2086 + pyenv.cmd python -m nose2 ${TEST_NOSE2_VERBOSE} -s tests/unit dump_return $? } @@ -75,7 +116,8 @@ 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 + # shellcheck disable=SC2086 + python -m nose2 ${TEST_NOSE2_VERBOSE} -C --log-capture --with-coverage --coverage searx -s tests/unit coverage report coverage html ) @@ -115,4 +157,3 @@ test.clean() { rm -rf geckodriver.log .coverage coverage/ dump_return $? } - |