From 59efc1880b0cc36fce0411ad230edf1193dc54ef Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Tue, 28 Jul 2009 16:38:08 +0100 Subject: tools/tests: Add syntax check for different versions of python From: Andreas Florath Signed-off-by: Keir Fraser --- tools/tests/regression/Makefile | 83 ++++++++++++++++++++++ tools/tests/regression/README | 39 ++++++++++ tools/tests/regression/scripts/build_python.sh | 24 +++++++ .../regression/scripts/check_python_syntax.sh | 19 +++++ tools/tests/regression/scripts/download_python.sh | 12 ++++ 5 files changed, 177 insertions(+) create mode 100644 tools/tests/regression/Makefile create mode 100644 tools/tests/regression/README create mode 100644 tools/tests/regression/scripts/build_python.sh create mode 100644 tools/tests/regression/scripts/check_python_syntax.sh create mode 100644 tools/tests/regression/scripts/download_python.sh (limited to 'tools/tests') diff --git a/tools/tests/regression/Makefile b/tools/tests/regression/Makefile new file mode 100644 index 0000000000..fa0e062d3f --- /dev/null +++ b/tools/tests/regression/Makefile @@ -0,0 +1,83 @@ +# +# Sets up some regression applications +# Runs regression tests +# +# To run this, at least the basic build / development environment must +# be installed (gcc, ...) +# +XEN_ROOT=${PWD}/.. + +PYTHON_VERSIONS=python-2.3 python-2.4 python-2.5 python-2.6 python-3.1 + +.PHONY: all +all: check-python-syntax + +.PHONY: check-python-syntax +check-python-syntax: runtime-environment + @(set -e && for p in ${PYTHON_VERSIONS}; do \ + ${XEN_ROOT}/tests/scripts/check_python_syntax.sh ${XEN_ROOT} $$p; done) + +.PHONY: runtime-environment +runtime-environment: ${PYTHON_VERSIONS} + +.PHONY: dist-clean +dist-clean: + rm -fr ${XEN_ROOT}/tests/installed ${XEN_ROOT}/tests/downloads \ + ${XEN_ROOT}/tests/build + +### Python 2.3 + +.PHONY: python-2.3 +python-2.3: ${XEN_ROOT}/tests/installed/python-2.3/bin/python2.3 + +${XEN_ROOT}/tests/installed/python-2.3/bin/python2.3: \ + ${XEN_ROOT}/tests/downloads/Python-2.3.7.tgz + @${XEN_ROOT}/tests/scripts/build_python.sh ${XEN_ROOT} 2.3 2.3.7 +${XEN_ROOT}/tests/downloads/Python-2.3.7.tgz: + @${XEN_ROOT}/tests/scripts/download_python.sh ${XEN_ROOT} 2.3.7 + +### Python 2.4 + +.PHONY: python-2.4 +python-2.4: ${XEN_ROOT}/tests/installed/python-2.4/bin/python2.4 + +${XEN_ROOT}/tests/installed/python-2.4/bin/python2.4: \ + ${XEN_ROOT}/tests/downloads/Python-2.4.6.tgz + @${XEN_ROOT}/tests/scripts/build_python.sh ${XEN_ROOT} 2.4 2.4.6 +${XEN_ROOT}/tests/downloads/Python-2.4.6.tgz: + @${XEN_ROOT}/tests/scripts/download_python.sh ${XEN_ROOT} 2.4.6 + +### Python 2.5 + +.PHONY: python-2.5 +python-2.5: ${XEN_ROOT}/tests/installed/python-2.5/bin/python2.5 + +${XEN_ROOT}/tests/installed/python-2.5/bin/python2.5: \ + ${XEN_ROOT}/tests/downloads/Python-2.5.4.tgz + @${XEN_ROOT}/tests/scripts/build_python.sh ${XEN_ROOT} 2.5 2.5.4 +${XEN_ROOT}/tests/downloads/Python-2.5.4.tgz: + @${XEN_ROOT}/tests/scripts/download_python.sh ${XEN_ROOT} 2.5.4 + +### Python 2.6 + +.PHONY: python-2.6 +python-2.6: ${XEN_ROOT}/tests/installed/python-2.6/bin/python2.6 + +${XEN_ROOT}/tests/installed/python-2.6/bin/python2.6: \ + ${XEN_ROOT}/tests/downloads/Python-2.6.2.tgz + @${XEN_ROOT}/tests/scripts/build_python.sh ${XEN_ROOT} 2.6 2.6.2 +${XEN_ROOT}/tests/downloads/Python-2.6.2.tgz: + @${XEN_ROOT}/tests/scripts/download_python.sh ${XEN_ROOT} 2.6.2 + +### Python 3.0.1 has reached end of life and is not (longer) supported + +### Python 3.1 + +.PHONY: python-3.1 +python-3.1: ${XEN_ROOT}/tests/installed/python-3.1/bin/python3.1 + +${XEN_ROOT}/tests/installed/python-3.1/bin/python3.1: \ + ${XEN_ROOT}/tests/downloads/Python-3.1.tgz + @${XEN_ROOT}/tests/scripts/build_python.sh ${XEN_ROOT} 3.1 3.1 +${XEN_ROOT}/tests/downloads/Python-3.1.tgz: + @${XEN_ROOT}/tests/scripts/download_python.sh ${XEN_ROOT} 3.1 diff --git a/tools/tests/regression/README b/tools/tests/regression/README new file mode 100644 index 0000000000..06b26b0350 --- /dev/null +++ b/tools/tests/regression/README @@ -0,0 +1,39 @@ + +Regression Test Environment for Xen +------------------------------------- + +This is an initial regression tool environment for Xen. + +With the help of the Makefile, it is possible to compile a couple of +different python versions and check all .py files against all verions +for syntax errors. Note that due to the dynmic of python not all +syntax errors might be detected. + +Currently the following versions of python are supported: +2.3.7 2.4.6 2.5.4 2.6.2 3.1 + + +Usage +----- + +To download all supported versions of python, compile them, install +them and run a basic syntax check, run + +$ make + +(The download and compilation of python is only done if not already +available.) + +To delete all automatically build files: + +$ make dist-clean + + + +Runing unittests with a specific version +---------------------------------------- + +This does not work at the moment, because a lot of additional python +packages are needed for this (which are currently not automatically +build). + diff --git a/tools/tests/regression/scripts/build_python.sh b/tools/tests/regression/scripts/build_python.sh new file mode 100644 index 0000000000..b9b6f9ff14 --- /dev/null +++ b/tools/tests/regression/scripts/build_python.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# +# This script builds python in the dir +# installed/python-${DEST} from package downloads/Python-{PKG_VERS}.tgz +# + +set -e + +XEN_ROOT=$1 +DEST=$2 +PKG_VERS=$3 + +SUB_MAKES_MINUS_J=-j4 + +BUILD_DIR=${XEN_ROOT}/tests/build + +mkdir -p ${BUILD_DIR} +(cd ${BUILD_DIR} && tar -xf ${XEN_ROOT}/tests/downloads/Python-$PKG_VERS.tgz) +(cd ${BUILD_DIR}/Python-$PKG_VERS && + ./configure --enable-shared --enable-ipv6 --without-cxx \ + --with-threads --prefix=${XEN_ROOT}/tests/installed/python-$DEST && +make ${SUB_MAKES_MINUS_J} && +make install) +rm -fr ${BUILD_DIR}/Python-$PKG_VERS diff --git a/tools/tests/regression/scripts/check_python_syntax.sh b/tools/tests/regression/scripts/check_python_syntax.sh new file mode 100644 index 0000000000..8f7ce4e872 --- /dev/null +++ b/tools/tests/regression/scripts/check_python_syntax.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# +# Checks the syntax of all .py files +# (compiles them into .pyc files) +# + +XEN_ROOT=$1 +p=$2 + +echo "Syntax check for $p" +PYTHON_EXECUTABLE=`echo $p | tr -d "-"` +export LD_LIBRARY_PATH=${XEN_ROOT}/tests/installed/$p/lib +export PATH=${XEN_ROOT}/tests/installed/$p/bin:$PATH +# -m is available starting with python 2.4 +# When support for 2.3 (and earlier) is dropped, +# the following line will do. +# ${PYTHON_EXECUTABLE} -m compileall -f -q -x ".*\.hg.*|^\.\./tests/installed.*" .. +${PYTHON_EXECUTABLE} ${XEN_ROOT}/tests/installed/$p/lib/${PYTHON_EXECUTABLE}/compileall.py -f -q -x ".*\.hg.*|.*/tests/installed.*" .. +exit $? diff --git a/tools/tests/regression/scripts/download_python.sh b/tools/tests/regression/scripts/download_python.sh new file mode 100644 index 0000000000..6329dba4c1 --- /dev/null +++ b/tools/tests/regression/scripts/download_python.sh @@ -0,0 +1,12 @@ +#!/bin/bash +# +# Downloads python with version $1 and stores in into the downloads dir. +# + +set -e + +XEN_ROOT=$1 +VERSION=$2 + +mkdir -p ${XEN_ROOT}/tests/downloads +wget -q -O ${XEN_ROOT}/tests/downloads/Python-${VERSION}.tgz http://www.python.org/ftp/python/${VERSION}/Python-${VERSION}.tgz -- cgit v1.2.3