Commit 70eaa61c authored by Christophe Dufaza's avatar Christophe Dufaza Committed by Carles Cufi
Browse files

edtlib: test "last modified" semantic for included property specs



Make sure the property specs answered by the Binding.prop2specs API
do not all claim (PropertySpec.path) they were last modified
by the top-level binding.

Signed-off-by: default avatarChristophe Dufaza <chris@openmarl.org>
parent 8181bb51
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: BSD-3-Clause

properties:
  x:
    type: int
  y:
    type: int
+7 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: BSD-3-Clause

include: base.yaml

properties:
  x:
    required: true
+21 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: BSD-3-Clause

description: |
  Top-level binding file for testing included property spec paths.

  base.yaml: specifies properties "x" and "y"
  modified.yaml: includes base.yaml, modifies property "x"
  top.yaml (this file): includes modified.yaml, specifies property "p"

  From the top-level binding, we expect:
  - "x" was last modified in modified.yaml
  - "y" was last modified in base.yaml
  - "p" was last modified in top.yaml

compatible: top-level

include: modified.yaml

properties:
  p:
    type: int
+12 −0
Original line number Diff line number Diff line
@@ -365,6 +365,18 @@ def test_include_filters():
        assert set(child.prop2specs.keys()) == {'child-prop-1', 'child-prop-2',
                                                'x', 'z'}  # root level 'y' is blocked

def test_include_paths():
    '''Test "last modified" semantic for included bindings paths.'''

    fname2path = {'base.yaml': 'test-bindings-include/base.yaml',
                  'modified.yaml': 'test-bindings-include/modified.yaml'}

    with from_here():
        top = edtlib.Binding('test-bindings-include/top.yaml', fname2path)

        assert 'modified.yaml' == os.path.basename(top.prop2specs["x"].path)
        assert 'base.yaml' == os.path.basename(top.prop2specs["y"].path)
        assert 'top.yaml' == os.path.basename(top.prop2specs["p"].path)

def test_bus():
    '''Test 'bus:' and 'on-bus:' in bindings'''