1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
#
# Copyright (C) 2019-2025 Mathieu Parent <math.parent@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from gitlabracadabra.dictutils import update_dict_with_defaults
from gitlabracadabra.tests.case import TestCase
class TestDictUtils(TestCase):
"""Test gitlabracadabra.dictutils."""
def test_update_dict_with_defaults(self):
"""Test update_dict_with_defaults."""
defaults = {
".foo": {
"not_overridden_string": "foo",
"not_overridden_dict": {"foo": {"bar": "buz"}},
"not_overridden_list": ["ab", "cd"],
"overridden_string": "D_foo",
"overridden_dict": {"D_foo": {"D_bar": "D_buz"}},
"overridden_list": ["D_ab", "D_cd"],
},
}
target = {
".foo": {
"overridden_string": "O_foo",
"overridden_dict": {"D_foo": {"O_bar": "O_buz"}},
"overridden_list": ["O_ab", "O_cd"],
},
}
update_dict_with_defaults(target, defaults)
expected = {
".foo": {
"not_overridden_string": "foo",
"not_overridden_dict": {"foo": {"bar": "buz"}},
"not_overridden_list": ["ab", "cd"],
"overridden_string": "O_foo",
"overridden_dict": {"D_foo": {"D_bar": "D_buz", "O_bar": "O_buz"}},
"overridden_list": ["O_ab", "O_cd"],
},
}
assert target == expected
def test_update_dict_with_defaults_aggregate(self):
"""Test update_dict_with_defaults with aggregate=True."""
defaults = {
".foo": {
"not_overridden_string": "foo",
"not_overridden_dict": {"foo": {"bar": "buz"}},
"not_overridden_list": ["ab", "cd"],
"overridden_string": "D_foo",
"overridden_dict": {"D_foo": {"D_bar": "D_buz"}},
"overridden_list": ["D_ab", "D_cd"],
},
}
target = {
".foo": {
"overridden_string": "O_foo",
"overridden_dict": {"D_foo": {"O_bar": "O_buz"}},
"overridden_list": ["O_ab", "O_cd"],
},
}
update_dict_with_defaults(target, defaults, aggregate=True)
expected = {
".foo": {
"not_overridden_string": "foo",
"not_overridden_dict": {"foo": {"bar": "buz"}},
"not_overridden_list": ["ab", "cd"],
"overridden_string": "O_foo",
"overridden_dict": {"D_foo": {"D_bar": "D_buz", "O_bar": "O_buz"}},
"overridden_list": ["D_ab", "D_cd", "O_ab", "O_cd"],
},
}
assert target == expected
|