Message ID | 20200406142309.211070-1-seanga2@gmail.com |
---|---|
State | Accepted |
Commit | 97c7ac214e1df5579a1f9f35d36c717e6975619a |
Headers | show |
Series | cmd: Add test and fix bugs for dm drivers | expand |
Also CC Ovidiu and Niel, since I believe they were both working on patches related to this. On 4/6/20 10:23 AM, Sean Anderson wrote: > Add a test for the dm drivers command. Also fix a null pointer dereference > revealed by said test. > > Signed-off-by: Sean Anderson <seanga2 at gmail.com> > Reviewed-by: Bin Meng <bmeng.cn at gmail.com> > Tested-by: Bin Meng <bmeng.cn at gmail.com> > Reviewed-by: Simon Glass <sjg at chromium.org> > --- > The changes in this patch were originally submitted as v3 of 7b9d60fc1ff > "cmd: Add command to dump drivers and compatible strings" [1]. I have > retained the Reviewed-by and Tested-by tags since no other changes besides > rebasing on v1 have been made. > > [1] https://patchwork.ozlabs.org/patch/1234460/ > > cmd/dm.c | 4 ++-- > drivers/core/dump.c | 3 ++- > test/py/tests/test_dm.py | 17 +++++++++++++++++ > 3 files changed, 21 insertions(+), 3 deletions(-) > create mode 100644 test/py/tests/test_dm.py > > diff --git a/cmd/dm.c b/cmd/dm.c > index 108707c298..7a90685f8b 100644 > --- a/cmd/dm.c > +++ b/cmd/dm.c > @@ -41,7 +41,7 @@ static int do_dm_dump_devres(cmd_tbl_t *cmdtp, int flag, int argc, > } > > static int do_dm_dump_drivers(cmd_tbl_t *cmdtp, int flag, int argc, > - char * const argv[]) > + char * const argv[]) > { > dm_dump_drivers(); > > @@ -94,5 +94,5 @@ U_BOOT_CMD( > "tree Dump driver model tree ('*' = activated)\n" > "dm uclass Dump list of instances for each uclass\n" > "dm devres Dump list of device resources for each device\n" > - "dm drivers Dump list of drivers and their compatible strings\n" > + "dm drivers Dump list of drivers and their compatible strings" > ); > diff --git a/drivers/core/dump.c b/drivers/core/dump.c > index e73ebeabcc..b5046398d4 100644 > --- a/drivers/core/dump.c > +++ b/drivers/core/dump.c > @@ -107,7 +107,8 @@ void dm_dump_drivers(void) > puts("Driver Compatible\n"); > puts("--------------------------------\n"); > for (entry = d; entry < d + n_ents; entry++) { > - for (match = entry->of_match; match->compatible; match++) > + for (match = entry->of_match; > + match && match->compatible; match++) > printf("%-20.20s %s\n", > match == entry->of_match ? entry->name : "", > match->compatible); > diff --git a/test/py/tests/test_dm.py b/test/py/tests/test_dm.py > new file mode 100644 > index 0000000000..f6fbf8ba4c > --- /dev/null > +++ b/test/py/tests/test_dm.py > @@ -0,0 +1,17 @@ > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (C) 2020 Sean Anderson > + > +import pytest > + > + at pytest.mark.buildconfigspec('cmd_dm') > +def test_dm_drivers(u_boot_console): > + """Test that each driver in `dm tree` is also listed in `dm drivers`.""" > + 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 drivers') > + for driver in drivers: > + assert driver in response >
On Mon, 6 Apr 2020 at 08:26, Sean Anderson <seanga2 at gmail.com> wrote: > > Also CC Ovidiu and Niel, since I believe they were both working on patches related to this. +Tom for consideration for the release if there is time > > On 4/6/20 10:23 AM, Sean Anderson wrote: > > Add a test for the dm drivers command. Also fix a null pointer dereference > > revealed by said test. > > > > Signed-off-by: Sean Anderson <seanga2 at gmail.com> > > Reviewed-by: Bin Meng <bmeng.cn at gmail.com> > > Tested-by: Bin Meng <bmeng.cn at gmail.com> > > Reviewed-by: Simon Glass <sjg at chromium.org> > > --- > > The changes in this patch were originally submitted as v3 of 7b9d60fc1ff > > "cmd: Add command to dump drivers and compatible strings" [1]. I have > > retained the Reviewed-by and Tested-by tags since no other changes besides > > rebasing on v1 have been made. > > > > [1] https://patchwork.ozlabs.org/patch/1234460/ > > > > cmd/dm.c | 4 ++-- > > drivers/core/dump.c | 3 ++- > > test/py/tests/test_dm.py | 17 +++++++++++++++++ > > 3 files changed, 21 insertions(+), 3 deletions(-) > > create mode 100644 test/py/tests/test_dm.py > > > > diff --git a/cmd/dm.c b/cmd/dm.c > > index 108707c298..7a90685f8b 100644 > > --- a/cmd/dm.c > > +++ b/cmd/dm.c > > @@ -41,7 +41,7 @@ static int do_dm_dump_devres(cmd_tbl_t *cmdtp, int flag, int argc, > > } > > > > static int do_dm_dump_drivers(cmd_tbl_t *cmdtp, int flag, int argc, > > - char * const argv[]) > > + char * const argv[]) > > { > > dm_dump_drivers(); > > > > @@ -94,5 +94,5 @@ U_BOOT_CMD( > > "tree Dump driver model tree ('*' = activated)\n" > > "dm uclass Dump list of instances for each uclass\n" > > "dm devres Dump list of device resources for each device\n" > > - "dm drivers Dump list of drivers and their compatible strings\n" > > + "dm drivers Dump list of drivers and their compatible strings" > > ); > > diff --git a/drivers/core/dump.c b/drivers/core/dump.c > > index e73ebeabcc..b5046398d4 100644 > > --- a/drivers/core/dump.c > > +++ b/drivers/core/dump.c > > @@ -107,7 +107,8 @@ void dm_dump_drivers(void) > > puts("Driver Compatible\n"); > > puts("--------------------------------\n"); > > for (entry = d; entry < d + n_ents; entry++) { > > - for (match = entry->of_match; match->compatible; match++) > > + for (match = entry->of_match; > > + match && match->compatible; match++) > > printf("%-20.20s %s\n", > > match == entry->of_match ? entry->name : "", > > match->compatible); > > diff --git a/test/py/tests/test_dm.py b/test/py/tests/test_dm.py > > new file mode 100644 > > index 0000000000..f6fbf8ba4c > > --- /dev/null > > +++ b/test/py/tests/test_dm.py > > @@ -0,0 +1,17 @@ > > +# SPDX-License-Identifier: GPL-2.0 > > +# Copyright (C) 2020 Sean Anderson > > + > > +import pytest > > + > > + at pytest.mark.buildconfigspec('cmd_dm') > > +def test_dm_drivers(u_boot_console): > > + """Test that each driver in `dm tree` is also listed in `dm drivers`.""" > > + 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 drivers') > > + for driver in drivers: > > + assert driver in response > > >
On Mon, Apr 06, 2020 at 10:23:09AM -0400, Sean Anderson wrote: > Add a test for the dm drivers command. Also fix a null pointer dereference > revealed by said test. > > Signed-off-by: Sean Anderson <seanga2 at gmail.com> > Reviewed-by: Bin Meng <bmeng.cn at gmail.com> > Tested-by: Bin Meng <bmeng.cn at gmail.com> > Reviewed-by: Simon Glass <sjg at chromium.org> Applied to u-boot/master, thanks!
diff --git a/cmd/dm.c b/cmd/dm.c index 108707c298..7a90685f8b 100644 --- a/cmd/dm.c +++ b/cmd/dm.c @@ -41,7 +41,7 @@ static int do_dm_dump_devres(cmd_tbl_t *cmdtp, int flag, int argc, } static int do_dm_dump_drivers(cmd_tbl_t *cmdtp, int flag, int argc, - char * const argv[]) + char * const argv[]) { dm_dump_drivers(); @@ -94,5 +94,5 @@ U_BOOT_CMD( "tree Dump driver model tree ('*' = activated)\n" "dm uclass Dump list of instances for each uclass\n" "dm devres Dump list of device resources for each device\n" - "dm drivers Dump list of drivers and their compatible strings\n" + "dm drivers Dump list of drivers and their compatible strings" ); diff --git a/drivers/core/dump.c b/drivers/core/dump.c index e73ebeabcc..b5046398d4 100644 --- a/drivers/core/dump.c +++ b/drivers/core/dump.c @@ -107,7 +107,8 @@ void dm_dump_drivers(void) puts("Driver Compatible\n"); puts("--------------------------------\n"); for (entry = d; entry < d + n_ents; entry++) { - for (match = entry->of_match; match->compatible; match++) + for (match = entry->of_match; + match && match->compatible; match++) printf("%-20.20s %s\n", match == entry->of_match ? entry->name : "", match->compatible); diff --git a/test/py/tests/test_dm.py b/test/py/tests/test_dm.py new file mode 100644 index 0000000000..f6fbf8ba4c --- /dev/null +++ b/test/py/tests/test_dm.py @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2020 Sean Anderson + +import pytest + + at pytest.mark.buildconfigspec('cmd_dm') +def test_dm_drivers(u_boot_console): + """Test that each driver in `dm tree` is also listed in `dm drivers`.""" + 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 drivers') + for driver in drivers: + assert driver in response