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:
parent
ad6684a00f
commit
e6ea310751
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
nosetests test/functional --exe $@
|
nosetests test/functional $@
|
||||||
nosetests test/functionalnosetests --exe $@
|
nosetests test/functionalnosetests $@
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -6,3 +6,4 @@ ChangeLog
|
|||||||
.coverage
|
.coverage
|
||||||
swift.egg-info
|
swift.egg-info
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
.tox
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
nosetests test/probe --exe
|
nosetests test/probe
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/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
|
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
|
There is a useful pep8 command line tool for checking files for pep8
|
||||||
compliance which can be installed with ``easy_install 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
|
Documentation Guidelines
|
||||||
------------------------
|
------------------------
|
||||||
|
@ -32,6 +32,7 @@ Installing dependencies and the core code
|
|||||||
python-coverage python-dev python-nose python-setuptools python-simplejson
|
python-coverage python-dev python-nose python-setuptools python-simplejson
|
||||||
python-xattr sqlite3 xfsprogs python-webob python-eventlet
|
python-xattr sqlite3 xfsprogs python-webob python-eventlet
|
||||||
python-greenlet python-pastedeploy python-netifaces`
|
python-greenlet python-pastedeploy python-netifaces`
|
||||||
|
#. `pip install openstack.nose_plugin`
|
||||||
#. Install anything else you want, like screen, ssh, vim, etc.
|
#. Install anything else you want, like screen, ssh, vim, etc.
|
||||||
|
|
||||||
* On Fedora, log in as root and do:
|
* On Fedora, log in as root and do:
|
||||||
@ -41,6 +42,7 @@ Installing dependencies and the core code
|
|||||||
#. `yum install xinetd rsync`
|
#. `yum install xinetd rsync`
|
||||||
#. `yum install memcached`
|
#. `yum install memcached`
|
||||||
#. `yum install python-netifaces python-nose`
|
#. `yum install python-netifaces python-nose`
|
||||||
|
#. `pip install openstack.nose_plugin`
|
||||||
|
|
||||||
This installs all necessary dependencies, and also creates user `swift`
|
This installs all necessary dependencies, and also creates user `swift`
|
||||||
and group `swift`. So, `swift:swift` ought to be used in every place where
|
and group `swift`. So, `swift:swift` ought to be used in every place where
|
||||||
|
10
setup.cfg
10
setup.cfg
@ -21,3 +21,13 @@ input_file = locale/swift.pot
|
|||||||
keywords = _ l_ lazy_gettext
|
keywords = _ l_ lazy_gettext
|
||||||
mapping_file = babel.cfg
|
mapping_file = babel.cfg
|
||||||
output_file = locale/swift.pot
|
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
|
||||||
|
8
tools/pip-requires
Normal file
8
tools/pip-requires
Normal 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
5
tools/test-requires
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
coverage
|
||||||
|
nose
|
||||||
|
nosexcover
|
||||||
|
openstack.nose_plugin
|
||||||
|
pep8==0.6.1
|
41
tox.ini
Normal file
41
tox.ini
Normal 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
|
Loading…
x
Reference in New Issue
Block a user