[OE-core] [PATCH v2] oe-selftest: Add bitbake-layer create-layer test

Richard Purdie richard.purdie at linuxfoundation.org
Sat Jun 30 09:57:35 UTC 2018


On Fri, 2018-06-29 at 12:54 -0500, Joshua Watt wrote:
> Adds a test that creates a layer, adds it to bblayers.conf, then
> ensure
> that it appears properly in bitbake-layers show-layers.
> 
> Signed-off-by: Joshua Watt <JPEWhacker at gmail.com>
> ---
>  meta/lib/oeqa/selftest/cases/bblayers.py | 26
> +++++++++++++++++++++++-
>  1 file changed, 25 insertions(+), 1 deletion(-)

I ran this on the autobuilder and it showed:

https://autobuilder.yocto.io/builders/nightly-oe-selftest/builds/1154/steps/Running%20oe-selftest/logs/stdio

Tests were working, it runs this test, then everything fails:

2018-06-29 23:50:23,781 - oe-selftest - INFO -  ... OK (719.550s)
2018-06-29 23:50:23,783 - oe-selftest - INFO -   test_bitbakelayers_add_remove (bblayers.BitbakeLayers)
2018-06-29 23:50:39,742 - oe-selftest - INFO -  ... OK (15.959s)
2018-06-29 23:50:39,742 - oe-selftest - INFO -   test_bitbakelayers_createlayer (bblayers.BitbakeLayers)
2018-06-29 23:50:49,526 - oe-selftest - INFO -  ... OK (9.783s)
2018-06-29 23:50:49,526 - oe-selftest - INFO -   test_bitbakelayers_flatten (bblayers.BitbakeLayers)
2018-06-29 23:50:49,971 - oe-selftest - INFO -  ... FAIL (0.445s)
2018-06-29 23:50:49,971 - oe-selftest - INFO -   test_bitbakelayers_showappends (bblayers.BitbakeLayers)
2018-06-29 23:50:50,356 - oe-selftest - INFO -  ... FAIL (0.385s)
2018-06-29 23:50:50,356 - oe-selftest - INFO -   test_bitbakelayers_showcrossdepends (bblayers.BitbakeLayers)
2018-06-29 23:50:50,761 - oe-selftest - INFO -  ... FAIL (0.405s)

Later you can see the error:

ERROR: Layer directory '/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-oe-selftest/build/test-bitbakelayer-layercreate' does not exist! Please check BBLAYERS in /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-oe-selftest/build/build/conf/bblayers.conf

so I think something in the cleanup of the test is wrong...

Cheers,

Richard

> diff --git a/meta/lib/oeqa/selftest/cases/bblayers.py
> b/meta/lib/oeqa/selftest/cases/bblayers.py
> index 90a2249b081..f2fc8327647 100644
> --- a/meta/lib/oeqa/selftest/cases/bblayers.py
> +++ b/meta/lib/oeqa/selftest/cases/bblayers.py
> @@ -2,7 +2,7 @@ import os
>  import re
>  
>  import oeqa.utils.ftools as ftools
> -from oeqa.utils.commands import runCmd, get_bb_var
> +from oeqa.utils.commands import runCmd, get_bb_var, get_bb_vars
>  
>  from oeqa.selftest.case import OESelftestTestCase
>  from oeqa.core.decorator.oeid import OETestID
> @@ -85,6 +85,30 @@ class BitbakeLayers(OESelftestTestCase):
>          self.assertNotEqual(result.status, 0, 'bitbake-layers show-
> recipes -i nonexistentclass should have failed')
>          self.assertIn('ERROR:', result.output)
>  
> +    def test_bitbakelayers_createlayer(self):
> +        priority = 10
> +        layername = 'test-bitbakelayer-layercreate'
> +        layerpath = os.path.join(get_bb_var('COREBASE'), layername)
> +        self.assertFalse(os.path.exists(layerpath), '%s should not
> exist at this point in time' % layerpath)
> +        result = runCmd('bitbake-layers create-layer --priority=%d
> %s' % (priority, layerpath))
> +        self.track_for_cleanup(layerpath)
> +        result = runCmd('bitbake-layers add-layer %s' % layerpath)
> +        result = runCmd('bitbake-layers show-layers')
> +        find_in_contents = re.search(re.escape(layername) + r'\s+' +
> re.escape(layerpath) + r'\s+' + re.escape(str(priority)),
> result.output)
> +        self.assertTrue(find_in_contents, "%s not found in
> layers\n%s" % (layername, result.output))
> +
> +        layervars = ['BBFILE_PRIORITY', 'BBFILE_PATTERN',
> 'LAYERDEPENDS', 'LAYERSERIES_COMPAT']
> +        bb_vars = get_bb_vars(['BBFILE_COLLECTIONS'] + ['%s_%s' %
> (v, layername) for v in layervars])
> +
> +        for v in layervars:
> +            varname = '%s_%s' % (v, layername)
> +            self.assertIsNotNone(bb_vars[varname], "%s not found" %
> varname)
> +
> +        find_in_contents = re.search(r'(^|\s)' +
> re.escape(layername) + r'($|\s)', bb_vars['BBFILE_COLLECTIONS'])
> +        self.assertTrue(find_in_contents, "%s not in
> BBFILE_COLLECTIONS" % layername)
> +
> +        self.assertEqual(bb_vars['BBFILE_PRIORITY_%s' % layername],
> str(priority), 'BBFILE_PRIORITY_%s != %d' % (layername, priority))
> +
>      def get_recipe_basename(self, recipe):
>          recipe_file = ""
>          result = runCmd("bitbake-layers show-recipes -f %s" %
> recipe)



More information about the Openembedded-core mailing list