summaryrefslogtreecommitdiffstats
path: root/import-layers/yocto-poky/meta/lib/oeqa/selftest/case.py
diff options
context:
space:
mode:
Diffstat (limited to 'import-layers/yocto-poky/meta/lib/oeqa/selftest/case.py')
-rw-r--r--import-layers/yocto-poky/meta/lib/oeqa/selftest/case.py278
1 files changed, 0 insertions, 278 deletions
diff --git a/import-layers/yocto-poky/meta/lib/oeqa/selftest/case.py b/import-layers/yocto-poky/meta/lib/oeqa/selftest/case.py
deleted file mode 100644
index e09915b49..000000000
--- a/import-layers/yocto-poky/meta/lib/oeqa/selftest/case.py
+++ /dev/null
@@ -1,278 +0,0 @@
-# Copyright (C) 2013-2017 Intel Corporation
-# Released under the MIT license (see COPYING.MIT)
-
-import sys
-import os
-import shutil
-import glob
-import errno
-from unittest.util import safe_repr
-
-import oeqa.utils.ftools as ftools
-from oeqa.utils.commands import runCmd, bitbake, get_bb_var
-from oeqa.core.case import OETestCase
-
-class OESelftestTestCase(OETestCase):
- def __init__(self, methodName="runTest"):
- self._extra_tear_down_commands = []
- super(OESelftestTestCase, self).__init__(methodName)
-
- @classmethod
- def setUpClass(cls):
- super(OESelftestTestCase, cls).setUpClass()
-
- cls.testlayer_path = cls.tc.config_paths['testlayer_path']
- cls.builddir = cls.tc.config_paths['builddir']
-
- cls.localconf_path = cls.tc.config_paths['localconf']
- cls.localconf_backup = cls.tc.config_paths['localconf_class_backup']
- cls.local_bblayers_path = cls.tc.config_paths['bblayers']
- cls.local_bblayers_backup = cls.tc.config_paths['bblayers_class_backup']
-
- cls.testinc_path = os.path.join(cls.tc.config_paths['builddir'],
- "conf/selftest.inc")
- cls.testinc_bblayers_path = os.path.join(cls.tc.config_paths['builddir'],
- "conf/bblayers.inc")
- cls.machineinc_path = os.path.join(cls.tc.config_paths['builddir'],
- "conf/machine.inc")
-
- cls._track_for_cleanup = [
- cls.testinc_path, cls.testinc_bblayers_path,
- cls.machineinc_path, cls.localconf_backup,
- cls.local_bblayers_backup]
-
- cls.add_include()
-
- @classmethod
- def tearDownClass(cls):
- cls.remove_include()
- cls.remove_inc_files()
- super(OESelftestTestCase, cls).tearDownClass()
-
- @classmethod
- def add_include(cls):
- if "#include added by oe-selftest" \
- not in ftools.read_file(os.path.join(cls.builddir, "conf/local.conf")):
- cls.logger.info("Adding: \"include selftest.inc\" in %s" % os.path.join(cls.builddir, "conf/local.conf"))
- ftools.append_file(os.path.join(cls.builddir, "conf/local.conf"), \
- "\n#include added by oe-selftest\ninclude machine.inc\ninclude selftest.inc")
-
- if "#include added by oe-selftest" \
- not in ftools.read_file(os.path.join(cls.builddir, "conf/bblayers.conf")):
- cls.logger.info("Adding: \"include bblayers.inc\" in bblayers.conf")
- ftools.append_file(os.path.join(cls.builddir, "conf/bblayers.conf"), \
- "\n#include added by oe-selftest\ninclude bblayers.inc")
-
- @classmethod
- def remove_include(cls):
- if "#include added by oe-selftest.py" \
- in ftools.read_file(os.path.join(cls.builddir, "conf/local.conf")):
- cls.logger.info("Removing the include from local.conf")
- ftools.remove_from_file(os.path.join(cls.builddir, "conf/local.conf"), \
- "\n#include added by oe-selftest.py\ninclude machine.inc\ninclude selftest.inc")
-
- if "#include added by oe-selftest.py" \
- in ftools.read_file(os.path.join(cls.builddir, "conf/bblayers.conf")):
- cls.logger.info("Removing the include from bblayers.conf")
- ftools.remove_from_file(os.path.join(cls.builddir, "conf/bblayers.conf"), \
- "\n#include added by oe-selftest.py\ninclude bblayers.inc")
-
- @classmethod
- def remove_inc_files(cls):
- try:
- os.remove(os.path.join(cls.builddir, "conf/selftest.inc"))
- for root, _, files in os.walk(cls.testlayer_path):
- for f in files:
- if f == 'test_recipe.inc':
- os.remove(os.path.join(root, f))
- except OSError as e:
- pass
-
- for incl_file in ['conf/bblayers.inc', 'conf/machine.inc']:
- try:
- os.remove(os.path.join(cls.builddir, incl_file))
- except:
- pass
-
- def setUp(self):
- super(OESelftestTestCase, self).setUp()
- os.chdir(self.builddir)
- # Check if local.conf or bblayers.conf files backup exists
- # from a previous failed test and restore them
- if os.path.isfile(self.localconf_backup) or os.path.isfile(
- self.local_bblayers_backup):
- self.logger.debug("\
-Found a local.conf and/or bblayers.conf backup from a previously aborted test.\
-Restoring these files now, but tests should be re-executed from a clean environment\
-to ensure accurate results.")
- try:
- shutil.copyfile(self.localconf_backup, self.localconf_path)
- except OSError as e:
- if e.errno != errno.ENOENT:
- raise
- try:
- shutil.copyfile(self.local_bblayers_backup,
- self.local_bblayers_path)
- except OSError as e:
- if e.errno != errno.ENOENT:
- raise
- else:
- # backup local.conf and bblayers.conf
- shutil.copyfile(self.localconf_path, self.localconf_backup)
- shutil.copyfile(self.local_bblayers_path, self.local_bblayers_backup)
- self.logger.debug("Creating local.conf and bblayers.conf backups.")
- # we don't know what the previous test left around in config or inc files
- # if it failed so we need a fresh start
- try:
- os.remove(self.testinc_path)
- except OSError as e:
- if e.errno != errno.ENOENT:
- raise
- for root, _, files in os.walk(self.testlayer_path):
- for f in files:
- if f == 'test_recipe.inc':
- os.remove(os.path.join(root, f))
-
- for incl_file in [self.testinc_bblayers_path, self.machineinc_path]:
- try:
- os.remove(incl_file)
- except OSError as e:
- if e.errno != errno.ENOENT:
- raise
-
- if self.tc.custommachine:
- machine_conf = 'MACHINE ??= "%s"\n' % self.tc.custommachine
- self.set_machine_config(machine_conf)
-
- # tests might need their own setup
- # but if they overwrite this one they have to call
- # super each time, so let's give them an alternative
- self.setUpLocal()
-
- def setUpLocal(self):
- pass
-
- def tearDown(self):
- if self._extra_tear_down_commands:
- failed_extra_commands = []
- for command in self._extra_tear_down_commands:
- result = runCmd(command, ignore_status=True)
- if not result.status == 0:
- failed_extra_commands.append(command)
- if failed_extra_commands:
- self.logger.warning("tearDown commands have failed: %s" % ', '.join(map(str, failed_extra_commands)))
- self.logger.debug("Trying to move on.")
- self._extra_tear_down_commands = []
-
- if self._track_for_cleanup:
- for path in self._track_for_cleanup:
- if os.path.isdir(path):
- shutil.rmtree(path)
- if os.path.isfile(path):
- os.remove(path)
- self._track_for_cleanup = []
-
- self.tearDownLocal()
- super(OESelftestTestCase, self).tearDown()
-
- def tearDownLocal(self):
- pass
-
- def add_command_to_tearDown(self, command):
- """Add test specific commands to the tearDown method"""
- self.logger.debug("Adding command '%s' to tearDown for this test." % command)
- self._extra_tear_down_commands.append(command)
-
- def track_for_cleanup(self, path):
- """Add test specific files or directories to be removed in the tearDown method"""
- self.logger.debug("Adding path '%s' to be cleaned up when test is over" % path)
- self._track_for_cleanup.append(path)
-
- def write_config(self, data):
- """Write to <builddir>/conf/selftest.inc"""
-
- self.logger.debug("Writing to: %s\n%s\n" % (self.testinc_path, data))
- ftools.write_file(self.testinc_path, data)
-
- if self.tc.custommachine and 'MACHINE' in data:
- machine = get_bb_var('MACHINE')
- self.logger.warning('MACHINE overridden: %s' % machine)
-
- def append_config(self, data):
- """Append to <builddir>/conf/selftest.inc"""
- self.logger.debug("Appending to: %s\n%s\n" % (self.testinc_path, data))
- ftools.append_file(self.testinc_path, data)
-
- if self.tc.custommachine and 'MACHINE' in data:
- machine = get_bb_var('MACHINE')
- self.logger.warning('MACHINE overridden: %s' % machine)
-
- def remove_config(self, data):
- """Remove data from <builddir>/conf/selftest.inc"""
- self.logger.debug("Removing from: %s\n%s\n" % (self.testinc_path, data))
- ftools.remove_from_file(self.testinc_path, data)
-
- def recipeinc(self, recipe):
- """Return absolute path of meta-sefltest/recipes-test/<recipe>/test_recipe.inc"""
- return os.path.join(self.testlayer_path, 'recipes-test', recipe, 'test_recipe.inc')
-
- def write_recipeinc(self, recipe, data):
- """Write to meta-sefltest/recipes-test/<recipe>/test_recipe.inc"""
- inc_file = self.recipeinc(recipe)
- self.logger.debug("Writing to: %s\n%s\n" % (inc_file, data))
- ftools.write_file(inc_file, data)
- return inc_file
-
- def append_recipeinc(self, recipe, data):
- """Append data to meta-sefltest/recipes-test/<recipe>/test_recipe.inc"""
- inc_file = self.recipeinc(recipe)
- self.logger.debug("Appending to: %s\n%s\n" % (inc_file, data))
- ftools.append_file(inc_file, data)
- return inc_file
-
- def remove_recipeinc(self, recipe, data):
- """Remove data from meta-sefltest/recipes-test/<recipe>/test_recipe.inc"""
- inc_file = self.recipeinc(recipe)
- self.logger.debug("Removing from: %s\n%s\n" % (inc_file, data))
- ftools.remove_from_file(inc_file, data)
-
- def delete_recipeinc(self, recipe):
- """Delete meta-sefltest/recipes-test/<recipe>/test_recipe.inc file"""
- inc_file = self.recipeinc(recipe)
- self.logger.debug("Deleting file: %s" % inc_file)
- try:
- os.remove(inc_file)
- except OSError as e:
- if e.errno != errno.ENOENT:
- raise
- def write_bblayers_config(self, data):
- """Write to <builddir>/conf/bblayers.inc"""
- self.logger.debug("Writing to: %s\n%s\n" % (self.testinc_bblayers_path, data))
- ftools.write_file(self.testinc_bblayers_path, data)
-
- def append_bblayers_config(self, data):
- """Append to <builddir>/conf/bblayers.inc"""
- self.logger.debug("Appending to: %s\n%s\n" % (self.testinc_bblayers_path, data))
- ftools.append_file(self.testinc_bblayers_path, data)
-
- def remove_bblayers_config(self, data):
- """Remove data from <builddir>/conf/bblayers.inc"""
- self.logger.debug("Removing from: %s\n%s\n" % (self.testinc_bblayers_path, data))
- ftools.remove_from_file(self.testinc_bblayers_path, data)
-
- def set_machine_config(self, data):
- """Write to <builddir>/conf/machine.inc"""
- self.logger.debug("Writing to: %s\n%s\n" % (self.machineinc_path, data))
- ftools.write_file(self.machineinc_path, data)
-
- # check does path exist
- def assertExists(self, expr, msg=None):
- if not os.path.exists(expr):
- msg = self._formatMessage(msg, "%s does not exist" % safe_repr(expr))
- raise self.failureException(msg)
-
- # check does path not exist
- def assertNotExists(self, expr, msg=None):
- if os.path.exists(expr):
- msg = self._formatMessage(msg, "%s exists when it should not" % safe_repr(expr))
- raise self.failureException(msg)
OpenPOWER on IntegriCloud