misc: add site option to force lazy evaluation (#29951)
This commit is contained in:
parent
653db00150
commit
dcb0b0fc58
|
@ -58,13 +58,14 @@ def assert_equal_zip(stream1, stream2):
|
|||
|
||||
def pytest_generate_tests(metafunc):
|
||||
if 'pub' in metafunc.fixturenames:
|
||||
metafunc.parametrize('pub', ['pickle', 'sql', 'pickle-templates'], indirect=True)
|
||||
metafunc.parametrize('pub', ['pickle', 'sql', 'pickle-templates', 'pickle-lazy'], indirect=True)
|
||||
|
||||
@pytest.fixture
|
||||
def pub(request, emails):
|
||||
pub = create_temporary_pub(
|
||||
sql_mode=bool('sql' in request.param),
|
||||
templates_mode=bool('templates' in request.param)
|
||||
templates_mode=bool('templates' in request.param),
|
||||
lazy_mode=bool('lazy' in request.param),
|
||||
)
|
||||
pub.cfg['identification'] = {'methods': ['password']}
|
||||
pub.cfg['language'] = {'language': 'en'}
|
||||
|
|
|
@ -37,10 +37,11 @@ class KnownElements(object):
|
|||
sql_app_dir = None
|
||||
sql_db_name = None
|
||||
templates_app_dir = None
|
||||
lazy_app_dir = None
|
||||
|
||||
known_elements = KnownElements()
|
||||
|
||||
def create_temporary_pub(sql_mode=False, templates_mode=False):
|
||||
def create_temporary_pub(sql_mode=False, templates_mode=False, lazy_mode=False):
|
||||
if sql_mode is True:
|
||||
if pytest.config.getoption('without_postgresql_tests'):
|
||||
pytest.skip("unsupported configuration")
|
||||
|
@ -50,17 +51,21 @@ def create_temporary_pub(sql_mode=False, templates_mode=False):
|
|||
cleanup()
|
||||
if templates_mode and known_elements.templates_app_dir:
|
||||
APP_DIR = known_elements.templates_app_dir
|
||||
elif (not sql_mode and not templates_mode) and known_elements.pickle_app_dir:
|
||||
APP_DIR = known_elements.pickle_app_dir
|
||||
elif sql_mode is True and known_elements.sql_app_dir:
|
||||
elif lazy_mode and known_elements.lazy_app_dir:
|
||||
APP_DIR = known_elements.lazy_app_dir
|
||||
elif sql_mode and known_elements.sql_app_dir:
|
||||
APP_DIR = known_elements.sql_app_dir
|
||||
elif not (templates_mode or lazy_mode or sql_mode) and known_elements.pickle_app_dir:
|
||||
APP_DIR = known_elements.pickle_app_dir
|
||||
else:
|
||||
APP_DIR = tempfile.mkdtemp()
|
||||
if templates_mode:
|
||||
known_elements.templates_app_dir = APP_DIR
|
||||
elif sql_mode is True:
|
||||
elif lazy_mode:
|
||||
known_elements.lazy_app_dir = APP_DIR
|
||||
elif sql_mode:
|
||||
known_elements.sql_app_dir = APP_DIR
|
||||
elif sql_mode is False:
|
||||
else:
|
||||
known_elements.pickle_app_dir = APP_DIR
|
||||
|
||||
compat.CompatWcsPublisher.APP_DIR = APP_DIR
|
||||
|
@ -105,6 +110,8 @@ def create_temporary_pub(sql_mode=False, templates_mode=False):
|
|||
fd.write('formdef-captcha-option = true\n')
|
||||
fd.write('formdef-appearance-keywords = true\n')
|
||||
fd.write('workflow-resubmit-action = true\n')
|
||||
if lazy_mode:
|
||||
fd.write('force-lazy-mode = true\n')
|
||||
if sql_mode:
|
||||
fd.write('postgresql = true\n')
|
||||
|
||||
|
|
|
@ -104,7 +104,9 @@ class Substitutions(object):
|
|||
def get_context_variables(self, mode=None):
|
||||
if self._forced_mode:
|
||||
mode = self._forced_mode
|
||||
lazy = mode in get_publisher().get_lazy_variables_modes() if mode else False
|
||||
lazy = get_publisher().has_site_option('force-lazy-mode')
|
||||
if not lazy and mode:
|
||||
lazy = mode in get_publisher().get_lazy_variables_modes()
|
||||
d = getattr(self, '_cache_context_variables%r' % lazy, None)
|
||||
if d is not None:
|
||||
return d
|
||||
|
|
Loading…
Reference in New Issue