Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/cwltool/tests/util.py @ 0:26e78fe6e8c4 draft
"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author | shellac |
---|---|
date | Sat, 02 May 2020 07:14:21 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/env/lib/python3.7/site-packages/cwltool/tests/util.py Sat May 02 07:14:21 2020 -0400 @@ -0,0 +1,101 @@ +from __future__ import absolute_import + +import distutils.spawn # pylint: disable=no-name-in-module,import-error +import functools +import os +import sys +import shutil +import contextlib +import tempfile +import shutil +from typing import Text + +from pkg_resources import (Requirement, ResolutionError, # type: ignore + resource_filename) +import pytest + +from cwltool.context import LoadingContext, RuntimeContext +from cwltool.factory import Factory +from cwltool.resolver import Path +from cwltool.utils import onWindows, subprocess, windows_default_container_id +from cwltool.singularity import is_version_2_6, is_version_3_or_newer + + +def get_windows_safe_factory(runtime_context=None, # type: RuntimeContext + loading_context=None, # type: LoadingContext + executor=None # type: Any + ): # type: (...) -> Factory + if onWindows(): + if not runtime_context: + runtime_context = RuntimeContext() + runtime_context.find_default_container = functools.partial( + force_default_container, windows_default_container_id) + runtime_context.use_container = True + runtime_context.default_container = windows_default_container_id + return Factory(executor, loading_context, runtime_context) + +def force_default_container(default_container_id, _): + return default_container_id + +def get_data(filename): + # normalizing path depending on OS or else it will cause problem when joining path + filename = os.path.normpath(filename) + filepath = None + try: + filepath = resource_filename( + Requirement.parse("cwltool"), filename) + except ResolutionError: + pass + if not filepath or not os.path.isfile(filepath): + filepath = os.path.join(os.path.dirname(__file__), os.pardir, filename) + return Text(Path(filepath).resolve()) + + +needs_docker = pytest.mark.skipif(not bool(distutils.spawn.find_executable('docker')), + reason="Requires the docker executable on the " + "system path.") + +needs_singularity = pytest.mark.skipif( + not bool(distutils.spawn.find_executable('singularity')), + reason="Requires the singularity executable on the system path.") + +needs_singularity_2_6 = pytest.mark.skipif( + not (distutils.spawn.find_executable('singularity') and is_version_2_6()), + reason="Requires that version 2.6.x of singularity executable version is on the system path.") + +needs_singularity_3_or_newer = pytest.mark.skipif( + not (distutils.spawn.find_executable('singularity') and is_version_3_or_newer), + reason="Requires that version 2.6.x of singularity executable version is on the system path.") + + +windows_needs_docker = pytest.mark.skipif( + onWindows() and not bool(distutils.spawn.find_executable('docker')), + reason="Running this test on MS Windows requires the docker executable " + "on the system path.") + +def get_main_output(args, env=None): + process = subprocess.Popen( + [sys.executable, "-m", "cwltool"] + args, + stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env) + + stdout, stderr = process.communicate() + return process.returncode, stdout.decode(), stderr.decode() + +@contextlib.contextmanager +def temp_dir(suffix=""): + c_dir = tempfile.mkdtemp(suffix, dir=os.curdir) + try: + yield c_dir + finally: + shutil.rmtree(c_dir, ignore_errors=True) + +@contextlib.contextmanager +def working_directory(path): + """Change working directory and returns to previous on exit.""" + prev_cwd = Path.cwd() + # before python 3.6 chdir doesn't support paths from pathlib + os.chdir(str(path)) + try: + yield + finally: + os.chdir(str(prev_cwd))