[PATCH 02/67] iotests.py: Add @skip_for_imgopts()

Max Reitz posted 67 patches 6 years, 4 months ago
[PATCH 02/67] iotests.py: Add @skip_for_imgopts()
Posted by Max Reitz 6 years, 4 months ago
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
 tests/qemu-iotests/iotests.py | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 7030900807..cdcb62c4ac 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -950,6 +950,19 @@ def skip_if_unsupported(required_formats=[], read_only=False):
         return func_wrapper
     return skip_test_decorator
 
+def skip_for_imgopts(unsupported_opts=[]):
+    '''Skip Test Decorator
+       Skips the test if imgopts contains any of the given options'''
+    def skip_test_decorator(func):
+        def func_wrapper(test_case: QMPTestCase, *args, **kwargs):
+            for opt in imgopts:
+                if any(unsupported in opt for unsupported in unsupported_opts):
+                    test_case.case_skip('{}: Option {} is unsupported'.format(
+                                        test_case, opt))
+            return func(test_case, *args, **kwargs)
+        return func_wrapper
+    return skip_test_decorator
+
 def execute_unittest(debug=False):
     """Executes unittests within the calling module."""
 
-- 
2.21.0


Re: [PATCH 02/67] iotests.py: Add @skip_for_imgopts()
Posted by John Snow 6 years, 4 months ago

On 10/1/19 3:46 PM, Max Reitz wrote:
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
>  tests/qemu-iotests/iotests.py | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
> index 7030900807..cdcb62c4ac 100644
> --- a/tests/qemu-iotests/iotests.py
> +++ b/tests/qemu-iotests/iotests.py
> @@ -950,6 +950,19 @@ def skip_if_unsupported(required_formats=[], read_only=False):
>          return func_wrapper
>      return skip_test_decorator
>  
> +def skip_for_imgopts(unsupported_opts=[]):
> +    '''Skip Test Decorator
> +       Skips the test if imgopts contains any of the given options'''
> +    def skip_test_decorator(func):
> +        def func_wrapper(test_case: QMPTestCase, *args, **kwargs):

:D

> +            for opt in imgopts:
> +                if any(unsupported in opt for unsupported in unsupported_opts):
> +                    test_case.case_skip('{}: Option {} is unsupported'.format(
> +                                        test_case, opt))
> +            return func(test_case, *args, **kwargs)
> +        return func_wrapper
> +    return skip_test_decorator
> +
>  def execute_unittest(debug=False):
>      """Executes unittests within the calling module."""
>  
> 

Reviewed-by: John Snow <jsnow@redhat.com>

Re: [PATCH 02/67] iotests.py: Add @skip_for_imgopts()
Posted by Vladimir Sementsov-Ogievskiy 6 years, 4 months ago
01.10.2019 22:46, Max Reitz wrote:
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
>   tests/qemu-iotests/iotests.py | 13 +++++++++++++
>   1 file changed, 13 insertions(+)
> 
> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
> index 7030900807..cdcb62c4ac 100644
> --- a/tests/qemu-iotests/iotests.py
> +++ b/tests/qemu-iotests/iotests.py
> @@ -950,6 +950,19 @@ def skip_if_unsupported(required_formats=[], read_only=False):
>           return func_wrapper
>       return skip_test_decorator
>   
> +def skip_for_imgopts(unsupported_opts=[]):
> +    '''Skip Test Decorator
> +       Skips the test if imgopts contains any of the given options'''
> +    def skip_test_decorator(func):
> +        def func_wrapper(test_case: QMPTestCase, *args, **kwargs):

how about

unsup = set(imgopts) & set(unsupported_opts)
if unsup:
    test_case.case_skip('... Options {} are ...', format(..., ', '.join(map(str, unsup)))

> +            for opt in imgopts:
> +                if any(unsupported in opt for unsupported in unsupported_opts):
> +                    test_case.case_skip('{}: Option {} is unsupported'.format(
> +                                        test_case, opt))
> +            return func(test_case, *args, **kwargs)
> +        return func_wrapper
> +    return skip_test_decorator
> +
>   def execute_unittest(debug=False):
>       """Executes unittests within the calling module."""
>   
> 


-- 
Best regards,
Vladimir
Re: [PATCH 02/67] iotests.py: Add @skip_for_imgopts()
Posted by Max Reitz 6 years, 4 months ago
On 03.10.19 17:19, Vladimir Sementsov-Ogievskiy wrote:
> 01.10.2019 22:46, Max Reitz wrote:
>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>> ---
>>   tests/qemu-iotests/iotests.py | 13 +++++++++++++
>>   1 file changed, 13 insertions(+)
>>
>> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
>> index 7030900807..cdcb62c4ac 100644
>> --- a/tests/qemu-iotests/iotests.py
>> +++ b/tests/qemu-iotests/iotests.py
>> @@ -950,6 +950,19 @@ def skip_if_unsupported(required_formats=[], read_only=False):
>>           return func_wrapper
>>       return skip_test_decorator
>>   
>> +def skip_for_imgopts(unsupported_opts=[]):
>> +    '''Skip Test Decorator
>> +       Skips the test if imgopts contains any of the given options'''
>> +    def skip_test_decorator(func):
>> +        def func_wrapper(test_case: QMPTestCase, *args, **kwargs):
> 
> how about
> 
> unsup = set(imgopts) & set(unsupported_opts)
> if unsup:
>     test_case.case_skip('... Options {} are ...', format(..., ', '.join(map(str, unsup)))

Sure.

Max