Bug 1845715 - Check for failure when getting RegExp match result template r=iain
[gecko.git] / taskcluster / gecko_taskgraph / test / test_util_templates.py
blobedfb13a277e3fdd31e63b8230a56676a1ea59900
1 # This Source Code Form is subject to the terms of the Mozilla Public
2 # License, v. 2.0. If a copy of the MPL was not distributed with this
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
6 import unittest
8 import mozunit
10 from gecko_taskgraph.util.templates import merge, merge_to
13 class MergeTest(unittest.TestCase):
14 def test_merge_to_dicts(self):
15 source = {"a": 1, "b": 2}
16 dest = {"b": "20", "c": 30}
17 expected = {
18 "a": 1, # source only
19 "b": 2, # source overrides dest
20 "c": 30, # dest only
22 self.assertEqual(merge_to(source, dest), expected)
23 self.assertEqual(dest, expected)
25 def test_merge_to_lists(self):
26 source = {"x": [3, 4]}
27 dest = {"x": [1, 2]}
28 expected = {"x": [1, 2, 3, 4]} # dest first
29 self.assertEqual(merge_to(source, dest), expected)
30 self.assertEqual(dest, expected)
32 def test_merge_diff_types(self):
33 source = {"x": [1, 2]}
34 dest = {"x": "abc"}
35 expected = {"x": [1, 2]} # source wins
36 self.assertEqual(merge_to(source, dest), expected)
37 self.assertEqual(dest, expected)
39 def test_merge(self):
40 first = {"a": 1, "b": 2, "d": 11}
41 second = {"b": 20, "c": 30}
42 third = {"c": 300, "d": 400}
43 expected = {
44 "a": 1,
45 "b": 20,
46 "c": 300,
47 "d": 400,
49 self.assertEqual(merge(first, second, third), expected)
51 # inputs haven't changed..
52 self.assertEqual(first, {"a": 1, "b": 2, "d": 11})
53 self.assertEqual(second, {"b": 20, "c": 30})
54 self.assertEqual(third, {"c": 300, "d": 400})
56 def test_merge_by(self):
57 source = {
58 "x": "abc",
59 "y": {"by-foo": {"quick": "fox", "default": ["a", "b", "c"]}},
61 dest = {"y": {"by-foo": {"purple": "rain", "default": ["x", "y", "z"]}}}
62 expected = {
63 "x": "abc",
64 "y": {"by-foo": {"quick": "fox", "default": ["a", "b", "c"]}},
65 } # source wins
66 self.assertEqual(merge_to(source, dest), expected)
67 self.assertEqual(dest, expected)
69 def test_merge_multiple_by(self):
70 source = {"x": {"by-foo": {"quick": "fox", "default": ["a", "b", "c"]}}}
71 dest = {"x": {"by-bar": {"purple": "rain", "default": ["x", "y", "z"]}}}
72 expected = {
73 "x": {"by-foo": {"quick": "fox", "default": ["a", "b", "c"]}}
74 } # source wins
75 self.assertEqual(merge_to(source, dest), expected)
78 if __name__ == "__main__":
79 mozunit.main()