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()