1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
import os
import json
from pathlib import Path
from textwrap import dedent
import schema_salad.ref_resolver
from .util import get_data, run_with_mock_cwl_runner
def test_badgedir(tmp_path: Path) -> None:
badgedir = tmp_path / "badgedir"
args = [
"--test",
schema_salad.ref_resolver.file_uri(
get_data("tests/test-data/conformance_test_v1.2.cwltest.yaml")
),
"--badgedir",
str(badgedir),
]
cwd = os.getcwd()
try:
os.chdir(get_data("tests/test-data/"))
error_code, stdout, stderr = run_with_mock_cwl_runner(args)
finally:
os.chdir(cwd)
assert error_code == 1
required_json = badgedir / "required.json"
assert required_json.exists()
with open(required_json) as file:
obj = json.load(file)
assert obj.get("subject", "") == "required"
assert obj.get("status", "") == "0%"
assert obj.get("color", "") == "red"
required_md = badgedir / "required.md"
assert required_md.exists()
with open(required_md) as file:
s = file.read()
assert "file://" in s
assert "tests/test-data/conformance_test_v1.2.cwltest.yaml" in s
assert "v1.0/cat-job.json" in s
assert "v1.0/cat1-testcli.cwl" in s
clt = badgedir / "command_line_tool.json"
assert clt.exists()
with open(clt) as file:
obj = json.load(file)
assert obj.get("subject", "") == "command_line_tool"
assert obj.get("status", "") == "0%"
assert obj.get("color", "") == "yellow"
assert (badgedir / "command_line_tool.md").exists()
def test_badgedir_report_with_baseuri(tmp_path: Path) -> None:
badgedir = tmp_path / "badgedir"
baseuri = "https://example.com/specified/uri"
args = [
"--test",
schema_salad.ref_resolver.file_uri(get_data("tests/test-data/badgedir.yaml")),
"--badgedir",
str(badgedir),
"--baseuri",
baseuri,
]
cwd = os.getcwd()
try:
os.chdir(get_data("tests/test-data/"))
error_code, stdout, stderr = run_with_mock_cwl_runner(args)
finally:
os.chdir(cwd)
clt_md = badgedir / "command_line_tool.md"
assert clt_md.exists()
with open(clt_md) as file:
contents = file.read()
assert contents == markdown_report_with(baseuri)
def markdown_report_with(baseuri: str) -> str:
return dedent(
f"""
# `command_line_tool` tests
## List of passed tests
- [success_w_job]({baseuri}/badgedir.yaml#L0) ([tool]({baseuri}/return-0.cwl), [job]({baseuri}/empty.yml))
- [success_wo_job]({baseuri}/badgedir.yaml#L7) ([tool]({baseuri}/return-0.cwl))
## List of failed tests
- [failure_w_job]({baseuri}/badgedir.yaml#L13) ([tool]({baseuri}/return-1.cwl), [job]({baseuri}/empty.yml))
- [failure_wo_job]({baseuri}/badgedir.yaml#L20) ([tool]({baseuri}/return-1.cwl))
## List of unsupported tests
- [unsupported_w_job]({baseuri}/badgedir.yaml#L26) ([tool]({baseuri}/return-unsupported.cwl), [job]({baseuri}/empty.yml))
- [unsupported_wo_job]({baseuri}/badgedir.yaml#L33) ([tool]({baseuri}/return-unsupported.cwl))
"""
)[1:]
|