Dropping this from the final pull request since, while useful, it is a
feature addition.

Steve

On Mon, Jun 22, 2020 at 8:01 AM Steve Sakoman <[email protected]> wrote:
>
> From: Konrad Weihmann <[email protected]>
>
> Add new decorator which behaves like OEHasPackage, but
> fails the testcase if a dependency isn't met.
>
> This helps to identify missing packages in the image
> under test when using static test suite lists, otherwise
> a missing package won't fail the overall test suite and
> errors might slip through unnoticed
>
> Signed-off-by: Konrad Weihmann <[email protected]>
> Signed-off-by: Richard Purdie <[email protected]>
> (cherry picked from commit c5be39df1494f33e2cae116e4930f2a0f3dd2000)
> Signed-off-by: Steve Sakoman <[email protected]>
> ---
>  meta/lib/oeqa/runtime/decorator/package.py | 34 ++++++++++++++++++++--
>  1 file changed, 32 insertions(+), 2 deletions(-)
>
> diff --git a/meta/lib/oeqa/runtime/decorator/package.py 
> b/meta/lib/oeqa/runtime/decorator/package.py
> index 4c5ca198b0..57178655cc 100644
> --- a/meta/lib/oeqa/runtime/decorator/package.py
> +++ b/meta/lib/oeqa/runtime/decorator/package.py
> @@ -46,11 +46,41 @@ class OEHasPackage(OETestDecorator):
>              self.logger.debug(msg)
>              if not self.case.tc.image_packages.isdisjoint(unneed_pkgs):
>                  msg = "Test can't run with %s installed" % ', 
> or'.join(unneed_pkgs)
> -                self.case.skipTest(msg)
> +                self._decorator_fail(msg)
>
>          if need_pkgs:
>              msg = 'Checking if at least one of %s is installed' % ', 
> '.join(need_pkgs)
>              self.logger.debug(msg)
>              if self.case.tc.image_packages.isdisjoint(need_pkgs):
>                  msg = "Test requires %s to be installed" % ', 
> or'.join(need_pkgs)
> -                self.case.skipTest(msg)
> +                self._decorator_fail(msg)
> +
> +    def _decorator_fail(self, msg):
> +        self.case.skipTest(msg)
> +
> +@registerDecorator
> +class OERequirePackage(OEHasPackage):
> +    """
> +        Checks if image has packages (un)installed.
> +        It is almost the same as OEHasPackage, but if dependencies are 
> missing
> +        the test case fails.
> +
> +        The argument must be a string, set, or list of packages that must be
> +        installed or not present in the image.
> +
> +        The way to tell a package must not be in an image is using an
> +        exclamation point ('!') before the name of the package.
> +
> +        If test depends on pkg1 or pkg2 you need to use:
> +        @OERequirePackage({'pkg1', 'pkg2'})
> +
> +        If test depends on pkg1 and pkg2 you need to use:
> +        @OERequirePackage('pkg1')
> +        @OERequirePackage('pkg2')
> +
> +        If test depends on pkg1 but pkg2 must not be present use:
> +        @OERequirePackage({'pkg1', '!pkg2'})
> +    """
> +
> +    def _decorator_fail(self, msg):
> +        self.case.fail(msg)
> --
> 2.17.1
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#139838): 
https://lists.openembedded.org/g/openembedded-core/message/139838
Mute This Topic: https://lists.openembedded.org/mt/75044327/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub  
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to