[elbe-devel] [PATCH 1/5] test: support ElbeTestCase.params being a callable

Bastian Germann bage at linutronix.de
Wed Jul 29 15:10:30 CEST 2020


Am 23.07.20 um 04:51 schrieb Olivier Dion:
> Signed-off-by: Torben Hohn <torben.hohn at linutronix.de>
> Reviewed-by: Olivier Dion <dion at linutronix.de>

Who is the author? If it is Torben, please keep the From: line.
If it is Olivier, the S-o-b/R-b lines are bogus.

> ---
>  elbepack/commands/test.py | 24 +++++++++++++++++-------
>  1 file changed, 17 insertions(+), 7 deletions(-)
> 
> diff --git a/elbepack/commands/test.py b/elbepack/commands/test.py
> index 31f1ae2d..e65b0739 100644
> --- a/elbepack/commands/test.py
> +++ b/elbepack/commands/test.py
> @@ -5,7 +5,6 @@
>  
>  # elbepack/commands/test.py - Elbe unit test wrapper
>  
> -import copy
>  import enum
>  import optparse
>  import os
> @@ -25,12 +24,20 @@ class ElbeTestCase(unittest.TestCase):
>  
>      level = ElbeTestLevel.BASE
>  
> +    def __init__(self, methodName='runTest', param=None):
> +        self.methodName = methodName
> +        self.param = param
> +        super().__init__(methodName)
> +
>      def __str__(self):
>          name = super(ElbeTestCase, self).__str__()
> -        if hasattr(self, "params"):
> -            return "%s : params=%s" % (name, getattr(self, "params"))
> +        if self.param:
> +            return "%s : param=%s" % (name, self.param)
>          return name
>  
> +    def parameterize(self, param):
> +        return self.__class__(methodName=self.methodName, param=param)
> +
>  # TODO:py3 - Remove useless object inheritance
>  # pylint: disable=useless-object-inheritance
>  class ElbeTestSuite(object):
> @@ -49,10 +56,13 @@ class ElbeTestSuite(object):
>                  self.tests.append(test)
>                  continue
>  
> -            for param in test.params:
> -                clone        = copy.deepcopy(test)
> -                clone.params = param
> -                self.tests.append(clone)
> +            if callable(test.params):
> +                params = test.params()
> +            else:
> +                params = test.params
> +
> +            for param in params:
> +                self.tests.append(test.parameterize(param))
>  
>      def __iter__(self):
>          for test in self.tests:
> 


More information about the elbe-devel mailing list