add integration test script from pbr
the integration test script shouldn't be in pbr, it should be in requirements repo. Start the move process by copying this over now. Change-Id: I5795c6fe6af49eab3b028472dce800b73012d491
This commit is contained in:
parent
4b76258faa
commit
8e073738db
152
tools/integration.sh
Normal file
152
tools/integration.sh
Normal file
@ -0,0 +1,152 @@
|
||||
#!/bin/bash -xe
|
||||
|
||||
function mkvenv {
|
||||
venv=$1
|
||||
|
||||
rm -rf $venv
|
||||
virtualenv $venv
|
||||
$venv/bin/pip install -U pip wheel
|
||||
}
|
||||
|
||||
# BASE should be a directory with a subdir called "new" and in that
|
||||
# dir, there should be a git repository for every entry in PROJECTS
|
||||
BASE=${BASE:-/opt/stack}
|
||||
|
||||
REPODIR=${REPODIR:-$BASE/new}
|
||||
|
||||
# TODO: Figure out how to get this on to the box properly
|
||||
sudo apt-get install -y --force-yes libxml2-dev libxslt-dev libmysqlclient-dev libpq-dev libnspr4-dev pkg-config libsqlite3-dev libzmq-dev libffi-dev libldap2-dev libsasl2-dev ccache
|
||||
|
||||
# FOR numpy / pyyaml
|
||||
sudo apt-get build-dep -y --force-yes python-numpy
|
||||
sudo apt-get build-dep -y --force-yes python-yaml
|
||||
|
||||
# And use ccache explitly
|
||||
export PATH=/usr/lib/ccache:$PATH
|
||||
|
||||
tmpdir=$(mktemp -d)
|
||||
|
||||
#BRANCH
|
||||
BRANCH=${OVERRIDE_ZUUL_BRANCH=:-master}
|
||||
# PROJECTS is a list of projects that we're testing
|
||||
PROJECTS=$*
|
||||
|
||||
pbrsdistdir=$tmpdir/pbrsdist
|
||||
git clone $REPODIR/pbr $pbrsdistdir
|
||||
cd $pbrsdistdir
|
||||
|
||||
eptest=$tmpdir/eptest
|
||||
mkdir $eptest
|
||||
cd $eptest
|
||||
|
||||
cat <<EOF > setup.cfg
|
||||
[metadata]
|
||||
name = test_project
|
||||
|
||||
[entry_points]
|
||||
console_scripts =
|
||||
test_cmd = test_project:main
|
||||
|
||||
[global]
|
||||
setup-hooks =
|
||||
pbr.hooks.setup_hook
|
||||
EOF
|
||||
|
||||
cat <<EOF > setup.py
|
||||
import setuptools
|
||||
|
||||
setuptools.setup(
|
||||
setup_requires=['pbr'],
|
||||
pbr=True)
|
||||
EOF
|
||||
|
||||
mkdir test_project
|
||||
cat <<EOF > test_project/__init__.py
|
||||
def main():
|
||||
print "Test cmd"
|
||||
EOF
|
||||
|
||||
epvenv=$eptest/venv
|
||||
mkvenv $epvenv
|
||||
|
||||
eppbrdir=$tmpdir/eppbrdir
|
||||
git clone $REPODIR/pbr $eppbrdir
|
||||
$epvenv/bin/pip install -e $eppbrdir
|
||||
|
||||
PBR_VERSION=0.0 $epvenv/bin/python setup.py install
|
||||
cat $epvenv/bin/test_cmd
|
||||
grep 'PBR Generated' $epvenv/bin/test_cmd
|
||||
$epvenv/bin/test_cmd | grep 'Test cmd'
|
||||
|
||||
projectdir=$tmpdir/projects
|
||||
mkdir -p $projectdir
|
||||
|
||||
for PROJECT in $PROJECTS ; do
|
||||
SHORT_PROJECT=$(basename $PROJECT)
|
||||
if ! grep 'pbr' $REPODIR/$SHORT_PROJECT/setup.py >/dev/null 2>&1
|
||||
then
|
||||
# project doesn't use pbr
|
||||
continue
|
||||
fi
|
||||
if [ $SHORT_PROJECT = 'pypi-mirror' ]; then
|
||||
# pypi-mirror doesn't consume the mirror
|
||||
continue
|
||||
fi
|
||||
if [ $SHORT_PROJECT = 'jeepyb' ]; then
|
||||
# pypi-mirror doesn't consume the mirror
|
||||
continue
|
||||
fi
|
||||
if [ $SHORT_PROJECT = 'tempest' ]; then
|
||||
# Tempest doesn't really install
|
||||
continue
|
||||
fi
|
||||
if [ $SHORT_PROJECT = 'requirements' ]; then
|
||||
# requirements doesn't really install
|
||||
continue
|
||||
fi
|
||||
|
||||
# set up the project synced with the global requirements
|
||||
sudo chown -R $USER $REPODIR/$SHORT_PROJECT
|
||||
(cd $REPODIR/requirements && python update.py $REPODIR/$SHORT_PROJECT)
|
||||
pushd $REPODIR/$SHORT_PROJECT
|
||||
if ! git diff --quiet ; then
|
||||
git commit -a -m'Update requirements'
|
||||
fi
|
||||
popd
|
||||
|
||||
# Clone from synced repo
|
||||
shortprojectdir=$projectdir/$SHORT_PROJECT
|
||||
git clone $REPODIR/$SHORT_PROJECT $shortprojectdir
|
||||
|
||||
# Test that we can make a tarball from scratch
|
||||
sdistvenv=$tmpdir/sdist
|
||||
mkvenv $sdistvenv
|
||||
cd $shortprojectdir
|
||||
$sdistvenv/bin/python setup.py sdist
|
||||
|
||||
cd $tmpdir
|
||||
|
||||
# Test that the tarball installs
|
||||
tarballvenv=$tmpdir/tarball
|
||||
mkvenv $tarballvenv
|
||||
$tarballvenv/bin/pip install $shortprojectdir/dist/*tar.gz
|
||||
|
||||
# Test pip installing
|
||||
pipvenv=$tmpdir/pip
|
||||
mkvenv $pipvenv
|
||||
$pipvenv/bin/pip install git+file://$shortprojectdir
|
||||
|
||||
# Test python setup.py install
|
||||
installvenv=$tmpdir/install
|
||||
mkvenv $installvenv
|
||||
|
||||
installprojectdir=$projectdir/install$SHORT_PROJECT
|
||||
git clone $shortprojectdir $installprojectdir
|
||||
cd $installprojectdir
|
||||
$installvenv/bin/python setup.py install
|
||||
|
||||
# Ensure the install_package_data is doing the thing it should do
|
||||
if [ $SHORT_PROJECT = 'nova' ]; then
|
||||
find $installvenv | grep migrate.cfg
|
||||
fi
|
||||
done
|
Loading…
x
Reference in New Issue
Block a user