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 <[email protected]> Signed-off-by: Mariano Lopez <[email protected]> --- 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) -- 2.3.0 -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
