Mercurial > repos > guerler > springsuite
comparison planemo/lib/python3.7/site-packages/schema_salad/tests/test_cg.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
| author | guerler |
|---|---|
| date | Fri, 31 Jul 2020 00:32:28 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 0:d30785e31577 | 1:56ad4e20f292 |
|---|---|
| 1 import json | |
| 2 import os | |
| 3 | |
| 4 import pytest | |
| 5 | |
| 6 import schema_salad.metaschema as cg_metaschema | |
| 7 from schema_salad.ref_resolver import file_uri | |
| 8 | |
| 9 from .matcher import JsonDiffMatcher | |
| 10 from .util import get_data | |
| 11 | |
| 12 | |
| 13 def test_load(): | |
| 14 doc = { | |
| 15 "type": "record", | |
| 16 "fields": [{"name": "hello", "doc": "Hello test case", "type": "string"}], | |
| 17 } | |
| 18 rs = cg_metaschema.RecordSchema.fromDoc( | |
| 19 doc, "http://example.com/", cg_metaschema.LoadingOptions() | |
| 20 ) | |
| 21 assert "record" == rs.type | |
| 22 assert "http://example.com/#hello" == rs.fields[0].name | |
| 23 assert "Hello test case" == rs.fields[0].doc | |
| 24 assert "string" == rs.fields[0].type | |
| 25 assert { | |
| 26 "type": "record", | |
| 27 "fields": [ | |
| 28 { | |
| 29 "name": "http://example.com/#hello", | |
| 30 "doc": "Hello test case", | |
| 31 "type": "string", | |
| 32 } | |
| 33 ], | |
| 34 } == rs.save() | |
| 35 | |
| 36 | |
| 37 def test_err(): | |
| 38 doc = {"doc": "Hello test case", "type": "string"} | |
| 39 with pytest.raises(cg_metaschema.ValidationException): | |
| 40 cg_metaschema.RecordField.fromDoc(doc, "", cg_metaschema.LoadingOptions()) | |
| 41 | |
| 42 | |
| 43 def test_include(): | |
| 44 doc = {"name": "hello", "doc": [{"$include": "hello.txt"}], "type": "documentation"} | |
| 45 rf = cg_metaschema.Documentation.fromDoc( | |
| 46 doc, | |
| 47 "http://example.com/", | |
| 48 cg_metaschema.LoadingOptions(fileuri=file_uri(get_data("tests/_"))), | |
| 49 ) | |
| 50 assert "http://example.com/#hello" == rf.name | |
| 51 assert ["hello world!\n"] == rf.doc | |
| 52 assert "documentation" == rf.type | |
| 53 assert { | |
| 54 "name": "http://example.com/#hello", | |
| 55 "doc": ["hello world!\n"], | |
| 56 "type": "documentation", | |
| 57 } == rf.save() | |
| 58 | |
| 59 | |
| 60 def test_import(): | |
| 61 doc = {"type": "record", "fields": [{"$import": "hellofield.yml"}]} | |
| 62 lead = file_uri(os.path.normpath(get_data("tests"))) | |
| 63 rs = cg_metaschema.RecordSchema.fromDoc( | |
| 64 doc, "http://example.com/", cg_metaschema.LoadingOptions(fileuri=lead + "/_") | |
| 65 ) | |
| 66 assert "record" == rs.type | |
| 67 assert lead + "/hellofield.yml#hello" == rs.fields[0].name | |
| 68 assert "hello world!\n" == rs.fields[0].doc | |
| 69 assert "string" == rs.fields[0].type | |
| 70 assert { | |
| 71 "type": "record", | |
| 72 "fields": [ | |
| 73 { | |
| 74 "name": lead + "/hellofield.yml#hello", | |
| 75 "doc": "hello world!\n", | |
| 76 "type": "string", | |
| 77 } | |
| 78 ], | |
| 79 } == rs.save() | |
| 80 | |
| 81 | |
| 82 maxDiff = None | |
| 83 | |
| 84 | |
| 85 def test_import2(): | |
| 86 rs = cg_metaschema.load_document( | |
| 87 file_uri(get_data("tests/docimp/d1.yml")), "", cg_metaschema.LoadingOptions() | |
| 88 ) | |
| 89 assert [ | |
| 90 { | |
| 91 "doc": [ | |
| 92 u"*Hello*", | |
| 93 "hello 2", | |
| 94 u"*dee dee dee five*", | |
| 95 "hello 3", | |
| 96 "hello 4", | |
| 97 u"*dee dee dee five*", | |
| 98 "hello 5", | |
| 99 ], | |
| 100 "type": "documentation", | |
| 101 "name": file_uri(get_data("tests/docimp/d1.yml")) | |
| 102 + "#Semantic_Annotations_for_Linked_Avro_Data", | |
| 103 } | |
| 104 ] == [r.save() for r in rs] | |
| 105 | |
| 106 | |
| 107 def test_err2(): | |
| 108 doc = { | |
| 109 "type": "rucord", | |
| 110 "fields": [{"name": "hello", "doc": "Hello test case", "type": "string"}], | |
| 111 } | |
| 112 with pytest.raises(cg_metaschema.ValidationException): | |
| 113 cg_metaschema.RecordSchema.fromDoc(doc, "", cg_metaschema.LoadingOptions()) | |
| 114 | |
| 115 | |
| 116 def test_idmap(): | |
| 117 doc = { | |
| 118 "type": "record", | |
| 119 "fields": {"hello": {"doc": "Hello test case", "type": "string"}}, | |
| 120 } | |
| 121 rs = cg_metaschema.RecordSchema.fromDoc( | |
| 122 doc, "http://example.com/", cg_metaschema.LoadingOptions() | |
| 123 ) | |
| 124 assert "record" == rs.type | |
| 125 assert "http://example.com/#hello" == rs.fields[0].name | |
| 126 assert "Hello test case" == rs.fields[0].doc | |
| 127 assert "string" == rs.fields[0].type | |
| 128 assert { | |
| 129 "type": "record", | |
| 130 "fields": [ | |
| 131 { | |
| 132 "name": "http://example.com/#hello", | |
| 133 "doc": "Hello test case", | |
| 134 "type": "string", | |
| 135 } | |
| 136 ], | |
| 137 } == rs.save() | |
| 138 | |
| 139 | |
| 140 def test_idmap2(): | |
| 141 doc = {"type": "record", "fields": {"hello": "string"}} | |
| 142 rs = cg_metaschema.RecordSchema.fromDoc( | |
| 143 doc, "http://example.com/", cg_metaschema.LoadingOptions() | |
| 144 ) | |
| 145 assert "record" == rs.type | |
| 146 assert "http://example.com/#hello" == rs.fields[0].name | |
| 147 assert rs.fields[0].doc is None | |
| 148 assert "string" == rs.fields[0].type | |
| 149 assert { | |
| 150 "type": "record", | |
| 151 "fields": [{"name": "http://example.com/#hello", "type": "string"}], | |
| 152 } == rs.save() | |
| 153 | |
| 154 | |
| 155 def test_load_pt(): | |
| 156 doc = cg_metaschema.load_document( | |
| 157 file_uri(get_data("tests/pt.yml")), "", cg_metaschema.LoadingOptions() | |
| 158 ) | |
| 159 assert [ | |
| 160 "https://w3id.org/cwl/salad#null", | |
| 161 "http://www.w3.org/2001/XMLSchema#boolean", | |
| 162 "http://www.w3.org/2001/XMLSchema#int", | |
| 163 "http://www.w3.org/2001/XMLSchema#long", | |
| 164 "http://www.w3.org/2001/XMLSchema#float", | |
| 165 "http://www.w3.org/2001/XMLSchema#double", | |
| 166 "http://www.w3.org/2001/XMLSchema#string", | |
| 167 ] == doc.symbols | |
| 168 | |
| 169 | |
| 170 def test_load_metaschema(): | |
| 171 doc = cg_metaschema.load_document( | |
| 172 file_uri(get_data("metaschema/metaschema.yml")), | |
| 173 "", | |
| 174 cg_metaschema.LoadingOptions(), | |
| 175 ) | |
| 176 with open(get_data("tests/metaschema-pre.yml")) as f: | |
| 177 pre = json.load(f) | |
| 178 saved = [d.save(relative_uris=False) for d in doc] | |
| 179 assert saved == JsonDiffMatcher(pre) | |
| 180 | |
| 181 | |
| 182 def test_load_cwlschema(): | |
| 183 doc = cg_metaschema.load_document( | |
| 184 file_uri(get_data("tests/test_schema/CommonWorkflowLanguage.yml")), | |
| 185 "", | |
| 186 cg_metaschema.LoadingOptions(), | |
| 187 ) | |
| 188 with open(get_data("tests/cwl-pre.yml")) as f: | |
| 189 pre = json.load(f) | |
| 190 saved = [d.save(relative_uris=False) for d in doc] | |
| 191 assert saved == JsonDiffMatcher(pre) |
