def test_attachments() -> None: path = get_data("schema_salad/tests/multidoc.yml") assert path furi = file_uri(path) l1 = Loader({}) r1, _ = l1.resolve_ref(furi) with open(path) as f: content = f.read() assert {"foo": "bar", "baz": content, "quux": content} == r1 def aa1(item: Union[CommentedMap, CommentedSeq]) -> bool: return bool(item["foo"] == "bar") l2 = Loader({}, allow_attachments=aa1) r2, _ = l2.resolve_ref(furi) assert { "foo": "bar", "baz": "This is the {first attachment}.\n", "quux": "This is the [second attachment].", } == r2 def aa2(item: Union[CommentedMap, CommentedSeq]) -> bool: return bool(item["foo"] == "baz") l3 = Loader({}, allow_attachments=aa2) r3, _ = l3.resolve_ref(furi) with open(path) as f: content = f.read() assert {"foo": "bar", "baz": content, "quux": content} == r3
def test_fetch_inject_id(): l1 = Loader({"id": "@id"}) furi1 = file_uri(get_data("schema_salad/tests/inject-id1.yml")).lower() r1, _ = l1.resolve_ref(furi1) assert {"id": furi1 + "#foo", "bar": "baz"} == r1 assert [furi1, furi1 + "#foo"] == sorted(list(k.lower() for k in l1.idx.keys())) l2 = Loader({"id": "@id"}) furi2 = file_uri(get_data("schema_salad/tests/inject-id2.yml")).lower() r2, _ = l2.resolve_ref(furi2) assert {"id": furi2, "bar": "baz"} == r2 assert [furi2] == sorted(list(k.lower() for k in l2.idx.keys())) l3 = Loader({"id": "@id"}) furi3 = file_uri(get_data("schema_salad/tests/inject-id3.yml")).lower() r3, _ = l3.resolve_ref(furi3) assert {"id": "http://example.com", "bar": "baz"} == r3 assert [furi3, "http://example.com" ] == sorted(list(k.lower() for k in l3.idx.keys()))
def test_attachments(): furi = file_uri(get_data("schema_salad/tests/multidoc.yml")) l1 = Loader({}) r1, _ = l1.resolve_ref(furi) with open(get_data("schema_salad/tests/multidoc.yml"), "rt") as f: content = f.read() assert {"foo": "bar", "baz": content, "quux": content} == r1 l2 = Loader({}, allow_attachments=lambda x: x["foo"] == "bar") r2, _ = l2.resolve_ref(furi) assert { "foo": "bar", "baz": "This is the {first attachment}.\n", "quux": "This is the [second attachment].", } == r2 l3 = Loader({}, allow_attachments=lambda x: x["foo"] == "baz") r3, _ = l3.resolve_ref(furi) with open(get_data("schema_salad/tests/multidoc.yml"), "rt") as f: content = f.read() assert {"foo": "bar", "baz": content, "quux": content} == r3
def test_fetch_inject_id() -> None: path = get_data("schema_salad/tests/inject-id1.yml") assert path if is_fs_case_sensitive(os.path.dirname(path)): def lower(item: str) -> str: return item else: def lower(item: str) -> str: return item.lower() l1 = Loader({"id": "@id"}) furi1 = file_uri(path) r1, _ = l1.resolve_ref(furi1) assert {"id": furi1 + "#foo", "bar": "baz"} == r1 assert [lower(furi1), lower(furi1 + "#foo")] == sorted( list(lower(k) for k in l1.idx.keys()) ) l2 = Loader({"id": "@id"}) path2 = get_data("schema_salad/tests/inject-id2.yml") assert path2 furi2 = file_uri(path2) r2, _ = l2.resolve_ref(furi2) assert {"id": furi2, "bar": "baz"} == r2 assert [lower(furi2)] == sorted(list(lower(k) for k in l2.idx.keys())) l3 = Loader({"id": "@id"}) path3 = get_data("schema_salad/tests/inject-id3.yml") assert path3 furi3 = file_uri(path3) r3, _ = l3.resolve_ref(furi3) assert {"id": "http://example.com", "bar": "baz"} == r3 assert [lower(furi3), "http://example.com"] == sorted( list(lower(k) for k in l3.idx.keys()) )
def test_fetch_inject_id(): lower = lambda s: s.lower() if is_fs_case_sensitive( os.path.dirname(get_data("schema_salad/tests/inject-id1.yml"))): lower = lambda a: a l1 = Loader({"id": "@id"}) furi1 = file_uri(get_data("schema_salad/tests/inject-id1.yml")) r1, _ = l1.resolve_ref(furi1) assert {"id": furi1 + "#foo", "bar": "baz"} == r1 assert [lower(furi1), lower(furi1 + "#foo") ] == sorted(list(lower(k) for k in l1.idx.keys())) l2 = Loader({"id": "@id"}) furi2 = file_uri(get_data("schema_salad/tests/inject-id2.yml")) r2, _ = l2.resolve_ref(furi2) assert {"id": furi2, "bar": "baz"} == r2 assert [lower(furi2)] == sorted(list(lower(k) for k in l2.idx.keys())) l3 = Loader({"id": "@id"}) furi3 = file_uri(get_data("schema_salad/tests/inject-id3.yml")) r3, _ = l3.resolve_ref(furi3) assert {"id": "http://example.com", "bar": "baz"} == r3 assert [lower(furi3), "http://example.com" ] == sorted(list(lower(k) for k in l3.idx.keys()))