Example #1
0
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)
Example #3
0
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])
Example #4
0
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")]])
Example #5
0
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")])]])
Example #6
0
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")]])
Example #7
0
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)
Example #8
0
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])
Example #9
0
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")]])
Example #10
0
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")])]])
Example #11
0
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")]])
Example #12
0
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)