diff options
author | Ross Burton <ross.burton@intel.com> | 2016-06-15 12:01:23 +0100 |
---|---|---|
committer | Sona Sarmadi <sona.sarmadi@enea.com> | 2017-02-10 12:21:38 +0100 |
commit | 5772e2b19d1b0b6e277ade15a3242d583cda90ee (patch) | |
tree | 1c083ec7762c10f0275caa7a1b3a920b87387b10 /meta/lib/oeqa/oetest.py | |
parent | 2f7efedae16efcb009fb76ecfbc6844701885d06 (diff) | |
download | poky-5772e2b19d1b0b6e277ade15a3242d583cda90ee.tar.gz |
oeqa: fix hasPackage, add hasPackageMatch
hasPackage() was looking for the string provided as an RE substring in the
manifest, which resulted in a large number of false positives (i.e. libgtkfoo
would match "gtk+").
Rewrite the manifest loader to parse the files into a proper data structure,
change hasPackage to do full string matches, and add hasPackageMatch which does
RE substring matches.
(From OE-Core rev: b9409863af71899e02275439949e3f4cdfaf2d0f)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
Diffstat (limited to 'meta/lib/oeqa/oetest.py')
-rw-r--r-- | meta/lib/oeqa/oetest.py | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/meta/lib/oeqa/oetest.py b/meta/lib/oeqa/oetest.py index 3ed5bb8c2b..9ef4d1f53b 100644 --- a/meta/lib/oeqa/oetest.py +++ b/meta/lib/oeqa/oetest.py | |||
@@ -58,14 +58,24 @@ class oeTest(unittest.TestCase): | |||
58 | 58 | ||
59 | @classmethod | 59 | @classmethod |
60 | def hasPackage(self, pkg): | 60 | def hasPackage(self, pkg): |
61 | for item in oeTest.tc.pkgmanifest.split('\n'): | 61 | """ |
62 | if re.match(pkg, item): | 62 | True if the full package name exists in the manifest, False otherwise. |
63 | """ | ||
64 | return pkg in oeTest.tc.pkgmanifest | ||
65 | |||
66 | @classmethod | ||
67 | def hasPackageMatch(self, match): | ||
68 | """ | ||
69 | True if match exists in the manifest as a regular expression substring, | ||
70 | False otherwise. | ||
71 | """ | ||
72 | for s in oeTest.tc.pkgmanifest: | ||
73 | if re.match(match, s): | ||
63 | return True | 74 | return True |
64 | return False | 75 | return False |
65 | 76 | ||
66 | @classmethod | 77 | @classmethod |
67 | def hasFeature(self,feature): | 78 | def hasFeature(self,feature): |
68 | |||
69 | if feature in oeTest.tc.imagefeatures or \ | 79 | if feature in oeTest.tc.imagefeatures or \ |
70 | feature in oeTest.tc.distrofeatures: | 80 | feature in oeTest.tc.distrofeatures: |
71 | return True | 81 | return True |
@@ -340,17 +350,18 @@ class ImageTestContext(TestContext): | |||
340 | self.target = target | 350 | self.target = target |
341 | self.host_dumper = host_dumper | 351 | self.host_dumper = host_dumper |
342 | 352 | ||
353 | self.pkgmanifest = {} | ||
343 | manifest = os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), | 354 | manifest = os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), |
344 | d.getVar("IMAGE_LINK_NAME", True) + ".manifest") | 355 | d.getVar("IMAGE_LINK_NAME", True) + ".manifest") |
345 | nomanifest = d.getVar("IMAGE_NO_MANIFEST", True) | 356 | nomanifest = d.getVar("IMAGE_NO_MANIFEST", True) |
346 | if nomanifest is None or nomanifest != "1": | 357 | if nomanifest is None or nomanifest != "1": |
347 | try: | 358 | try: |
348 | with open(manifest) as f: | 359 | with open(manifest) as f: |
349 | self.pkgmanifest = f.read() | 360 | for line in f: |
361 | (pkg, arch, version) = line.strip().split() | ||
362 | self.pkgmanifest[pkg] = (version, arch) | ||
350 | except IOError as e: | 363 | except IOError as e: |
351 | bb.fatal("No package manifest file found. Did you build the image?\n%s" % e) | 364 | bb.fatal("No package manifest file found. Did you build the image?\n%s" % e) |
352 | else: | ||
353 | self.pkgmanifest = "" | ||
354 | 365 | ||
355 | self.sigterm = False | 366 | self.sigterm = False |
356 | self.origsigtermhandler = signal.getsignal(signal.SIGTERM) | 367 | self.origsigtermhandler = signal.getsignal(signal.SIGTERM) |
@@ -396,8 +407,11 @@ class SDKTestContext(TestContext): | |||
396 | if not hasattr(self, 'target_manifest'): | 407 | if not hasattr(self, 'target_manifest'): |
397 | self.target_manifest = d.getVar("SDK_TARGET_MANIFEST", True) | 408 | self.target_manifest = d.getVar("SDK_TARGET_MANIFEST", True) |
398 | try: | 409 | try: |
410 | self.pkgmanifest = {} | ||
399 | with open(self.target_manifest) as f: | 411 | with open(self.target_manifest) as f: |
400 | self.pkgmanifest = f.read() | 412 | for line in f: |
413 | (pkg, arch, version) = line.strip().split() | ||
414 | self.pkgmanifest[pkg] = (version, arch) | ||
401 | except IOError as e: | 415 | except IOError as e: |
402 | bb.fatal("No package manifest file found. Did you build the sdk image?\n%s" % e) | 416 | bb.fatal("No package manifest file found. Did you build the sdk image?\n%s" % e) |
403 | 417 | ||