Permalink
Browse files

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
  • Loading branch information...
Maru Newby
Maru Newby committed Jan 31, 2012
1 parent ad6684a commit e6ea310751b58be0ad1d06d8acffc2b8fff8e5a3
Showing with 98 additions and 5 deletions.
  1. +2 −2 .functests
  2. +1 −0 .gitignore
  3. +1 −1 .probetests
  4. +1 −1 .unittests
  5. +26 −0 doc/source/development_guidelines.rst
  6. +2 −0 doc/source/development_saio.rst
  7. +10 −0 setup.cfg
  8. +1 −1 swift/common/middleware/formpost.py
  9. +8 −0 tools/pip-requires
  10. +5 −0 tools/test-requires
  11. +41 −0 tox.ini
View
@@ -1,4 +1,4 @@
#!/bin/bash
nosetests test/functional --exe $@
nosetests test/functionalnosetests --exe $@
nosetests test/functional $@
nosetests test/functionalnosetests $@
View
@@ -6,3 +6,4 @@ ChangeLog
.coverage
swift.egg-info
.DS_Store
.tox
View
@@ -1,3 +1,3 @@
#!/bin/bash
nosetests test/probe --exe
nosetests test/probe
View
@@ -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
@@ -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
------------------------
@@ -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
@@ -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
@@ -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
View
@@ -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
View
@@ -0,0 +1,5 @@
coverage
nose
nosexcover
openstack.nose_plugin
pep8==0.6.1
View
41 tox.ini
@@ -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

0 comments on commit e6ea310

Please sign in to comment.