def test_apply_merge_on_dicts(): base = {"metadata": {"a": {"ting": 123}, "b": {"tang": 456}}} local = copy.deepcopy(base) local["metadata"]["a"]["ting"] += 1 remote = copy.deepcopy(base) remote["metadata"]["a"]["ting"] -= 1 bld = diff(base, local) brd = diff(base, remote) path, (bld, brd) = ensure_common_path((), [bld, brd]) merge_decisions = [create_decision_item(action="remote", common_path=path, local_diff=bld, remote_diff=brd)] assert remote == apply_decisions(base, merge_decisions)
def test_apply_merge_on_dicts(): base = {"metadata": {"a": {"ting": 123}, "b": {"tang": 456}}} local = copy.deepcopy(base) local["metadata"]["a"]["ting"] += 1 remote = copy.deepcopy(base) remote["metadata"]["a"]["ting"] -= 1 bld = diff(base, local) brd = diff(base, remote) path, (bld, brd) = ensure_common_path((), [bld, brd]) merge_decisions = [ create_decision_item(action="remote", common_path=path, local_diff=bld, remote_diff=brd) ] assert remote == apply_decisions(base, merge_decisions)
def test_ensure_common_path_one_sided_remote(): diffs = [[op_patch("c", [op_remove("d")])], []] res = ensure_common_path(("a", "b"), diffs) assert res == (("a", "b", "c"), [[op_remove("d")], None])
def test_ensure_common_path_one_sided_empty(): diffs = [[], [op_patch("c", [op_remove("d")])]] res = ensure_common_path(("a", "b"), diffs) assert res == (("a", "b", "c"), [None, [op_remove("d")]])
def test_ensure_common_path_multilevel_intermediate(): diffs = [[op_patch("c", [op_patch("d", [op_remove("f")])])], [op_patch("c", [op_patch("e", [op_remove("g")])])]] res = ensure_common_path(("a", "b"), diffs) assert res == (("a", "b", "c"), [[op_patch("d", [op_remove("f")])], [op_patch("e", [op_remove("g")])]])
def test_ensure_common_path_single_level(): diffs = [[op_patch("c", [op_remove("e")])], [op_patch("c", [op_remove("d")])]] res = ensure_common_path(("a", "b"), diffs) assert res == (("a", "b", "c"), [[op_remove("e")], [op_remove("d")]])
def test_ensure_common_path_no_change(): diffs = [[op_remove("c")], [op_patch("c", [op_remove("d")])]] res = ensure_common_path(("a", "b"), diffs) assert res == (("a", "b"), diffs)