diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/planemo/lib/python3.7/site-packages/schema_salad/tests/test_cg.py	Fri Jul 31 00:32:28 2020 -0400
@@ -0,0 +1,191 @@
+import json
+import os
+
+import pytest
+
+import schema_salad.metaschema as cg_metaschema
+from schema_salad.ref_resolver import file_uri
+
+from .matcher import JsonDiffMatcher
+from .util import get_data
+
+
+def test_load():
+    doc = {
+        "type": "record",
+        "fields": [{"name": "hello", "doc": "Hello test case", "type": "string"}],
+    }
+    rs = cg_metaschema.RecordSchema.fromDoc(
+        doc, "http://example.com/", cg_metaschema.LoadingOptions()
+    )
+    assert "record" == rs.type
+    assert "http://example.com/#hello" == rs.fields[0].name
+    assert "Hello test case" == rs.fields[0].doc
+    assert "string" == rs.fields[0].type
+    assert {
+        "type": "record",
+        "fields": [
+            {
+                "name": "http://example.com/#hello",
+                "doc": "Hello test case",
+                "type": "string",
+            }
+        ],
+    } == rs.save()
+
+
+def test_err():
+    doc = {"doc": "Hello test case", "type": "string"}
+    with pytest.raises(cg_metaschema.ValidationException):
+        cg_metaschema.RecordField.fromDoc(doc, "", cg_metaschema.LoadingOptions())
+
+
+def test_include():
+    doc = {"name": "hello", "doc": [{"$include": "hello.txt"}], "type": "documentation"}
+    rf = cg_metaschema.Documentation.fromDoc(
+        doc,
+        "http://example.com/",
+        cg_metaschema.LoadingOptions(fileuri=file_uri(get_data("tests/_"))),
+    )
+    assert "http://example.com/#hello" == rf.name
+    assert ["hello world!\n"] == rf.doc
+    assert "documentation" == rf.type
+    assert {
+        "name": "http://example.com/#hello",
+        "doc": ["hello world!\n"],
+        "type": "documentation",
+    } == rf.save()
+
+
+def test_import():
+    doc = {"type": "record", "fields": [{"$import": "hellofield.yml"}]}
+    lead = file_uri(os.path.normpath(get_data("tests")))
+    rs = cg_metaschema.RecordSchema.fromDoc(
+        doc, "http://example.com/", cg_metaschema.LoadingOptions(fileuri=lead + "/_")
+    )
+    assert "record" == rs.type
+    assert lead + "/hellofield.yml#hello" == rs.fields[0].name
+    assert "hello world!\n" == rs.fields[0].doc
+    assert "string" == rs.fields[0].type
+    assert {
+        "type": "record",
+        "fields": [
+            {
+                "name": lead + "/hellofield.yml#hello",
+                "doc": "hello world!\n",
+                "type": "string",
+            }
+        ],
+    } == rs.save()
+
+
+maxDiff = None
+
+
+def test_import2():
+    rs = cg_metaschema.load_document(
+        file_uri(get_data("tests/docimp/d1.yml")), "", cg_metaschema.LoadingOptions()
+    )
+    assert [
+        {
+            "doc": [
+                u"*Hello*",
+                "hello 2",
+                u"*dee dee dee five*",
+                "hello 3",
+                "hello 4",
+                u"*dee dee dee five*",
+                "hello 5",
+            ],
+            "type": "documentation",
+            "name": file_uri(get_data("tests/docimp/d1.yml"))
+            + "#Semantic_Annotations_for_Linked_Avro_Data",
+        }
+    ] == [r.save() for r in rs]
+
+
+def test_err2():
+    doc = {
+        "type": "rucord",
+        "fields": [{"name": "hello", "doc": "Hello test case", "type": "string"}],
+    }
+    with pytest.raises(cg_metaschema.ValidationException):
+        cg_metaschema.RecordSchema.fromDoc(doc, "", cg_metaschema.LoadingOptions())
+
+
+def test_idmap():
+    doc = {
+        "type": "record",
+        "fields": {"hello": {"doc": "Hello test case", "type": "string"}},
+    }
+    rs = cg_metaschema.RecordSchema.fromDoc(
+        doc, "http://example.com/", cg_metaschema.LoadingOptions()
+    )
+    assert "record" == rs.type
+    assert "http://example.com/#hello" == rs.fields[0].name
+    assert "Hello test case" == rs.fields[0].doc
+    assert "string" == rs.fields[0].type
+    assert {
+        "type": "record",
+        "fields": [
+            {
+                "name": "http://example.com/#hello",
+                "doc": "Hello test case",
+                "type": "string",
+            }
+        ],
+    } == rs.save()
+
+
+def test_idmap2():
+    doc = {"type": "record", "fields": {"hello": "string"}}
+    rs = cg_metaschema.RecordSchema.fromDoc(
+        doc, "http://example.com/", cg_metaschema.LoadingOptions()
+    )
+    assert "record" == rs.type
+    assert "http://example.com/#hello" == rs.fields[0].name
+    assert rs.fields[0].doc is None
+    assert "string" == rs.fields[0].type
+    assert {
+        "type": "record",
+        "fields": [{"name": "http://example.com/#hello", "type": "string"}],
+    } == rs.save()
+
+
+def test_load_pt():
+    doc = cg_metaschema.load_document(
+        file_uri(get_data("tests/pt.yml")), "", cg_metaschema.LoadingOptions()
+    )
+    assert [
+        "https://w3id.org/cwl/salad#null",
+        "http://www.w3.org/2001/XMLSchema#boolean",
+        "http://www.w3.org/2001/XMLSchema#int",
+        "http://www.w3.org/2001/XMLSchema#long",
+        "http://www.w3.org/2001/XMLSchema#float",
+        "http://www.w3.org/2001/XMLSchema#double",
+        "http://www.w3.org/2001/XMLSchema#string",
+    ] == doc.symbols
+
+
+def test_load_metaschema():
+    doc = cg_metaschema.load_document(
+        file_uri(get_data("metaschema/metaschema.yml")),
+        "",
+        cg_metaschema.LoadingOptions(),
+    )
+    with open(get_data("tests/metaschema-pre.yml")) as f:
+        pre = json.load(f)
+    saved = [d.save(relative_uris=False) for d in doc]
+    assert saved == JsonDiffMatcher(pre)
+
+
+def test_load_cwlschema():
+    doc = cg_metaschema.load_document(
+        file_uri(get_data("tests/test_schema/CommonWorkflowLanguage.yml")),
+        "",
+        cg_metaschema.LoadingOptions(),
+    )
+    with open(get_data("tests/cwl-pre.yml")) as f:
+        pre = json.load(f)
+    saved = [d.save(relative_uris=False) for d in doc]
+    assert saved == JsonDiffMatcher(pre)