Message ID | 20210210095128.22732-1-mreitz@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | iotests: Consistent $IMGOPTS boundary matching | expand |
On 2/10/21 3:51 AM, Max Reitz wrote: > To disallow certain refcount_bits values, some _unsupported_imgopts > invocations look like "refcount_bits=1[^0-9]", i.e. they match an > integer boundary with [^0-9]. This expression does not match the end of > the string, though, so it breaks down when refcount_bits is the last > option (which it tends to be after the rewrite of the check script in > Python). > > Those invocations could use \b or \> instead, but those are not > portable. They could use something like \([^0-9]\|$\), but that would > be cumbersome. To make it simple and keep the existing invocations > working, just let _unsupported_imgopts match the regex against $IMGOPTS > plus a trailing space. > > Suggested-by: Eric Blake <eblake@redhat.com> > Signed-off-by: Max Reitz <mreitz@redhat.com> > --- > Supersedes "iotests: Fix unsupported_imgopts for refcount_bits", and can > be reproduced in the same way: > > $ ./check -qcow2 -o refcount_bits=1 7 15 29 58 62 66 68 80 > > (those tests should be skipped) > --- > tests/qemu-iotests/common.rc | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) Much smaller fix ;) Reviewed-by: Eric Blake <eblake@redhat.com> > > diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc > index 77c37e8312..65cdba5723 100644 > --- a/tests/qemu-iotests/common.rc > +++ b/tests/qemu-iotests/common.rc > @@ -885,7 +885,9 @@ _unsupported_imgopts() > { > for bad_opt > do > - if echo "$IMGOPTS" | grep -q 2>/dev/null "$bad_opt" > + # Add a space so tests can match for whitespace that marks the > + # end of an option (\b or \> are not portable) > + if echo "$IMGOPTS " | grep -q 2>/dev/null "$bad_opt" > then > _notrun "not suitable for image option: $bad_opt" > fi >
Am 10.02.2021 um 10:51 hat Max Reitz geschrieben: > To disallow certain refcount_bits values, some _unsupported_imgopts > invocations look like "refcount_bits=1[^0-9]", i.e. they match an > integer boundary with [^0-9]. This expression does not match the end of > the string, though, so it breaks down when refcount_bits is the last > option (which it tends to be after the rewrite of the check script in > Python). > > Those invocations could use \b or \> instead, but those are not > portable. They could use something like \([^0-9]\|$\), but that would > be cumbersome. To make it simple and keep the existing invocations > working, just let _unsupported_imgopts match the regex against $IMGOPTS > plus a trailing space. > > Suggested-by: Eric Blake <eblake@redhat.com> > Signed-off-by: Max Reitz <mreitz@redhat.com> Thanks, applied to the block branch. Kevin
diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc index 77c37e8312..65cdba5723 100644 --- a/tests/qemu-iotests/common.rc +++ b/tests/qemu-iotests/common.rc @@ -885,7 +885,9 @@ _unsupported_imgopts() { for bad_opt do - if echo "$IMGOPTS" | grep -q 2>/dev/null "$bad_opt" + # Add a space so tests can match for whitespace that marks the + # end of an option (\b or \> are not portable) + if echo "$IMGOPTS " | grep -q 2>/dev/null "$bad_opt" then _notrun "not suitable for image option: $bad_opt" fi
To disallow certain refcount_bits values, some _unsupported_imgopts invocations look like "refcount_bits=1[^0-9]", i.e. they match an integer boundary with [^0-9]. This expression does not match the end of the string, though, so it breaks down when refcount_bits is the last option (which it tends to be after the rewrite of the check script in Python). Those invocations could use \b or \> instead, but those are not portable. They could use something like \([^0-9]\|$\), but that would be cumbersome. To make it simple and keep the existing invocations working, just let _unsupported_imgopts match the regex against $IMGOPTS plus a trailing space. Suggested-by: Eric Blake <eblake@redhat.com> Signed-off-by: Max Reitz <mreitz@redhat.com> --- Supersedes "iotests: Fix unsupported_imgopts for refcount_bits", and can be reproduced in the same way: $ ./check -qcow2 -o refcount_bits=1 7 15 29 58 62 66 68 80 (those tests should be skipped) --- tests/qemu-iotests/common.rc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)