Add support for venv-based test run with tox.

* Adds tox config
   - based on the config from python-quantumclient and updated for
     test, pep8 and coverage execution as per nova's run_tests.sh.
 * Adds nosetests defaults in setup.cfg
 * Adds runtime dependencies in tools/pip-requires
   - dependencies were gathered by referencing the packages used in
     creation of a Swift All In One.  Versions were determined by
     checking the swift-core/trunk ppa or, failing that, the version
     available in lucid.
 * Adds test dependencies in tools/test-requires
 * Updates swift/common/middleware/formpost.py for pep8 compliance
 * Adds instructions for executing the tests with Tox to the
   developer_guidelines
 * Adds instructions for installing openstack.nose_plugin to
   developer_saio
 * Fixes bug 909177

Change-Id: I5407924d2181e9ab335aaf76bf30c8d40deccbb4
This commit is contained in:
Maru Newby 2012-01-31 15:27:29 -08:00
parent ad6684a00f
commit e6ea310751
11 changed files with 98 additions and 5 deletions

View File

@ -1,4 +1,4 @@
#!/bin/bash
nosetests test/functional --exe $@
nosetests test/functionalnosetests --exe $@
nosetests test/functional $@
nosetests test/functionalnosetests $@

1
.gitignore vendored
View File

@ -6,3 +6,4 @@ ChangeLog
.coverage
swift.egg-info
.DS_Store
.tox

View File

@ -1,3 +1,3 @@
#!/bin/bash
nosetests test/probe --exe
nosetests test/probe

View File

@ -1,4 +1,4 @@
#!/bin/bash
nosetests test/unit --exe --with-coverage --cover-package swift --cover-erase $@
nosetests test/unit --with-coverage --cover-package swift --cover-erase $@
rm -f .coverage

View File

@ -12,6 +12,32 @@ here: http://www.python.org/dev/peps/pep-0008/
There is a useful pep8 command line tool for checking files for pep8
compliance which can be installed with ``easy_install pep8``.
------------------
Testing Guidelines
------------------
Swift has a comprehensive suite of tests that are run on all submitted code,
and it is recommended that developers execute the tests themselves to
catch regressions early. Developers are also expected to keep the
test suite up-to-date with any submitted code changes.
Swift's suite of unit tests can be executed in an isolated environment
with Tox: http://tox.testrun.org/
To execute the unit tests:
* Install Tox:
- `pip install tox`
* Run Tox from the root of the swift repo:
- `tox`
* Optionally, run only specific tox builds:
- `tox -e pep8,py26`
------------------------
Documentation Guidelines
------------------------

View File

@ -32,6 +32,7 @@ Installing dependencies and the core code
python-coverage python-dev python-nose python-setuptools python-simplejson
python-xattr sqlite3 xfsprogs python-webob python-eventlet
python-greenlet python-pastedeploy python-netifaces`
#. `pip install openstack.nose_plugin`
#. Install anything else you want, like screen, ssh, vim, etc.
* On Fedora, log in as root and do:
@ -41,6 +42,7 @@ Installing dependencies and the core code
#. `yum install xinetd rsync`
#. `yum install memcached`
#. `yum install python-netifaces python-nose`
#. `pip install openstack.nose_plugin`
This installs all necessary dependencies, and also creates user `swift`
and group `swift`. So, `swift:swift` ought to be used in every place where

View File

@ -21,3 +21,13 @@ input_file = locale/swift.pot
keywords = _ l_ lazy_gettext
mapping_file = babel.cfg
output_file = locale/swift.pot
[nosetests]
exe=1
verbosity=2
detailed-errors=1
with-openstack=1
openstack-red=0.05
openstack-yellow=0.025
openstack-show-elapsed=1
openstack-color=1

View File

@ -258,7 +258,7 @@ class _CappedFileLikeObject(object):
EOFError.
"""
def __init__(self, fp, max_file_size):
def __init__(self, fp, max_file_size):
self.fp = fp
self.max_file_size = max_file_size
self.amount_read = 0

8
tools/pip-requires Normal file
View File

@ -0,0 +1,8 @@
WebOb==1.0.8
configobj==4.7.1
eventlet==0.9.15
greenlet==0.3.1
netifaces==0.6
pastedeploy==1.3.3
simplejson==2.0.9
xattr==0.4

5
tools/test-requires Normal file
View File

@ -0,0 +1,5 @@
coverage
nose
nosexcover
openstack.nose_plugin
pep8==0.6.1

41
tox.ini Normal file
View File

@ -0,0 +1,41 @@
[tox]
envlist = py26,py27,pep8
[testenv]
deps =
-r{toxinidir}/tools/pip-requires
-r{toxinidir}/tools/test-requires
commands = nosetests test/unit []
[testenv:pep8]
deps = pep8==0.6.1
commands =
pep8 --repeat --show-pep8 --show-source --ignore=W602 swift tools setup.py
[testenv:cover]
commands =
coverage erase
nosetests test/unit --with-coverage --cover-html --cover-erase \
--cover-package=swift
/bin/rm -f .coverage
[testenv:hudson]
downloadcache = ~/cache/pip
[testenv:jenkins26]
basepython = python2.6
deps = file://{toxinidir}/.cache.bundle
[testenv:jenkins27]
basepython = python2.7
deps = file://{toxinidir}/.cache.bundle
[testenv:jenkinspep8]
deps = file://{toxinidir}/.cache.bundle
commands =
pep8 --repeat --show-pep8 --show-source --ignore=W602 swift tools setup.py
[testenv:jenkinscover]
deps = file://{toxinidir}/.cache.bundle
commands =
nosetests test/unit --with-xcoverage --cover-erase --cover-package=swift