[OE-core] [PATCH] selftest/manifest.py: Test to verify rootfs manifest

Benjamin Esquivel benjamin.esquivel at linux.intel.com
Wed Aug 26 12:26:02 UTC 2015


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)
-- 
2.3.0




More information about the Openembedded-core mailing list