M MANIFEST.in => MANIFEST.in +0 -1
@@ 1,7 1,6 @@
include COPYING
include README.rst
include setup.cfg
-include runtests.py
recursive-include src *.html *.txt *.png *.js *.css *.gif *.less *.mo *.po *.otf *.svg *.woff *.woff2 *.eot *.ttf
prune src/wiki/attachments
prune src/wiki/images
M Makefile => Makefile +1 -1
@@ 51,7 51,7 @@ lint: ## Check python code conventions
flake8 src/wiki tests/
test: ## Run automated test suite
- ./runtests.py
+ pytest
test-all: ## Run tests on all supported Python environments
tox
M docs/development/testing.rst => docs/development/testing.rst +17 -6
@@ 4,19 4,30 @@ Tests
Running tests
-------------
-To run django-wiki's tests, run ``make test`` or ``./runtests.py``
+To run django-wiki's tests, run ``make test`` or ``pytest``
If you want to test for more **environments**, install "tox"
(``pip install tox``) and then just run ``tox`` to run the test
suite on multiple environments.
-To run **specific tests**, see ``./runtests.py --help``.
+To run **specific tests**, see ``pytest --help``.
-To include Selenium tests, you need to install `chromedriver
-<https://sites.google.com/a/chromium.org/chromedriver/>`_ and run
-``./runtests.py --include-selenium``. For tox, do::
+To include Selenium tests, you need to have ``Xvfb`` installed
+(usually via system-provided package manager), `chromedriver
+<https://sites.google.com/a/chromium.org/chromedriver/>`_ and set the
+environment variable ``INCLUDE_SELENIUM_TESTS=1``. For example, run
+tests with (depending on whether you want to test directly or via
+tox)::
- INCLUDE_SELENIUM_TESTS=1 tox
+ INCLUDE_SELENIUM_TESTS=1 pytest
+ INCLUDE_SELENIUM_TESTS=1 tox
+
+If you wish to also show the browser window while running the
+functional tests, set the environment variable
+``SELENIUM_SHOW_BROWSER=1`` in *addition* to
+``INCLUDE_SELENIUM_TESTS=1``, for example::
+
+ INCLUDE_SELENIUM_TESTS=1 SELENIUM_SHOW_BROWSER=1 pytest
Writing tests
D runtests.py => runtests.py +0 -58
@@ 1,58 0,0 @@
-#!/usr/bin/env python
-from __future__ import print_function, unicode_literals
-
-import argparse
-import os
-import signal
-import subprocess
-import sys
-
-
-class RuntestsArgumentParser(argparse.ArgumentParser):
- def print_help(self):
- super(RuntestsArgumentParser, self).print_help()
- print("\n")
- print("All other arguments will be passed to pytest, \n"
- "which has the following options:\n")
- subprocess.call(["pytest", "--help"])
-
-parser = RuntestsArgumentParser(usage="./runtests.py [args] [tests to run]\n\n"
- "Individual tests can be run using pytest syntax e.g.\n\n"
- " ./runtests.py ./tests/core/test_views.py::ArticleViewViewTests::test_article_list_update\n")
-parser.add_argument("--include-selenium", action='store_true',
- help="Include Selenium tests, which are skipped by default. Requires chromedriver")
-parser.add_argument("--show-browser", action='store_true',
- help="Show browser window when running Selenium tests")
-
-
-def main():
- known_args, remaining_args = parser.parse_known_args()
- cmd = ["pytest"] + remaining_args
- if known_args.include_selenium:
- # It is easier to use environment variables than to use 'pytest -k',
- # because the user might want to use that option.
- os.environ['INCLUDE_SELENIUM_TESTS'] = "1"
- if known_args.show_browser:
- os.environ['SELENIUM_SHOW_BROWSER'] = "1"
-
- # Signal handling to ensure the right thing happens
- # when Ctrl-C is pressed.
- SIGINT_RECEIVED = False
-
- def signal_handler(sig, f):
- global SIGINT_RECEIVED
- SIGINT_RECEIVED = True
- # No other action, just allow child to exit.
-
-
- signal.signal(signal.SIGINT, signal_handler)
-
- retcode = subprocess.call(cmd)
-
- if SIGINT_RECEIVED:
- sys.exit(1)
- else:
- sys.exit(retcode)
-
-if __name__ == '__main__':
- main()
M tox.ini => tox.ini +1 -1
@@ 28,7 28,7 @@ commands =
# Test that there are no migrations needed -- on Django 1.11, we can
# use --check and remove the '!' which likely doesn't work on Windows
sh -c '! testproject/manage.py makemigrations --dry-run --exit --noinput'
- {toxinidir}/runtests.py --basetemp={envtmpdir} --ds=tests.settings --cov=src/wiki --cov-config .coveragerc {posargs}
+ pytest --basetemp={envtmpdir} --ds=tests.settings --cov=src/wiki --cov-config .coveragerc {posargs}
usedevelop = true