diff --git a/tools/post_process_props.py b/tools/post_process_props.py index 78a23fb72d..d8c9cb157f 100755 --- a/tools/post_process_props.py +++ b/tools/post_process_props.py @@ -88,6 +88,8 @@ def override_optional_props(prop_list, allow_dup=False): if len(overriding_props) > 1: # duplicated props are allowed when the all have the same value if all(overriding_props[0].value == p.value for p in overriding_props): + for p in optional_props: + p.delete("overridden by %s" % str(overriding_props[0])) continue # or if dup is explicitly allowed for compat reason if allow_dup: diff --git a/tools/test_post_process_props.py b/tools/test_post_process_props.py index 44fe957d74..12d52e566d 100644 --- a/tools/test_post_process_props.py +++ b/tools/test_post_process_props.py @@ -221,11 +221,17 @@ class PropListTestcase(unittest.TestCase): stderr_redirect = io.StringIO() with contextlib.redirect_stderr(stderr_redirect): props = PropList("hello") + optional_prop = props.get_props("foo")[2] # the last foo?=false one # we have duplicated foo=true and foo=true, but that's allowed # since they have the same value self.assertTrue(override_optional_props(props)) + # foo?=false should be commented out + self.assertEqual("# Removed by post_process_props.py because " + + "overridden by foo=true\n#foo?=false", + str(optional_prop)) + def test_allowDuplicates(self): content = """ # comment