Latest version does not work due to pytest deprecation
Redmar-van-den-Berg opened this issue · 1 comments
Redmar-van-den-Berg commented
It looks like pytest has deprecated a function that is used by pytest-workflow, which causes a fresh conda install of pytest-workflow 1.5 to fail.
Either with this deprecation error:
=================================================== test session starts ===================================================
platform linux -- Python 3.9.1, pytest-6.1.1, py-1.10.0, pluggy-0.13.1
rootdir: /
plugins: workflow-1.2.0
collecting ...
collected 0 items / 1 error
========================================================= ERRORS ==========================================================
______________________________________________ ERROR collecting test session ______________________________________________
Direct construction of YamlFile has been deprecated, please use YamlFile.from_parent.
See https://docs.pytest.org/en/stable/deprecations.html#node-construction-changed-to-node-from-parent for more details.
================================================= short test summary info =================================================
ERROR
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
==================================================== 1 error in 0.48s =====================================================
Or by skipping all tests
test-sanity-snakemake:
command: snakemake --version
directory: /tmp/pytest_workflow_70c8pejs/test-sanity-snakemake
stdout: /tmp/pytest_workflow_70c8pejs/test-sanity-snakemake/log.out
stderr: /tmp/pytest_workflow_70c8pejs/test-sanity-snakemake/log.err
'test-sanity-snakemake' python error during starting.
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR> File "/pytest-wf-latest/lib/python3.9/site-packages/_pytest/main.py", line 269, in wrap_session
INTERNALERROR> session.exitstatus = doit(config, session) or 0
INTERNALERROR> File "/pytest-wf-latest/lib/python3.9/site-packages/_pytest/main.py", line 323, in _main
INTERNALERROR> config.hook.pytest_runtestloop(session=session)
INTERNALERROR> File "/pytest-wf-latest/lib/python3.9/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR> return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR> File "/pytest-wf-latest/lib/python3.9/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR> File "/pytest-wf-latest/lib/python3.9/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR> File "/pytest-wf-latest/lib/python3.9/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR> return outcome.get_result()
INTERNALERROR> File "/pytest-wf-latest/lib/python3.9/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR> raise ex[1].with_traceback(ex[2])
INTERNALERROR> File "/pytest-wf-latest/lib/python3.9/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR> res = hook_impl.function(*args)
INTERNALERROR> File "/pytest-wf-latest/lib/python3.9/site-packages/pytest_workflow/plugin.py", line 259, in pytest_runtestloop
INTERNALERROR> session.config.workflow_queue.process( # type: ignore
INTERNALERROR> File "/pytest-wf-latest/lib/python3.9/site-packages/pytest_workflow/workflow.py", line 196, in process
INTERNALERROR> raise self._process_errors[0]
INTERNALERROR> File "/pytest-wf-latest/lib/python3.9/site-packages/pytest_workflow/workflow.py", line 84, in start
INTERNALERROR> self._popen = subprocess.Popen( # nosec: Shell is not enabled. # noqa
INTERNALERROR> File "/pytest-wf-latest/lib/python3.9/subprocess.py", line 947, in __init__
INTERNALERROR> self._execute_child(args, executable, preexec_fn, close_fds,
INTERNALERROR> File "/pytest-wf-latest/lib/python3.9/subprocess.py", line 1819, in _execute_child
INTERNALERROR> raise child_exception_type(errno_num, err_msg, err_filename)
INTERNALERROR> FileNotFoundError: [Errno 2] No such file or directory: 'snakemake'
Removing temporary directories and logs. Use '--kwd' or '--keep-workflow-wd' to disable this behaviour.
================================================== no tests ran in 0.32s ==================================================
rhpvorderman commented
There must be something incorrect with your channel priority in conda.
As your log states:
platform linux -- Python 3.9.1, pytest-6.1.1, py-1.10.0, pluggy-0.13.1
rootdir: /
plugins: workflow-1.2.0
Emphasis mine. Pytest-workflow-1.2.0 is the latest version on bioconda. This contains code deprecated by pytest. The issue was fixed in 1.3.0. When installing with conda-forge as the top-channel, the 1.5.0 version should be installed.