Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
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 committed Mar 8, 2012
1 parent ad6684a commit e6ea310
Show file tree
Hide file tree
Showing 11 changed files with 98 additions and 5 deletions.
4 changes: 2 additions & 2 deletions .functests
@@ -1,4 +1,4 @@
#!/bin/bash

nosetests test/functional --exe $@
nosetests test/functionalnosetests --exe $@
nosetests test/functional $@
nosetests test/functionalnosetests $@
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -6,3 +6,4 @@ ChangeLog
.coverage
swift.egg-info
.DS_Store
.tox
2 changes: 1 addition & 1 deletion .probetests
@@ -1,3 +1,3 @@
#!/bin/bash

nosetests test/probe --exe
nosetests test/probe
2 changes: 1 addition & 1 deletion .unittests
@@ -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
26 changes: 26 additions & 0 deletions doc/source/development_guidelines.rst
Expand Up @@ -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
------------------------
Expand Down
2 changes: 2 additions & 0 deletions doc/source/development_saio.rst
Expand Up @@ -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:
Expand All @@ -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
Expand Down
10 changes: 10 additions & 0 deletions setup.cfg
Expand Up @@ -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
2 changes: 1 addition & 1 deletion swift/common/middleware/formpost.py
Expand Up @@ -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
Expand Down
8 changes: 8 additions & 0 deletions tools/pip-requires
@@ -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 changes: 5 additions & 0 deletions tools/test-requires
@@ -0,0 +1,5 @@
coverage
nose
nosexcover
openstack.nose_plugin
pep8==0.6.1
41 changes: 41 additions & 0 deletions 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.