[OE-core] [PATCH] selftest/manifest.py: Test to verify rootfs manifest
Paul Eggleton
paul.eggleton at linux.intel.com
Thu Aug 27 08:34:28 UTC 2015
Hi Benjamin / Mariano,
On Wednesday 26 August 2015 12:26:02 Benjamin Esquivel wrote:
> Adding a new test to verify if the packages in the
> manifest files actually exists in pkgdata.
> -adding a setUpClass for when more tests get created here
> -check for the paths and fail gracefully if not there
> -skip the test when there are no manifest files to check
> -debug prints for failure analysis
>
> [YOCTO#8028]
>
> Signed-off-by: Benjamin Esquivel <benjamin.esquivel at linux.intel.com>
> Signed-off-by: Mariano Lopez <mariano.lopez at linux.intel.com>
> ---
> meta/lib/oeqa/selftest/manifest.py | 52
> ++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+)
> create mode 100644 meta/lib/oeqa/selftest/manifest.py
>
> diff --git a/meta/lib/oeqa/selftest/manifest.py
> b/meta/lib/oeqa/selftest/manifest.py new file mode 100644
> index 0000000..c2bc945
> --- /dev/null
> +++ b/meta/lib/oeqa/selftest/manifest.py
> @@ -0,0 +1,52 @@
> +import unittest
> +import os
> +from glob import glob
> +
> +from oeqa.selftest.base import oeSelfTest
> +from oeqa.utils.commands import get_bb_var
> +from oeqa.utils.decorators import testcase
> +
> +class VerifyManifest(oeSelfTest):
> + '''Tests for the manifest files and contents of an image'''
> +
> + @classmethod
> + def setUpClass(self):
> +
> + # get directory locations from variable values and check them
> + self.deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE');
> + if not self.deploy_dir_image \
> + or not os.path.isdir(self.deploy_dir_image):
> + raise unittest.SkipTest("{}: DEPLOY_DIR_IMAGE does not exist:
> {}"\ + .format("VerifyManifest", self.deploy_dir_image))
> +
> + self.pkgdata_dir = get_bb_var('PKGDATA_DIR');
> + if not self.pkgdata_dir \
> + or not os.path.isdir(self.pkgdata_dir):
> + raise unittest.SkipTest("{}: PKGDATA_DIR does not exist: {}"\
> + .format("VerifyManifest", self.pkgdata_dir))
> +
> + # get the manifest files
> + # no need to try: since glob would return an empty list if
> + # the path is non-existant
> + self.manifest_files = glob("%s/*.manifest" % self.deploy_dir_image)
> + self.log.debug("manifest files: {}".format(self.manifest_files)) +
> if not self.manifest_files:
> + raise unittest.SkipTest("{}: No manifest files found in: {}"\
> + .format("VerifyManifest", self.deploy_dir_image))
> +
> +
> + def test_manifest_entries(self):
> + '''Verifying the manifest entries as packages '''
> + testname = self.id().split('.')[-1]
> + rundir = os.path.join(self.pkgdata_dir, "runtime-reverse")
> +
> + errmsg = "ERROR: Package %s is in manifest but not in pkgdata"
> + for manifest in self.manifest_files:
> + with open(manifest, "r") as mfile:
> + for manifest_entries in mfile:
> + pkg = manifest_entries.split()[0]
> + pkgfile = os.path.join(rundir, pkg)
> + self.log.debug("{}: looking for {}"\
> + .format(testname, pkgfile))
> + self.assertTrue(os.path.isfile(pkgfile),
> + errmsg % pkg)
Shouldn't this test actually be building an image (e.g. using
bitbake('core-image-minimal') ) in order to ensure there's a manifest file for
it to look at? Then you can make the test fail rather than skipping if the file
isn't there or doesn't contain a small set of packages we know should be
listed.
Also while you're adding this could you add a similar test function for the
SDK (both host + target manifests).
Thanks,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
More information about the Openembedded-core
mailing list