Merge pull request #960 from noirbizarre/tox

Tox support for cross-versions testing
This commit is contained in:
Matthew Ellison 2015-04-28 20:29:23 -04:00
commit 42ba4a5c56
6 changed files with 52 additions and 41 deletions

View File

@ -8,20 +8,11 @@ python:
- pypy - pypy
- pypy3 - pypy3
env: env:
- PYMONGO=2.7.2 - PYMONGO=2.7
- PYMONGO=2.8 - PYMONGO=2.8
# - PYMONGO=3.0
# - PYMONGO=dev
matrix: matrix:
exclude:
- python: '2.6'
env: PYMONGO=2.7.2
- python: '2.6'
env: PYMONGO=2.8
- python: '2.6'
env: PYMONGO=2.7.2
- python: '2.6'
env: PYMONGO=2.8
allow_failures:
- python: pypy3
fast_finish: true fast_finish: true
before_install: before_install:
- travis_retry sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 - travis_retry sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
@ -33,19 +24,10 @@ install:
- sudo apt-get install python-dev python3-dev libopenjpeg-dev zlib1g-dev libjpeg-turbo8-dev - sudo apt-get install python-dev python3-dev libopenjpeg-dev zlib1g-dev libjpeg-turbo8-dev
libtiff4-dev libjpeg8-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.5-dev tk8.5-dev libtiff4-dev libjpeg8-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.5-dev tk8.5-dev
python-tk python-tk
- if [[ $PYMONGO == 'dev' ]]; then travis_retry pip install https://github.com/mongodb/mongo-python-driver/tarball/master; - travis_retry pip install tox>=1.9 coveralls
true; fi - travis_retry tox -e $(echo py$TRAVIS_PYTHON_VERSION-mg$PYMONGO | tr -d . | sed -e 's/pypypy/pypy/') -- -e test
- if [[ $PYMONGO != 'dev' ]]; then travis_retry pip install pymongo==$PYMONGO; true;
fi
- travis_retry pip install https://pypi.python.org/packages/source/p/python-dateutil/python-dateutil-2.1.tar.gz#md5=1534bb15cf311f07afaa3aacba1c028b
- travis_retry pip install coveralls
- travis_retry python setup.py install
script: script:
- travis_retry python setup.py test - tox -e $(echo py$TRAVIS_PYTHON_VERSION-mg$PYMONGO | tr -d . | sed -e 's/pypypy/pypy/') -- --with-coverage
- if [[ $TRAVIS_PYTHON_VERSION == '3.'* ]]; then 2to3 . -w; fi;
- coverage run --source=mongoengine setup.py test
- coverage report -m
- python benchmark.py
after_script: coveralls --verbose after_script: coveralls --verbose
notifications: notifications:
irc: irc.freenode.org#mongoengine irc: irc.freenode.org#mongoengine

View File

@ -44,8 +44,10 @@ General Guidelines
- Avoid backward breaking changes if at all possible. - Avoid backward breaking changes if at all possible.
- Write inline documentation for new classes and methods. - Write inline documentation for new classes and methods.
- Write tests and make sure they pass (make sure you have a mongod - Write tests and make sure they pass (make sure you have a mongod
running on the default port, then execute ``python setup.py test`` running on the default port, then execute ``python setup.py nosetests``
from the cmd line to run the test suite). from the cmd line to run the test suite).
- Ensure tests pass on every Python and PyMongo versions.
You can test on these versions locally by executing ``tox``
- Add yourself to AUTHORS :) - Add yourself to AUTHORS :)
Documentation Documentation

View File

@ -8,10 +8,10 @@ MongoEngine
.. image:: https://secure.travis-ci.org/MongoEngine/mongoengine.png?branch=master .. image:: https://secure.travis-ci.org/MongoEngine/mongoengine.png?branch=master
:target: http://travis-ci.org/MongoEngine/mongoengine :target: http://travis-ci.org/MongoEngine/mongoengine
.. image:: https://coveralls.io/repos/MongoEngine/mongoengine/badge.png?branch=master .. image:: https://coveralls.io/repos/MongoEngine/mongoengine/badge.png?branch=master
:target: https://coveralls.io/r/MongoEngine/mongoengine?branch=master :target: https://coveralls.io/r/MongoEngine/mongoengine?branch=master
.. image:: https://landscape.io/github/MongoEngine/mongoengine/master/landscape.png .. image:: https://landscape.io/github/MongoEngine/mongoengine/master/landscape.png
:target: https://landscape.io/github/MongoEngine/mongoengine/master :target: https://landscape.io/github/MongoEngine/mongoengine/master
:alt: Code Health :alt: Code Health
@ -38,12 +38,11 @@ Dependencies
Optional Dependencies Optional Dependencies
--------------------- ---------------------
- **Django Integration:** Django>=1.4.0 for Python 2.x or PyPy and Django>=1.5.0 for Python 3.x
- **Image Fields**: Pillow>=2.0.0 - **Image Fields**: Pillow>=2.0.0
- dateutil>=2.1.0 - dateutil>=2.1.0
.. note .. note
MongoEngine always runs it's test suite against the latest patch version of each dependecy. e.g.: Django 1.6.5 MongoEngine always runs it's test suite against the latest patch version of each dependecy. e.g.: PyMongo 3.0.1
Examples Examples
======== ========
@ -96,7 +95,26 @@ Some simple examples of what MongoEngine code looks like::
Tests Tests
===== =====
To run the test suite, ensure you are running a local instance of MongoDB on To run the test suite, ensure you are running a local instance of MongoDB on
the standard port, and run: ``python setup.py test``. the standard port, and run: ``python setup.py nosetests``.
To run the test suite on every supported Python version and every supported PyMongo version,
you can use ``tox``.
tox and each supported Python version should be installed in your environment:
.. code-block:: shell
# Install tox
$ pip install tox
# Run the test suites
$ tox
If you wish to run one single or selected tests, use the nosetest convention. It will find the folder,
eventually the file, go to the TestClass specified after the colon and eventually right to the single test.
Also use the -s argument if you want to print out whatever or access pdb while testing.
.. code-block:: shell
$ python setup.py nosetests --tests tests/test_django.py:QuerySetTest.test_get_document_or_404 -s
Community Community
========= =========

View File

@ -1,11 +1,8 @@
[nosetests] [nosetests]
verbosity = 3 rednose = 1
verbosity = 2
detailed-errors = 1 detailed-errors = 1
#with-coverage = 1 cover-erase = 1
#cover-erase = 1 cover-branches = 1
#cover-html = 1 cover-package = mongoengine
#cover-html-dir = ../htmlcov tests = tests
#cover-package = mongoengine
py3where = build
where = tests
#tests = document/__init__.py

View File

@ -29,7 +29,6 @@ init = os.path.join(os.path.dirname(__file__), 'mongoengine', '__init__.py')
version_line = list(filter(lambda l: l.startswith('VERSION'), open(init)))[0] version_line = list(filter(lambda l: l.startswith('VERSION'), open(init)))[0]
VERSION = get_version(eval(version_line.split('=')[-1])) VERSION = get_version(eval(version_line.split('=')[-1]))
print(VERSION)
CLASSIFIERS = [ CLASSIFIERS = [
'Development Status :: 4 - Beta', 'Development Status :: 4 - Beta',
@ -79,5 +78,6 @@ setup(name='mongoengine',
classifiers=CLASSIFIERS, classifiers=CLASSIFIERS,
install_requires=['pymongo>=2.7.1'], install_requires=['pymongo>=2.7.1'],
test_suite='nose.collector', test_suite='nose.collector',
setup_requires=['nose', 'rednose'], # Allow proper nose usage with setuptols and tox
**extra_opts **extra_opts
) )

12
tox.ini Normal file
View File

@ -0,0 +1,12 @@
[tox]
envlist = {py26,py27,py32,py33,py34,pypy,pypy3}-{mg27,mg28}
#envlist = {py26,py27,py32,py33,py34,pypy,pypy3}-{mg27,mg28,mg30,mgdev}
[testenv]
commands =
python setup.py nosetests {posargs}
deps =
mg27: PyMongo<2.8
mg28: PyMongo>=2.8,<3.0
mg30: PyMongo>=3.0
mgdev: https://github.com/mongodb/mongo-python-driver/tarball/master