1from io import BytesIO 2 3import mozunit 4 5import metamerge 6 7ancestor = """ 8global-new-deleted: A 9global-new-changed: A 10global-current-deleted: A 11global-current-changed: A 12 13[failing-test.html] 14 [Unchanged subtest] 15 expected: FAIL 16 17 [New deleted subtest] 18 expected: FAIL 19 20 [New modified subtest] 21 expected: TIMEOUT 22 23 [Current deleted subtest] 24 expected: FAIL 25 26 [New modified current deleted] 27 expected: FAIL 28 29 [Ancestor no expected new expected] 30 bug: 1234 31 32[new-deleted-test.html] 33 [Deleted subtest] 34 expected: FAIL 35 36[current-deleted-test.html] 37 [Deleted subtest] 38 expected: FAIL 39 40[test-modified.html] 41 expected: TIMEOUT 42 43[new-modified-current-deleted.html] 44 expected: 45 if os == "linux": FAIL 46 TIMEOUT 47 48[new-add-expected-with-subtest.html] 49 [subtest] 50 expected: FAIL 51 52[current-add-expected-with-subtest.html] 53 [subtest] 54 expected: FAIL 55""" 56 57new = """ 58global-new-added: A 59global-new-changed: B 60global-current-deleted: A 61global-current-changed: A 62 63[failing-test.html] 64 [Unchanged subtest] 65 expected: FAIL 66 67 [New added subtest] 68 expected: FAIL 69 70 [New modified subtest] 71 expected: 72 if os == "linux": FAIL 73 TIMEOUT 74 75 [Current deleted subtest] 76 expected: FAIL 77 78 [New modified current deleted] 79 expected: TIMEOUT 80 81 [Ancestor no expected new expected] 82 bug: 1234 83 expected: FAIL 84 85[new-added-test.html] 86 [Added subtest] 87 expected: FAIL 88 89[current-deleted-test.html] 90 [Deleted subtest] 91 expected: FAIL 92 93[test-modified.html] 94 expected: 95 if os == "linux": FAIL 96 97[new-modified-current-deleted.html] 98 expected: 99 if os == "linux": FAIL 100 if os == "mac": FAIL 101 TIMEOUT 102 103[new-add-expected-with-subtest.html] 104 expected: FAIL 105 [subtest] 106 expected: FAIL 107 108[current-add-expected-with-subtest.html] 109 [subtest] 110 expected: FAIL 111""" 112 113current = """ 114global-new-deleted: A 115global-new-changed: A 116global-current-added: A 117global-current-changed: B 118 119[failing-test.html] 120 [Unchanged subtest] 121 expected: FAIL 122 123 [New deleted subtest] 124 expected: FAIL 125 126 [New modified subtest] 127 expected: TIMEOUT 128 129 [Current added subtest] 130 expected: FAIL 131 132 [Ancestor no expected new expected] 133 bug: 1234 134 135[new-deleted-test.html] 136 [Deleted subtest] 137 expected: FAIL 138 139[current-added-test.html] 140 [Added subtest] 141 expected: FAIL 142 143[new-add-expected-with-subtest.html] 144 [subtest] 145 expected: FAIL 146 147[current-add-expected-with-subtest.html] 148 expected: FAIL 149 [subtest] 150 expected: FAIL 151""" 152 153updated = """global-new-deleted: A 154global-new-changed: A 155global-current-added: A 156global-current-changed: B 157[failing-test.html] 158 [Unchanged subtest] 159 expected: FAIL 160 161 [New modified subtest] 162 expected: 163 if os == "linux": FAIL 164 TIMEOUT 165 166 [Current added subtest] 167 expected: FAIL 168 169 [Ancestor no expected new expected] 170 expected: FAIL 171 bug: 1234 172 173 [New added subtest] 174 expected: FAIL 175 176 [New modified current deleted] 177 expected: TIMEOUT 178 179 180[current-added-test.html] 181 [Added subtest] 182 expected: FAIL 183 184 185[new-add-expected-with-subtest.html] 186 expected: FAIL 187 [subtest] 188 expected: FAIL 189 190 191[current-add-expected-with-subtest.html] 192 expected: FAIL 193 [subtest] 194 expected: FAIL 195 196 197[new-added-test.html] 198 [Added subtest] 199 expected: FAIL 200 201 202[test-modified.html] 203 expected: 204 if os == "linux": FAIL 205 206[new-modified-current-deleted.html] 207 expected: 208 if os == "linux": FAIL 209 if os == "mac": FAIL 210 TIMEOUT 211""" 212 213 214def test_merge(): 215 def get_manifest(str_data): 216 bytes_io = BytesIO(str_data.encode("utf-8")) 217 return metamerge.compile(bytes_io, metamerge.data_cls_getter) 218 219 ancestor_manifest = get_manifest(ancestor) 220 current_manifest = get_manifest(current) 221 new_manifest = get_manifest(new) 222 223 result = metamerge.make_changes(ancestor_manifest, current_manifest, new_manifest) 224 assert result == updated 225 226 227if __name__ == "__main__": 228 mozunit.main() 229