tests: add a tox.ini and other tox/pytest-related files (#61045)

This commit is contained in:
Paul Marillonnet 2022-01-26 10:19:36 +01:00 committed by Benjamin Dauvergne
parent 54dcdee235
commit f4cceaa7b1
4 changed files with 147 additions and 0 deletions

27
check-migrations.sh Executable file
View File

@ -0,0 +1,27 @@
#!/bin/bash
set -e
# https://stackoverflow.com/questions/49778988/makemigrations-in-dev-machine-without-database-instance
CHECK_MIGRATIONS_SETTINGS=`mktemp`
trap "rm -f ${CHECK_MIGRATIONS_SETTINGS}" EXIT
cat <<EOF >${CHECK_MIGRATIONS_SETTINGS}
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.dummy',
}
}
EOF
TEMPFILE=`mktemp`
trap "rm -f ${TEMPFILE} ${CHECK_MIGRATIONS_SETTINGS}" EXIT
DJANGO_SETTINGS_MODULE=authentic2.settings AUTHENTIC2_SETTINGS_FILE=${CHECK_MIGRATIONS_SETTINGS} django-admin makemigrations --dry-run --noinput authentic2_auth_fedict >${TEMPFILE} 2>&1 || true
if ! grep 'No changes detected' -q ${TEMPFILE}; then
echo '!!! Missing migration detected !!!'
cat ${TEMPFILE}
exit 1
else
exit 0
fi

22
getlasso3.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/sh
# Get venv site-packages path
DSTDIR=`python3 -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())'`
# Get not venv site-packages path
# Remove first path (assuming that is the venv path)
NONPATH=`echo $PATH | sed 's/^[^:]*://'`
SRCDIR=`PATH=$NONPATH python3 -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())'`
# Clean up
rm -f $DSTDIR/lasso.*
rm -f $DSTDIR/_lasso.*
# Link
ln -sv /usr/lib/python3/dist-packages/lasso.py $DSTDIR/
for SOFILE in /usr/lib/python3/dist-packages/_lasso.cpython-*.so
do
ln -sv $SOFILE $DSTDIR/
done
exit 0

13
pylint.sh Executable file
View File

@ -0,0 +1,13 @@
#!/bin/bash
set -e
if [ -f /var/lib/jenkins/pylint.django.rc ]; then
PYLINT_RC=/var/lib/jenkins/pylint.django.rc
elif [ -f pylint.django.rc ]; then
PYLINT_RC=pylint.django.rc
else
echo No pylint RC found
exit 0
fi
pylint -f parseable --rcfile ${PYLINT_RC} "$@" > pylint.out || /bin/true

85
tox.ini Normal file
View File

@ -0,0 +1,85 @@
# Tox (http://tox.testrun.org/) is a tool for running tests
# in multiple virtualenvs. This configuration file will run the
# test suite on all supported python versions. To use it, "pip install tox"
# and then run "tox" from this directory.
[tox]
toxworkdir = {env:TMPDIR:/tmp}/tox-{env:USER}/authentic2-auth-fedict/{env:BRANCH_NAME:}
envlist =
py3-dj22
[tox:jenkins]
envlist =
pylint
code-style
py3-dj22
[testenv]
setenv =
AUTHENTIC2_SETTINGS_FILE=tests/settings.py
DJANGO_SETTINGS_MODULE=authentic2.settings
JUNIT={tty::-o junit_suite_name={envname} --junit-xml=junit-{envname}.xml}
COVERAGE={tty::--junitxml=test_{envname}_results.xml --cov-report xml --cov-report html --cov=src/ --cov-config .coveragerc}
passenv=
BRANCH_NAME
# support for pg_virtualenv
PGPORT
PGHOST
PGUSER
PGPASSWORD
usedevelop = true
deps =
!local: https://git.entrouvert.org/authentic.git/snapshot/authentic-main.tar.gz
local: ../authentic2
# dependency constraints for authentic
py3: file-magic
djangorestframework>=3.12,<3.13
dj22: django<2.3
django-tables<2.0
psycopg2-binary<2.9
oldldap: python-ldap<3
ldaptools
# pytest requirements
pytest
pytest-cov
pytest-django
pytest-freezegun
pytest-random
django-webtest
pyquery
astroid!=2.5.7
commands =
py3: ./getlasso3.sh
./check-migrations.sh
py.test {env:COVERAGE:} {env:JUNIT:} {tty:--sw:} {posargs:tests/}
[testenv:pylint]
usedevelop = true
basepython = python3
deps =
https://git.entrouvert.org/authentic.git/snapshot/authentic-main.tar.gz
Django<2.3
pylint<1.8
pylint-django<0.8.1
commands =
/bin/bash -c "./pylint.sh src/*/"
[testenv:code-style]
skip_install = true
deps =
pre-commit
commands =
pre-commit run --all-files --show-diff-on-failure
[pytest]
junit_family=xunit2
filterwarnings =
once
ignore:::django\..*
ignore:::authentic2\..*
ignore:::rest_framework\..*
ignore:::gettext\..*