103 lines
3.1 KiB
Bash
Executable file
103 lines
3.1 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# stop on failure
|
|
set -e
|
|
|
|
# path to sources
|
|
WEBOOB_DIR=$(cd $(dirname $0)/.. && pwd -P)
|
|
|
|
BACKEND="${1}"
|
|
if [ -z "${WEBOOB_WORKDIR}" ]; then
|
|
# use the old workdir by default
|
|
WEBOOB_WORKDIR="${HOME}/.weboob"
|
|
# but if we can find a valid xdg workdir, switch to it
|
|
[ "${XDG_CONFIG_HOME}" != "" ] || XDG_CONFIG_HOME="${HOME}/.config"
|
|
[ -d "${XDG_CONFIG_HOME}/weboob" ] && WEBOOB_WORKDIR="${XDG_CONFIG_HOME}/weboob"
|
|
fi
|
|
[ -z "${TMPDIR}" ] && TMPDIR="/tmp"
|
|
[ -z "${WEBOOB_BACKENDS}" ] && WEBOOB_BACKENDS="${WEBOOB_WORKDIR}/backends"
|
|
[ -z "${WEBOOB_MODULES}" ] && WEBOOB_MODULES="${WEBOOB_DIR}/modules"
|
|
[ -z "${PYTHONPATH}" ] && PYTHONPATH=""
|
|
|
|
# allow private environment setup
|
|
[ -f "${WEBOOB_WORKDIR}/pre-test.sh" ] && source "${WEBOOB_WORKDIR}/pre-test.sh"
|
|
|
|
# setup xunit reporting (buildbot slaves only)
|
|
if [ -n "${RSYNC_TARGET}" ]; then
|
|
# by default, builder name is containing directory name
|
|
[ -z "${BUILDER_NAME}" ] && BUILDER_NAME=$(basename $(readlink -e $(dirname $0)/../..))
|
|
else
|
|
RSYNC_TARGET=""
|
|
fi
|
|
|
|
# find executables
|
|
if [ -z "${PYTHON}" ]; then
|
|
which python >/dev/null 2>&1 && PYTHON=$(which python)
|
|
which python2 >/dev/null 2>&1 && PYTHON=$(which python2)
|
|
which python2.7 >/dev/null 2>&1 && PYTHON=$(which python2.7)
|
|
fi
|
|
|
|
if [ -z "${NOSE}" ]; then
|
|
which nosetests >/dev/null 2>&1 && NOSE=$(which nosetests)
|
|
which nosetests2 >/dev/null 2>&1 && NOSE=$(which nosetests2)
|
|
which nosetests-python2.7 >/dev/null 2>&1 && NOSE=$(which nosetests-python2.7)
|
|
fi
|
|
|
|
if [ -z "${PYTHON}" ]; then
|
|
echo "Python required"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "${NOSE}" ]; then
|
|
echo "python-nose required"
|
|
exit 1
|
|
fi
|
|
|
|
# do not allow undefined variables anymore
|
|
set -u
|
|
WEBOOB_TMPDIR=$(mktemp -d "${TMPDIR}/weboob_test.XXXXX")
|
|
cp "${WEBOOB_BACKENDS}" "${WEBOOB_TMPDIR}/backends"
|
|
|
|
# xunit nose setup
|
|
if [ -n "${RSYNC_TARGET}" ]; then
|
|
XUNIT_ARGS="--with-xunit --xunit-file=${WEBOOB_TMPDIR}/xunit.xml"
|
|
else
|
|
XUNIT_ARGS=""
|
|
fi
|
|
|
|
${PYTHON} "$(dirname $0)/stale_pyc.py"
|
|
|
|
echo "file://${WEBOOB_MODULES}" > "${WEBOOB_TMPDIR}/sources.list"
|
|
|
|
export WEBOOB_WORKDIR="${WEBOOB_TMPDIR}"
|
|
export PYTHONPATH="${WEBOOB_DIR}:${PYTHONPATH}"
|
|
export NOSE_NOPATH="1"
|
|
${PYTHON} "${WEBOOB_DIR}/scripts/weboob-config" update
|
|
|
|
# allow failing commands past this point
|
|
set +e
|
|
if [ -n "${BACKEND}" ]; then
|
|
${PYTHON} ${NOSE} -c /dev/null -sv "${WEBOOB_MODULES}/${BACKEND}/test.py" ${XUNIT_ARGS}
|
|
STATUS_CORE=0
|
|
else
|
|
echo "=== Weboob ==="
|
|
${PYTHON} ${NOSE} -c ${WEBOOB_DIR}/setup.cfg -sv
|
|
STATUS_CORE=$?
|
|
echo "=== Modules ==="
|
|
find "${WEBOOB_MODULES}" -name "test.py" | sort | xargs ${PYTHON} ${NOSE} -c /dev/null -sv ${XUNIT_ARGS}
|
|
fi
|
|
STATUS=$?
|
|
|
|
# xunit transfer
|
|
if [ -n "${RSYNC_TARGET}" ]; then
|
|
rsync -iz "${WEBOOB_TMPDIR}/xunit.xml" "${RSYNC_TARGET}/${BUILDER_NAME}-$(date +%s).xml"
|
|
rm "${WEBOOB_TMPDIR}/xunit.xml"
|
|
fi
|
|
|
|
# safe removal
|
|
rm -r "${WEBOOB_TMPDIR}/icons" "${WEBOOB_TMPDIR}/repositories" "${WEBOOB_TMPDIR}/modules" "${WEBOOB_TMPDIR}/keyrings"
|
|
rm "${WEBOOB_TMPDIR}/backends" "${WEBOOB_TMPDIR}/sources.list"
|
|
rmdir "${WEBOOB_TMPDIR}"
|
|
|
|
[ $STATUS_CORE -gt 0 ] && exit $STATUS_CORE
|
|
exit $STATUS
|