def test_params(request: Any) -> Dict: """ test parameters that is specified by 'pytest.mark.test_params' :param Union[str] shared_result: If the value is provided, app._status and app._warning objects will be shared in the parametrized test functions and/or test functions that have same 'shared_result' value. **NOTE**: You can not specify shared_result and srcdir in same time. """ if hasattr(request.node, 'get_closest_marker'): # pytest-3.6.0 or newer env = request.node.get_closest_marker('test_params') else: env = request.node.get_marker('test_params') kwargs = env.kwargs if env else {} result = { 'shared_result': None, } result.update(kwargs) if (result['shared_result'] and not isinstance(result['shared_result'], str)): raise pytest.Exception('You can only provide a string type of value ' 'for "shared_result" ') return result
def app_params(request, test_params, shared_result): """ parameters that is specified by 'pytest.mark.sphinx' for sphinx.application.Sphinx initialization """ # ##### process pytest.mark.sphinx markers = request.node.get_marker("sphinx") pargs = {} kwargs = {} # HACK: this makes parametrized markers work if isinstance(markers, MarkDecorator): markers = [markers] if markers is not None: # to avoid stacking positional args for info in reversed(list(markers)): for i, a in enumerate(info.args): pargs[i] = a kwargs.update(info.kwargs) args = [pargs[i] for i in sorted(pargs.keys())] # ##### process pytest.mark.test_params if test_params['shared_result']: if 'srcdir' in kwargs: raise pytest.Exception('You can not spcify shared_result and ' 'srcdir in same time.') kwargs['srcdir'] = test_params['shared_result'] restore = shared_result.restore(test_params['shared_result']) kwargs.update(restore) # ##### prepare Application params if 'srcdir' in kwargs: srcdir = util.tempdir / kwargs['srcdir'] else: srcdir = util.tempdir / kwargs.get('testroot', 'root') kwargs['srcdir'] = srcdir if kwargs.get('testroot') is None: testroot_path = util.rootdir / 'root' else: testroot_path = util.rootdir / 'roots' / ('test-' + kwargs['testroot']) if not srcdir.exists(): testroot_path.copytree(srcdir) return namedtuple('app_params', 'args,kwargs')(args, kwargs)
def app_params(request, test_params, shared_result, sphinx_test_tempdir, rootdir): # type: (Any, Any, Any, Any, Any) -> None """ parameters that is specified by 'pytest.mark.sphinx' for sphinx.application.Sphinx initialization """ # ##### process pytest.mark.sphinx if hasattr(request.node, 'iter_markers'): # pytest-3.6.0 or newer markers = request.node.iter_markers("sphinx") else: markers = request.node.get_marker("sphinx") pargs = {} kwargs = {} # type: Dict[str, str] if markers is not None: # to avoid stacking positional args for info in reversed(list(markers)): for i, a in enumerate(info.args): pargs[i] = a kwargs.update(info.kwargs) args = [pargs[i] for i in sorted(pargs.keys())] # ##### process pytest.mark.test_params if test_params['shared_result']: if 'srcdir' in kwargs: raise pytest.Exception('You can not spcify shared_result and ' 'srcdir in same time.') kwargs['srcdir'] = test_params['shared_result'] restore = shared_result.restore(test_params['shared_result']) kwargs.update(restore) # ##### prepare Application params testroot = kwargs.pop('testroot', 'root') kwargs['srcdir'] = srcdir = sphinx_test_tempdir / kwargs.get( 'srcdir', testroot) # special support for sphinx/tests if rootdir and not srcdir.exists(): testroot_path = rootdir / ('test-' + testroot) testroot_path.copytree(srcdir) return namedtuple('app_params', 'args,kwargs')(args, kwargs) # type: ignore
def app_params(request: Any, test_params: Dict, shared_result: SharedResult, sphinx_test_tempdir: str, rootdir: str) -> Tuple[Dict, Dict]: """ Parameters that are specified by 'pytest.mark.sphinx' for sphinx.application.Sphinx initialization """ # ##### process pytest.mark.sphinx pargs = {} kwargs: Dict[str, Any] = {} # to avoid stacking positional args for info in reversed(list(request.node.iter_markers("sphinx"))): for i, a in enumerate(info.args): pargs[i] = a kwargs.update(info.kwargs) args = [pargs[i] for i in sorted(pargs.keys())] # ##### process pytest.mark.test_params if test_params['shared_result']: if 'srcdir' in kwargs: raise pytest.Exception('You can not specify shared_result and ' 'srcdir in same time.') kwargs['srcdir'] = test_params['shared_result'] restore = shared_result.restore(test_params['shared_result']) kwargs.update(restore) # ##### prepare Application params testroot = kwargs.pop('testroot', 'root') kwargs['srcdir'] = srcdir = sphinx_test_tempdir / kwargs.get( 'srcdir', testroot) # special support for sphinx/tests if rootdir and not srcdir.exists(): testroot_path = rootdir / ('test-' + testroot) testroot_path.copytree(srcdir) return namedtuple('app_params', 'args,kwargs')(args, kwargs) # type: ignore