Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9a326367 authored by Jiyong Park's avatar Jiyong Park
Browse files

Handle the case when non-optional props have the same value

foo=true
foo=true
foo?=false

Consider the above case: Then the duplication of foo is allowed because
they have the same value (true). However, there was a bug that the
optional assirgnment foo?=false is left unmodified.

This fixes the bug by commenting such optional assignments.

Exempt-From-Owner-Approval: fixes a broken build

Bug: 117892318
Bug: 158735147
Test: atest test_post_process_props
Test: m out/target/product/vsoc_x86/vendor/build.prop for  cf_x86_auto
Change-Id: Iba9b61d9779d93e86d9bead2286f945f8d51ab1d
parent b302cdf6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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:
+6 −0
Original line number Diff line number Diff line
@@ -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