diff options
Diffstat (limited to 'tests/test_websupport.py')
-rw-r--r-- | tests/test_websupport.py | 50 |
1 files changed, 45 insertions, 5 deletions
diff --git a/tests/test_websupport.py b/tests/test_websupport.py index b8884bf91..3d61e55c2 100644 --- a/tests/test_websupport.py +++ b/tests/test_websupport.py @@ -9,7 +9,7 @@ :license: BSD, see LICENSE for details. """ -import os +import os, sys from StringIO import StringIO from sphinx.websupport import WebSupport @@ -24,15 +24,22 @@ except ImportError: from util import * -def teardown_module(): +default_settings = {'outdir': os.path.join(test_root, 'websupport'), + 'status': StringIO(), + 'warning': StringIO()} + + +def clear_builddir(): (test_root / 'websupport').rmtree(True) +def teardown_module(): + clear_builddir() + + def with_support(*args, **kwargs): """Make a WebSupport object and pass it the test.""" - settings = {'outdir': os.path.join(test_root, 'websupport'), - 'status': StringIO(), - 'warning': StringIO()} + settings = default_settings.copy() settings.update(kwargs) def generator(func): @@ -49,10 +56,12 @@ def test_no_srcdir(support): """Make sure the correct exception is raised if srcdir is not given.""" raises(SrcdirNotSpecifiedError, support.build) + @with_support(srcdir=test_root) def test_build(support): support.build() + @with_support() def test_get_document(support): raises(DocumentNotFoundError, support.get_document, 'nonexisting') @@ -60,3 +69,34 @@ def test_get_document(support): contents = support.get_document('contents') assert contents['title'] and contents['body'] \ and contents['sidebar'] and contents['relbar'] + + +def search_adapter_helper(adapter): + clear_builddir() + + settings = default_settings.copy() + settings.update({'srcdir': test_root, + 'search': adapter}) + support = WebSupport(**settings) + + support.build() + + +def test_xapian(): + # Don't run tests if xapian is not installed. + try: + import xapian + search_adapter_helper('xapian') + except ImportError: + sys.stderr.write('info: not running xapian tests, ' \ + 'xapian doesn\'t seem to be installed') + + +def test_whoosh(): + # Don't run tests if xapian is not installed. + try: + import whoosh + search_adapter_helper('whoosh') + except ImportError: + sys.stderr.write('info: not running xapian tests, ' \ + 'whoosh doesn\'t seem to be installed') |