aboutsummaryrefslogtreecommitdiffstats
path: root/tools/tests
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-07-28 16:38:08 +0100
committerKeir Fraser <keir.fraser@citrix.com>2009-07-28 16:38:08 +0100
commit59efc1880b0cc36fce0411ad230edf1193dc54ef (patch)
tree283a4a2524f9e72bee7256ae305b7902b6ac6e75 /tools/tests
parentd7de9aa5e814fd7bab0849af17f3fe3a888203bc (diff)
downloadxen-59efc1880b0cc36fce0411ad230edf1193dc54ef.tar.gz
xen-59efc1880b0cc36fce0411ad230edf1193dc54ef.tar.bz2
xen-59efc1880b0cc36fce0411ad230edf1193dc54ef.zip
tools/tests: Add syntax check for different versions of python
From: Andreas Florath <xen@flonatel.org> Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'tools/tests')
-rw-r--r--tools/tests/regression/Makefile83
-rw-r--r--tools/tests/regression/README39
-rw-r--r--tools/tests/regression/scripts/build_python.sh24
-rw-r--r--tools/tests/regression/scripts/check_python_syntax.sh19
-rw-r--r--tools/tests/regression/scripts/download_python.sh12
5 files changed, 177 insertions, 0 deletions
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