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]] -=-=-=-=-=-=-=-=-=-=-=-
