1import pytest 2 3from mako.ext.beaker_cache import has_beaker 4from mako.util import update_wrapper 5 6 7try: 8 import babel.messages.extract as babel 9except ImportError: 10 babel = None 11 12 13try: 14 import lingua 15except ImportError: 16 lingua = None 17 18 19try: 20 import dogpile.cache # noqa 21except ImportError: 22 has_dogpile_cache = False 23else: 24 has_dogpile_cache = True 25 26 27requires_beaker = pytest.mark.skipif( 28 not has_beaker, reason="Beaker is required for these tests." 29) 30 31 32requires_babel = pytest.mark.skipif( 33 babel is None, reason="babel not installed: skipping babelplugin test" 34) 35 36 37requires_lingua = pytest.mark.skipif( 38 lingua is None, reason="lingua not installed: skipping linguaplugin test" 39) 40 41 42requires_dogpile_cache = pytest.mark.skipif( 43 not has_dogpile_cache, 44 reason="dogpile.cache is required to run these tests", 45) 46 47 48def _pygments_version(): 49 try: 50 import pygments 51 52 version = pygments.__version__ 53 except: 54 version = "0" 55 return version 56 57 58requires_pygments_14 = pytest.mark.skipif( 59 _pygments_version() < "1.4", reason="Requires pygments 1.4 or greater" 60) 61 62 63# def requires_pygments_14(fn): 64 65# return skip_if( 66# lambda: version < "1.4", "Requires pygments 1.4 or greater" 67# )(fn) 68 69 70def requires_no_pygments_exceptions(fn): 71 def go(*arg, **kw): 72 from mako import exceptions 73 74 exceptions._install_fallback() 75 try: 76 return fn(*arg, **kw) 77 finally: 78 exceptions._install_highlighting() 79 80 return update_wrapper(go, fn) 81