Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/cwltool/tests/test_fetch.py @ 2:6af9afd405e9 draft
"planemo upload commit 0a63dd5f4d38a1f6944587f52a8cd79874177fc1"
| author | shellac |
|---|---|
| date | Thu, 14 May 2020 14:56:58 -0400 |
| parents | 26e78fe6e8c4 |
| children |
comparison
equal
deleted
inserted
replaced
| 1:75ca89e9b81c | 2:6af9afd405e9 |
|---|---|
| 1 import os | |
| 2 | |
| 3 from six.moves import urllib | |
| 4 | |
| 5 import pytest | |
| 6 | |
| 7 import schema_salad.main | |
| 8 import schema_salad.ref_resolver | |
| 9 import schema_salad.schema | |
| 10 | |
| 11 from cwltool.context import LoadingContext | |
| 12 from cwltool.load_tool import load_tool | |
| 13 from cwltool.main import main | |
| 14 from cwltool.resolver import Path, resolve_local | |
| 15 from cwltool.utils import onWindows | |
| 16 from cwltool.workflow import default_make_tool | |
| 17 | |
| 18 from .util import get_data, working_directory | |
| 19 | |
| 20 def test_fetcher(): | |
| 21 class TestFetcher(schema_salad.ref_resolver.Fetcher): | |
| 22 def __init__(self, a, b): | |
| 23 pass | |
| 24 | |
| 25 def fetch_text(self, url): # type: (unicode) -> unicode | |
| 26 if url == "baz:bar/foo.cwl": | |
| 27 return """ | |
| 28 cwlVersion: v1.0 | |
| 29 class: CommandLineTool | |
| 30 baseCommand: echo | |
| 31 inputs: [] | |
| 32 outputs: [] | |
| 33 """ | |
| 34 raise RuntimeError("Not foo.cwl, was %s" % url) | |
| 35 | |
| 36 def check_exists(self, url): # type: (unicode) -> bool | |
| 37 return url == "baz:bar/foo.cwl" | |
| 38 | |
| 39 def urljoin(self, base, url): | |
| 40 urlsp = urllib.parse.urlsplit(url) | |
| 41 if urlsp.scheme: | |
| 42 return url | |
| 43 basesp = urllib.parse.urlsplit(base) | |
| 44 | |
| 45 if basesp.scheme == "keep": | |
| 46 return base + "/" + url | |
| 47 return urllib.parse.urljoin(base, url) | |
| 48 | |
| 49 def test_resolver(d, a): | |
| 50 if a.startswith("baz:bar/"): | |
| 51 return a | |
| 52 return "baz:bar/" + a | |
| 53 | |
| 54 loadingContext = LoadingContext({"construct_tool_object": default_make_tool, | |
| 55 "resolver": test_resolver, | |
| 56 "fetcher_constructor": TestFetcher}) | |
| 57 | |
| 58 load_tool("foo.cwl", loadingContext) | |
| 59 | |
| 60 assert main(["--print-pre", "--debug", "foo.cwl"], loadingContext=loadingContext) == 0 | |
| 61 | |
| 62 root = Path(os.path.join(get_data(""))) | |
| 63 | |
| 64 path_fragments = [ | |
| 65 (os.path.join("tests", "echo.cwl"), "/tests/echo.cwl"), | |
| 66 (os.path.join("tests", "echo.cwl") + "#main", "/tests/echo.cwl#main"), | |
| 67 (str(root / "tests" / "echo.cwl"), "/tests/echo.cwl"), | |
| 68 (str(root / "tests" / "echo.cwl") + "#main", "/tests/echo.cwl#main") | |
| 69 ] | |
| 70 | |
| 71 def norm(uri): | |
| 72 if onWindows(): | |
| 73 return uri.lower() | |
| 74 return uri | |
| 75 | |
| 76 @pytest.mark.parametrize('path,expected_path', path_fragments) | |
| 77 def test_resolve_local(path, expected_path): | |
| 78 with working_directory(root): | |
| 79 expected = norm(root.as_uri() + expected_path) | |
| 80 assert norm(resolve_local(None, path)) == expected |
