# -*- coding: utf-8 -*- """ jinja2.testsuite.conftest ~~~~~~~~~~~~~~~~~~~~~~~~~ Configuration and Fixtures for the tests :copyright: (c) 2017 by the Jinja Team. :license: BSD, see LICENSE for more details. """ import pytest import os from jinja2 import loaders from jinja2.utils import have_async_gen from jinja2 import Environment def pytest_ignore_collect(path): if 'async' in path.basename and not have_async_gen: return True return False def pytest_configure(config): '''Register custom marks for test categories.''' custom_markers = [ 'api', 'byte_code_cache', 'core_tags', 'debug', 'escapeUrlizeTarget', 'ext', 'extended', 'filesystemloader', 'filter', 'for_loop', 'helpers', 'if_condition', 'imports', 'includes', 'inheritance', 'lexer', 'lexnparse', 'loaders', 'loremIpsum', 'lowlevel', 'lrucache', 'lstripblocks', 'macros', 'meta', 'moduleloader', 'parser', 'regression', 'sandbox', 'set', 'streaming', 'syntax', 'test_tests', 'tokenstream', 'undefined', 'utils', 'with_', ] for mark in custom_markers: config.addinivalue_line('markers', mark + ': test category') @pytest.fixture def env(): '''returns a new environment. ''' return Environment() @pytest.fixture def dict_loader(): '''returns DictLoader ''' return loaders.DictLoader({ 'justdict.html': 'FOO' }) @pytest.fixture def package_loader(): '''returns PackageLoader initialized from templates ''' return loaders.PackageLoader('res', 'templates') @pytest.fixture def filesystem_loader(): '''returns FileSystemLoader initialized to res/templates directory ''' here = os.path.dirname(os.path.abspath(__file__)) return loaders.FileSystemLoader(here + '/res/templates') @pytest.fixture def function_loader(): '''returns a FunctionLoader ''' return loaders.FunctionLoader({'justfunction.html': 'FOO'}.get) @pytest.fixture def choice_loader(dict_loader, package_loader): '''returns a ChoiceLoader ''' return loaders.ChoiceLoader([dict_loader, package_loader]) @pytest.fixture def prefix_loader(filesystem_loader, dict_loader): '''returns a PrefixLoader ''' return loaders.PrefixLoader({ 'a': filesystem_loader, 'b': dict_loader })