mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 12:59:02 +02:00
oeqa/sdk: fixes related to hasPackage semantics
The current _hasPackage does a regex match when checking for the existence of packages. This will sometimes result in unexpected result. For example, the condition hasTargetPackage('gcc') is likely to be always true as it matches libgcc1. For most of the time, we should do exact match instead of regex match. So change _hasPackage function to do that. For the current sdk test cases, the only place that needs regex match is '^gcc-'. This is because there's no easy way to get multilib tune arch (e.g. i686) from testdata.json file. Besides, packagegroup-cross-canadian-xxx and gcc-xxx should be check in host manifest instead of the target one. So fix to use hasHostPackage. Also, as we are doing exact match, there's no need to use r'gtk\+3', just 'gtk+3' is enough. (From OE-Core rev: 595e9922cdbacf84cf35cc83f0d03cace042e302) Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
20cba32f2d
commit
227cc78b3f
|
@ -8,8 +8,8 @@ class GalculatorTest(OESDKTestCase):
|
|||
|
||||
@classmethod
|
||||
def setUpClass(self):
|
||||
if not (self.tc.hasTargetPackage(r"gtk\+3", multilib=True) or\
|
||||
self.tc.hasTargetPackage(r"libgtk-3.0", multilib=True)):
|
||||
if not (self.tc.hasTargetPackage("gtk+3", multilib=True) or \
|
||||
self.tc.hasTargetPackage("libgtk-3.0", multilib=True)):
|
||||
raise unittest.SkipTest("GalculatorTest class: SDK don't support gtk+3")
|
||||
if not (self.tc.hasHostPackage("nativesdk-gettext-dev")):
|
||||
raise unittest.SkipTest("GalculatorTest class: SDK doesn't contain gettext")
|
||||
|
|
|
@ -17,8 +17,8 @@ class BuildLzipTest(OESDKTestCase):
|
|||
|
||||
machine = self.td.get("MACHINE")
|
||||
|
||||
if not (self.tc.hasTargetPackage("packagegroup-cross-canadian-%s" % machine) or
|
||||
self.tc.hasTargetPackage("gcc")):
|
||||
if not (self.tc.hasHostPackage("packagegroup-cross-canadian-%s" % machine) or
|
||||
self.tc.hasHostPackage("^gcc-", regex=True)):
|
||||
raise unittest.SkipTest("SDK doesn't contain a cross-canadian toolchain")
|
||||
|
||||
def test_lzip(self):
|
||||
|
|
|
@ -18,8 +18,8 @@ class GccCompileTest(OESDKTestCase):
|
|||
|
||||
def setUp(self):
|
||||
machine = self.td.get("MACHINE")
|
||||
if not (self.tc.hasTargetPackage("packagegroup-cross-canadian-%s" % machine) or
|
||||
self.tc.hasTargetPackage("gcc")):
|
||||
if not (self.tc.hasHostPackage("packagegroup-cross-canadian-%s" % machine) or
|
||||
self.tc.hasHostPackage("^gcc-", regex=True)):
|
||||
raise unittest.SkipTest("GccCompileTest class: SDK doesn't contain a cross-canadian toolchain")
|
||||
|
||||
def test_gcc_compile(self):
|
||||
|
|
|
@ -20,23 +20,30 @@ class OESDKTestContext(OETestContext):
|
|||
self.target_pkg_manifest = target_pkg_manifest
|
||||
self.host_pkg_manifest = host_pkg_manifest
|
||||
|
||||
def _hasPackage(self, manifest, pkg):
|
||||
for host_pkg in manifest.keys():
|
||||
if re.search(pkg, host_pkg):
|
||||
def _hasPackage(self, manifest, pkg, regex=False):
|
||||
if regex:
|
||||
# do regex match
|
||||
pat = re.compile(pkg)
|
||||
for p in manifest.keys():
|
||||
if pat.search(p):
|
||||
return True
|
||||
else:
|
||||
# do exact match
|
||||
if pkg in manifest.keys():
|
||||
return True
|
||||
return False
|
||||
|
||||
def hasHostPackage(self, pkg):
|
||||
return self._hasPackage(self.host_pkg_manifest, pkg)
|
||||
def hasHostPackage(self, pkg, regex=False):
|
||||
return self._hasPackage(self.host_pkg_manifest, pkg, regex=regex)
|
||||
|
||||
def hasTargetPackage(self, pkg, multilib=False):
|
||||
def hasTargetPackage(self, pkg, multilib=False, regex=False):
|
||||
if multilib:
|
||||
# match multilib according to sdk_env
|
||||
mls = self.td.get('MULTILIB_VARIANTS', '').split()
|
||||
for ml in mls:
|
||||
if ('ml'+ml) in self.sdk_env:
|
||||
pkg = ml + '-' + pkg
|
||||
return self._hasPackage(self.target_pkg_manifest, pkg)
|
||||
return self._hasPackage(self.target_pkg_manifest, pkg, regex=regex)
|
||||
|
||||
class OESDKTestContextExecutor(OETestContextExecutor):
|
||||
_context_class = OESDKTestContext
|
||||
|
|
Loading…
Reference in New Issue
Block a user