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 |