Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • caosdb/src/caosdb-crawler
1 result
Show changes
Commits on Source (4)
......@@ -236,10 +236,11 @@ startswith: bool, optional
refs.extend(referencing_entities[rtname])
found = True
if not found:
raise NotImplementedError(
raise RuntimeError(
f"Could not find referencing entities of type(s): {prop.value}\n"
f"for registered identifiable:\n{registered_identifiable}\n"
f"There were {len(referencing_entities)} referencing entities to choose from."
f"There were {len(referencing_entities)} referencing entities to choose from.\n"
f"This error can also occur in case of merge conflicts in the referencing entities."
)
return refs
......
......@@ -405,7 +405,6 @@ def test_split_into_inserts_and_updates_with_copy_attr(crawler_mocked_identifiab
crawler.identifiableAdapter.retrieve_identified_record_for_identifiable.assert_called()
@pytest.mark.xfail(reason="https://gitlab.com/linkahead/linkahead-crawler/-/issues/88")
@patch("caoscrawler.identifiable_adapters.cached_query",
new=Mock(side_effect=mock_cached_only_rt))
def test_split_iiau_with_unmergeable_list_items():
......@@ -429,12 +428,16 @@ Identifiables
id_A: [prop_ident]
id_B: [prop_ident, "is_referenced_by: A"]
id_C: [prop_other, "is_referenced_by: B"]
Data
----
b1: ("same", 23)
b2: ("same", 42)
c1: (23)
c2: (42)
b1: ("same", c1)
b2: ("same", c2)
a: ([b1, b2])
"""
......@@ -469,18 +472,13 @@ a: ([b1, b2])
crawler = Crawler(identifiableAdapter=ident_adapter)
# This should give a merge conflict, and not
# "Could not find referencing entities of type(s): A"
# from IPython import embed; embed()
with raises(RuntimeError) as rte:
crawler.synchronize(commit_changes=False,
crawled_data=[rec_a, *rec_b, *rec_c])
assert not isinstance(rte.value, NotImplementedError), \
"Exception must not be NotImplementedError, but plain RuntimeError."
assert "Could not find referencing entities" not in rte.value.args[0]
assert "merging impossible" in rte.something
# crawler.split_into_inserts_and_updates(ent_list=[rec_a, *rec_b, *rec_c])
assert "Could not find referencing entities" in rte.value.args[0]
assert "merge conflicts in the referencing" in rte.value.args[0]
def test_has_missing_object_in_references():
......@@ -785,8 +783,8 @@ def test_split_into_inserts_and_updates_backref(crawler_mocked_for_backref_test)
entlist = [referenced, db.Record(name="A").add_parent("BR").add_property("ref", referenced), ]
# Test without referencing object
# currently a NotImplementedError is raised if necessary properties are missing.
with raises(NotImplementedError):
# currently a RuntimeError is raised if necessary properties are missing.
with raises(RuntimeError):
crawler.split_into_inserts_and_updates([db.Record(name="B").add_parent("C")])
# identifiables were not yet checked
......