| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- # SPDX-License-Identifier: GPL-2.0
- # Copyright (C) 2020 Sean Anderson
- import pytest
- @pytest.mark.buildconfigspec('cmd_dm')
- def test_dm_compat(u_boot_console):
- """Test that each driver in `dm tree` is also listed in `dm compat`."""
- response = u_boot_console.run_command('dm tree')
- driver_index = response.find('Driver')
- assert driver_index != -1
- drivers = (line[driver_index:].split()[0]
- for line in response[:-1].split('\n')[2:])
- response = u_boot_console.run_command('dm compat')
- for driver in drivers:
- assert driver in response
- # check sorting - output looks something like this:
- # testacpi 0 [ ] testacpi_drv |-- acpi-test
- # testacpi 1 [ ] testacpi_drv | `-- child
- # pci_emul_p 1 [ ] pci_emul_parent_drv |-- pci-emul2
- # pci_emul 5 [ ] sandbox_swap_case_em | `-- emul2@1f,0
- # The number of '| ' and '--' matches indicate the indent level. We start
- # checking sorting only after UCLASS_AXI_EMUL after which the names should
- # be sorted.
- response = u_boot_console.run_command('dm tree -s')
- lines = response.split('\n')[2:]
- stack = [] # holds where we were up to at the previous indent level
- prev = '' # uclass name of previous line
- start = False
- for line in lines:
- indent = line.count('| ') + ('--' in line)
- cur = line.split()[0]
- if not start:
- if cur != 'axi_emul':
- continue
- start = True
- # Handle going up or down an indent level
- if indent > len(stack):
- stack.append(prev)
- prev = ''
- elif indent < len(stack):
- prev = stack.pop()
- # Check that the current uclass name is not alphabetically before the
- # previous one
- if 'emul' not in cur and cur < prev:
- print('indent', cur >= prev, indent, prev, cur, stack)
- assert cur >= prev
- prev = cur
- @pytest.mark.buildconfigspec('cmd_dm')
- def test_dm_drivers(u_boot_console):
- """Test that each driver in `dm compat` is also listed in `dm drivers`."""
- response = u_boot_console.run_command('dm compat')
- drivers = (line[:20].rstrip() for line in response[:-1].split('\n')[2:])
- response = u_boot_console.run_command('dm drivers')
- for driver in drivers:
- assert driver in response
- @pytest.mark.buildconfigspec('cmd_dm')
- def test_dm_static(u_boot_console):
- """Test that each driver in `dm static` is also listed in `dm drivers`."""
- response = u_boot_console.run_command('dm static')
- drivers = (line[:25].rstrip() for line in response[:-1].split('\n')[2:])
- response = u_boot_console.run_command('dm drivers')
- for driver in drivers:
- assert driver in response
- @pytest.mark.buildconfigspec("cmd_dm")
- def test_dm_uclass(u_boot_console):
- response = u_boot_console.run_command("dm uclass")
- @pytest.mark.buildconfigspec("cmd_dm")
- def test_dm_devres(u_boot_console):
- response = u_boot_console.run_command("dm devres")
|