Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

from io import BytesIO
import metamerge
import mozunit
ancestor = """
global-new-deleted: A
global-new-changed: A
global-current-deleted: A
global-current-changed: A
[failing-test.html]
[Unchanged subtest]
expected: FAIL
[New deleted subtest]
expected: FAIL
[New modified subtest]
expected: TIMEOUT
[Current deleted subtest]
expected: FAIL
[New modified current deleted]
expected: FAIL
[Ancestor no expected new expected]
bug: 1234
[new-deleted-test.html]
[Deleted subtest]
expected: FAIL
[current-deleted-test.html]
[Deleted subtest]
expected: FAIL
[test-modified.html]
expected: TIMEOUT
[new-modified-current-deleted.html]
expected:
if os == "linux": FAIL
TIMEOUT
[new-add-expected-with-subtest.html]
[subtest]
expected: FAIL
[current-add-expected-with-subtest.html]
[subtest]
expected: FAIL
"""
new = """
global-new-added: A
global-new-changed: B
global-current-deleted: A
global-current-changed: A
[failing-test.html]
[Unchanged subtest]
expected: FAIL
[New added subtest]
expected: FAIL
[New modified subtest]
expected:
if os == "linux": FAIL
TIMEOUT
[Current deleted subtest]
expected: FAIL
[New modified current deleted]
expected: TIMEOUT
[Ancestor no expected new expected]
bug: 1234
expected: FAIL
[new-added-test.html]
[Added subtest]
expected: FAIL
[current-deleted-test.html]
[Deleted subtest]
expected: FAIL
[test-modified.html]
expected:
if os == "linux": FAIL
[new-modified-current-deleted.html]
expected:
if os == "linux": FAIL
if os == "mac": FAIL
TIMEOUT
[new-add-expected-with-subtest.html]
expected: FAIL
[subtest]
expected: FAIL
[current-add-expected-with-subtest.html]
[subtest]
expected: FAIL
"""
current = """
global-new-deleted: A
global-new-changed: A
global-current-added: A
global-current-changed: B
[failing-test.html]
[Unchanged subtest]
expected: FAIL
[New deleted subtest]
expected: FAIL
[New modified subtest]
expected: TIMEOUT
[Current added subtest]
expected: FAIL
[Ancestor no expected new expected]
bug: 1234
[new-deleted-test.html]
[Deleted subtest]
expected: FAIL
[current-added-test.html]
[Added subtest]
expected: FAIL
[new-add-expected-with-subtest.html]
[subtest]
expected: FAIL
[current-add-expected-with-subtest.html]
expected: FAIL
[subtest]
expected: FAIL
"""
updated = """global-new-deleted: A
global-new-changed: A
global-current-added: A
global-current-changed: B
[failing-test.html]
[Unchanged subtest]
expected: FAIL
[New modified subtest]
expected:
if os == "linux": FAIL
TIMEOUT
[Current added subtest]
expected: FAIL
[Ancestor no expected new expected]
expected: FAIL
bug: 1234
[New added subtest]
expected: FAIL
[New modified current deleted]
expected: TIMEOUT
[current-added-test.html]
[Added subtest]
expected: FAIL
[new-add-expected-with-subtest.html]
expected: FAIL
[subtest]
expected: FAIL
[current-add-expected-with-subtest.html]
expected: FAIL
[subtest]
expected: FAIL
[new-added-test.html]
[Added subtest]
expected: FAIL
[test-modified.html]
expected:
if os == "linux": FAIL
[new-modified-current-deleted.html]
expected:
if os == "linux": FAIL
if os == "mac": FAIL
TIMEOUT
"""
def test_merge():
def get_manifest(str_data):
bytes_io = BytesIO(str_data.encode("utf-8"))
return metamerge.compile(bytes_io, metamerge.data_cls_getter)
ancestor_manifest = get_manifest(ancestor)
current_manifest = get_manifest(current)
new_manifest = get_manifest(new)
result = metamerge.make_changes(ancestor_manifest, current_manifest, new_manifest)
assert result == updated
if __name__ == "__main__":
mozunit.main()