Merge pull request #1071 from kaedroho/tests-changes

Tests changes
This commit is contained in:
Karl Hobley 2015-03-19 13:38:38 +00:00
commit b8f8b1082a
5 changed files with 74 additions and 21 deletions

View file

@ -1,11 +0,0 @@
image: kaedroho/django-base
env:
- DATABASE_HOST=postgres
- ELASTICSEARCH_URL=http://elasticsearch:9200/
script:
- pip3.4 install mock python-dateutil pytz elasticsearch
- python3.4 setup.py install
- python3.4 runtests.py
services:
- postgres
- dockerfile/elasticsearch

2
.gitignore vendored
View file

@ -1,3 +1,4 @@
*.swp
*.pyc
.DS_Store
/.coverage
@ -6,3 +7,4 @@
/wagtail.egg-info/
/docs/_build/
/.tox/
/venv

View file

@ -18,6 +18,70 @@ Coding guidelines
* Python 2 and 3 compatibility. All contributions should support Python 2 and 3 and we recommend using the `six <https://pythonhosted.org/six/>`_ compatibility library (use the pip version installed as a dependency, not the version bundled with Django).
* Tests. Wagtail has a suite of tests, which we are committed to improving and expanding. We run continuous integration at `travis-ci.org/torchbox/wagtail <https://travis-ci.org/torchbox/wagtail>`_ to ensure that no commits or pull requests introduce test failures. If your contributions add functionality to Wagtail, please include the additional tests to cover it; if your contributions alter existing functionality, please update the relevant tests accordingly.
Running the unit tests
~~~~~~~~~~~~~~~~~~~~~~
In order to run Wagtail's test suite, you will need to install some dependencies first. We recommend installing these into a virtual environment.
**Setting up the virtual environment**
If you are using Python 3.3 or above, run the following commands in your shell
at the root of the Wagtail repo::
pyvenv venv
source venv/bin/activate
python setup.py develop
pip install -r requirements-dev.txt
For Python 2, you will need to install the ``virtualenv`` package and replace
the first line above with:
virtualenv venv
**Running the tests**
With your virtual environment active, run the following command to run all the
tests::
python runtests.py
**Running only some of the tests**
At the time of writing, Wagtail has nearly 1000 tests which takes a while to
run. You can run tests for only one part of Wagtail by passing in the path as
an argument to ``runtests.py``::
python runtests.py wagtail.wagtailcore
**Testing against PostgreSQL**
By default, Wagtail tests against SQLite. If you need to test against a
different database, set the ``DATABASE_ENGINE`` environment variable to the
name of the Django database backend to test against::
DATABASE_ENGINE=django.db.backends.postgresql_psycopg2 python runtests.py
This will create a new database called ``test_wagtail`` in PostgreSQL and run
the tests against it.
If you need to use a different user, password or host. Use the ``PGUSER``, ``PGPASSWORD`` and ``PGHOST`` environment variables.
**Testing Elasticsearch**
To test Elasticsearch, you need to have the ``elasticsearch`` package installed.
Once installed, Wagtail will attempt to connect to a local instance of
Elasticsearch (``http://localhost:9200``) and use the index ``test_wagtail``.
If your Elasticsearch instance is located somewhere else, you can set the
``ELASTICSEARCH_URL`` environment variable to point to its location::
ELASTICSEARCH_URL=http://my-elasticsearch-instance:9200 python runtests.py
If you no longer want Wagtail to test against Elasticsearch, uninstall the
``elasticsearch`` package.
Styleguide
~~~~~~~~~~

View file

@ -1,6 +1,9 @@
# For coverage and PEP8 linting
coverage>=3.7.0
flake8>=2.2.0
# Required for running the tests
mock>=1.0.0
python-dateutil>=2.2
pytz>=2014.7
Pillow>=2.7.0
# For coverage and PEP8 linting
coverage>=3.7.0
flake8>=2.2.0

View file

@ -11,13 +11,8 @@ MEDIA_URL = '/media/'
DATABASES = {
'default': {
'ENGINE': os.environ.get('DATABASE_ENGINE', 'django.db.backends.postgresql_psycopg2'),
'NAME': os.environ.get('DATABASE_NAME', 'wagtaildemo'),
'TEST_NAME': os.environ.get('DATABASE_NAME', 'test_wagtaildemo'),
'USER': os.environ.get('DATABASE_USER', 'postgres'),
'PASSWORD': os.environ.get('DATABASE_PASS', None),
'HOST': os.environ.get('DATABASE_HOST', None),
'PORT': os.environ.get('DATABASE_PORT', None),
'ENGINE': os.environ.get('DATABASE_ENGINE', 'django.db.backends.sqlite3'),
'NAME': os.environ.get('DATABASE_NAME', 'wagtail'),
}
}