summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2016-01-26 15:26:04 -0700
committerSimon Glass <sjg@chromium.org>2016-01-28 21:01:24 -0700
commitd20e5e976f70bd2e230787091a88278dfe6e5192 (patch)
tree981317ea28ce44df1173c5cbbaac6037da56856f /test
parenta2ec560647e90250183e379799db957970cb260e (diff)
downloadu-boot-imx-d20e5e976f70bd2e230787091a88278dfe6e5192.zip
u-boot-imx-d20e5e976f70bd2e230787091a88278dfe6e5192.tar.gz
u-boot-imx-d20e5e976f70bd2e230787091a88278dfe6e5192.tar.bz2
test/py: Provide custom IDs when parametrizing tests
When pytest generates the name for parametrized tests, simple parameter values (ints, strings) get used directly, but more complex values such as dicts are not handled. This yields test names such as: dfu[env__usb_dev_port0-env__dfu_config0] dfu[env__usb_dev_port0-env__dfu_config1] Add some code to extract a custom fixture ID from the fixture values, so that we end up with meaningful names such as: dfu[micro_b-emmc] dfu[devport2-ram] If the boardenv file doesn't define custom names, the code falls back to the old algorithm. Signed-off-by: Stephen Warren <swarren@nvidia.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'test')
-rw-r--r--test/py/conftest.py8
-rw-r--r--test/py/tests/test_dfu.py3
-rw-r--r--test/py/tests/test_ums.py3
3 files changed, 13 insertions, 1 deletions
diff --git a/test/py/conftest.py b/test/py/conftest.py
index a4e54c6..9c9426a 100644
--- a/test/py/conftest.py
+++ b/test/py/conftest.py
@@ -225,7 +225,13 @@ def pytest_generate_tests(metafunc):
# ... otherwise, see if there's a key that contains a list of
# values to use instead.
vals = subconfig.get(fn + 's', [])
- metafunc.parametrize(fn, vals)
+ def fixture_id(index, val):
+ try:
+ return val["fixture_id"]
+ except:
+ return fn + str(index)
+ ids = [fixture_id(index, val) for (index, val) in enumerate(vals)]
+ metafunc.parametrize(fn, vals, ids=ids)
@pytest.fixture(scope='function')
def u_boot_console(request):
diff --git a/test/py/tests/test_dfu.py b/test/py/tests/test_dfu.py
index c09b902..bb70008 100644
--- a/test/py/tests/test_dfu.py
+++ b/test/py/tests/test_dfu.py
@@ -21,6 +21,7 @@ For example:
env__usb_dev_ports = (
{
+ "fixture_id": "micro_b",
"tgt_usb_ctlr": "0",
"host_usb_dev_node": "/dev/usbdev-p2371-2180",
# This parameter is optional /if/ you only have a single board
@@ -32,10 +33,12 @@ env__usb_dev_ports = (
env__dfu_configs = (
# eMMC, partition 1
{
+ "fixture_id": "emmc",
"alt_info": "/dfu_test.bin ext4 0 1;/dfu_dummy.bin ext4 0 1",
"cmd_params": "mmc 0",
},
)
+
b) udev rules to set permissions on devices nodes, so that sudo is not
required. For example:
diff --git a/test/py/tests/test_ums.py b/test/py/tests/test_ums.py
index 21d40a9..8c3ee2b 100644
--- a/test/py/tests/test_ums.py
+++ b/test/py/tests/test_ums.py
@@ -29,6 +29,7 @@ env__mount_points = (
env__usb_dev_ports = (
{
+ "fixture_id": "micro_b",
"tgt_usb_ctlr": "0",
"host_ums_dev_node": "/dev/disk/by-path/pci-0000:00:14.0-usb-0:13:1.0-scsi-0:0:0:0",
},
@@ -37,6 +38,7 @@ env__usb_dev_ports = (
env__block_devs = (
# eMMC; always present
{
+ "fixture_id": "emmc",
"type": "mmc",
"id": "0",
# The following two properties are optional.
@@ -48,6 +50,7 @@ env__block_devs = (
},
# SD card; present since I plugged one in
{
+ "fixture_id": "sd",
"type": "mmc",
"id": "1"
},