diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index c9af87684..000000000 --- a/.drone.yml +++ /dev/null @@ -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 diff --git a/.gitignore b/.gitignore index bd904efc9..c8ceb2743 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +*.swp *.pyc .DS_Store /.coverage @@ -6,3 +7,4 @@ /wagtail.egg-info/ /docs/_build/ /.tox/ +/venv diff --git a/docs/howto/contributing.rst b/docs/howto/contributing.rst index 797176997..f43c63d46 100644 --- a/docs/howto/contributing.rst +++ b/docs/howto/contributing.rst @@ -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 `_ 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 `_ 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 ~~~~~~~~~~ diff --git a/requirements-dev.txt b/requirements-dev.txt index 166dd353d..d4a4634a4 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -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 diff --git a/wagtail/tests/settings.py b/wagtail/tests/settings.py index 96d919cbd..03f2d72e8 100644 --- a/wagtail/tests/settings.py +++ b/wagtail/tests/settings.py @@ -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'), } }