summaryrefslogtreecommitdiff
path: root/tests/run.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run.py')
-rwxr-xr-xtests/run.py84
1 files changed, 37 insertions, 47 deletions
diff --git a/tests/run.py b/tests/run.py
index 37922f3b..95308212 100755
--- a/tests/run.py
+++ b/tests/run.py
@@ -9,53 +9,43 @@
:copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
+from __future__ import print_function
+import os
import sys
-from os import path, chdir, listdir, environ
-import shutil
-
-testroot = path.dirname(__file__) or '.'
-if 'BUILD_TEST_PATH' in environ:
- # for tox testing
- newroot = environ['BUILD_TEST_PATH']
- # tox installs the sphinx package, no need for sys.path.insert
-else:
- newroot = path.join(testroot, path.pardir, 'build')
- newroot = path.join(newroot, listdir(newroot)[0], 'tests')
-
-shutil.rmtree(newroot, ignore_errors=True)
-
-if sys.version_info >= (3, 0):
- print('Copying and converting sources to build/lib/tests...')
- from distutils.util import copydir_run_2to3
- copydir_run_2to3(testroot, newroot)
-else:
- # just copying test directory to parallel testing
- print('Copying sources to build/lib/tests...')
- shutil.copytree(testroot, newroot)
-
-# always test the sphinx package from build/lib/
-sys.path.insert(0, path.abspath(path.join(newroot, path.pardir)))
-# switch to the copy/converted dir so nose tests the right tests
-chdir(newroot)
-
-try:
- import nose
-except ImportError:
- print('The nose package is needed to run the Sphinx test suite.')
- sys.exit(1)
-
-try:
- import docutils
-except ImportError:
- print('Sphinx requires the docutils package to be installed.')
- sys.exit(1)
-
-try:
- import jinja2
-except ImportError:
- print('Sphinx requires the jinja2 package to be installed.')
- sys.exit(1)
-
-print('Running Sphinx test suite...')
+import traceback
+
+from path import path
+
+testroot = os.path.dirname(__file__) or '.'
+sys.path.insert(0, os.path.abspath(os.path.join(testroot, os.path.pardir)))
+
+# check dependencies before testing
+print('Checking dependencies...')
+for modname in ('nose', 'mock', 'six', 'docutils', 'jinja2', 'pygments',
+ 'snowballstemmer', 'babel'):
+ try:
+ __import__(modname)
+ except ImportError as err:
+ if modname == 'mock' and sys.version_info[0] == 3:
+ continue
+ traceback.print_exc()
+ print('The %r package is needed to run the Sphinx test suite.' % modname)
+ sys.exit(1)
+
+# find a temp dir for testing and clean it up now
+os.environ['SPHINX_TEST_TEMPDIR'] = \
+ os.path.abspath(os.path.join(testroot, 'build')) \
+ if 'SPHINX_TEST_TEMPDIR' not in os.environ \
+ else os.path.abspath(os.environ['SPHINX_TEST_TEMPDIR'])
+tempdir = path(os.environ['SPHINX_TEST_TEMPDIR'])
+print('Temporary files will be placed in %s.' % tempdir)
+if tempdir.exists():
+ tempdir.rmtree()
+tempdir.makedirs()
+
+print('Running Sphinx test suite (with Python %s)...' % sys.version.split()[0])
+sys.stdout.flush()
+
+import nose
nose.main()