From: Alison Schofield <[email protected]>

Unit test rescan-partitions.sh can fail because the grep test looking
for the expected partition is overly broad and can match multiple
pmem devices.

/root/ndctl/build/meson-logs/testlog.txt reports this failure:
test/rescan-partitions.sh: failed at line 50

An example of an improper grep is:
'pmem10 pmem12 pmem1p1' when only 'pmem1p1' was expected

Replace the faulty grep with a query of the lsblk JSON output that
examines the children of this blockdev only and matches on size.

This type of pesky issue is probably arising as the unit tests are
being run in more complex environments and may also be due to other
unit tests not properly cleaning up after themselves. No matter the
cause this change makes this test more robust and that's a good thing!

Reported-by: Ira Weiny <[email protected]>
Signed-off-by: Alison Schofield <[email protected]>
---
 test/rescan-partitions.sh | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/test/rescan-partitions.sh b/test/rescan-partitions.sh
index 51bbd731fb55..ccb542cb2f68 100755
--- a/test/rescan-partitions.sh
+++ b/test/rescan-partitions.sh
@@ -24,6 +24,7 @@ check_min_kver "4.16" || do_skip "may not contain fixes for 
partition rescanning
 
 check_prereq "parted"
 check_prereq "blockdev"
+check_prereq "jq"
 
 test_mode()
 {
@@ -46,7 +47,10 @@ test_mode()
        sleep 1
        blockdev --rereadpt /dev/$blockdev
        sleep 1
-       partdev="$(grep -Eo "${blockdev}.+" /proc/partitions)"
+       partdev=$(lsblk -J -o NAME,SIZE /dev/$blockdev |
+               jq -r '.blockdevices[] | .children[] |
+               select(.size == "9M") | .name')
+
        test -b /dev/$partdev
 
        # cycle the namespace, and verify the partition is read
-- 
2.37.3


Reply via email to