From 5778c709b5fdbc9d516b2fba02d7c9bef1004b8d Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sat, 24 Nov 2018 17:56:06 +0000 Subject: oeqa/selftest/signing: Skip tests if gpg isn't found Raising an assertionError in the class setup isn't a particuarly good way to indicate gpg isn't installed. Instead skip the tests if the required binary isn't present. For the signing tests we do require it to be present and can't use a prebuilt one. (From OE-Core rev: 2d486af97e51b9daa9c40482c31d637c9ab4ae79) (From OE-Core rev: 9bb190d5bee70d2d3d5ec2eeee3439cd24548cb8) Signed-off-by: Richard Purdie --- meta/lib/oeqa/selftest/cases/signing.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/meta/lib/oeqa/selftest/cases/signing.py b/meta/lib/oeqa/selftest/cases/signing.py index a130ac96cf..97e9cfd44d 100644 --- a/meta/lib/oeqa/selftest/cases/signing.py +++ b/meta/lib/oeqa/selftest/cases/signing.py @@ -15,23 +15,18 @@ class Signing(OESelftestTestCase): pub_key_path = "" secret_key_path = "" - @classmethod - def setUpClass(cls): - super(Signing, cls).setUpClass() + def setup_gpg(self): # Check that we can find the gpg binary and fail early if we can't if not shutil.which("gpg"): - raise AssertionError("This test needs GnuPG") + self.skipTest('gpg binary not found') - cls.gpg_dir = tempfile.mkdtemp(prefix="oeqa-signing-") + self.gpg_dir = tempfile.mkdtemp(prefix="oeqa-signing-") + self.track_for_cleanup(self.gpg_dir) - cls.pub_key_path = os.path.join(cls.testlayer_path, 'files', 'signing', "key.pub") - cls.secret_key_path = os.path.join(cls.testlayer_path, 'files', 'signing', "key.secret") + self.pub_key_path = os.path.join(self.testlayer_path, 'files', 'signing', "key.pub") + self.secret_key_path = os.path.join(self.testlayer_path, 'files', 'signing', "key.secret") - runCmd('gpg --batch --homedir %s --import %s %s' % (cls.gpg_dir, cls.pub_key_path, cls.secret_key_path)) - - @classmethod - def tearDownClass(cls): - shutil.rmtree(cls.gpg_dir, ignore_errors=True) + runCmd('gpg --batch --homedir %s --import %s %s' % (self.gpg_dir, self.pub_key_path, self.secret_key_path)) @OETestID(1362) def test_signing_packages(self): @@ -46,6 +41,8 @@ class Signing(OESelftestTestCase): """ import oe.packagedata + self.setup_gpg() + package_classes = get_bb_var('PACKAGE_CLASSES') if 'package_rpm' not in package_classes: self.skipTest('This test requires RPM Packaging.') @@ -111,6 +108,8 @@ class Signing(OESelftestTestCase): builddir = os.environ.get('BUILDDIR') sstatedir = os.path.join(builddir, 'test-sstate') + self.setup_gpg() + self.add_command_to_tearDown('bitbake -c clean %s' % test_recipe) self.add_command_to_tearDown('rm -rf %s' % sstatedir) -- cgit v1.2.3-54-g00ecf