]> code.ossystems Code Review - openembedded-core.git/commitdiff
oe-selftest: implement add_command_to_tearDown method
authorCorneliu Stoicescu <corneliux.stoicescu@intel.com>
Wed, 11 Dec 2013 16:09:39 +0000 (17:09 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sat, 14 Dec 2013 09:09:35 +0000 (09:09 +0000)
Add a new method that can be used by the tester to add a command to the
executed in the tearDown stage of the test. This mechanism can be used to
make sure certain test-specific cleanup tasks are done in the case of a
test failure.

Signed-off-by: Corneliu Stoicescu <corneliux.stoicescu@intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
meta/lib/oeqa/selftest/base.py

index c3474a3da64ca6501acf02cd5e0e901a20101fa4..25ca84bd66acdad392d286511e3a397f909eb102 100644 (file)
@@ -13,7 +13,7 @@ import logging
 import errno
 
 import oeqa.utils.ftools as ftools
-
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_test_layer
 
 class oeSelfTest(unittest.TestCase):
 
@@ -25,6 +25,7 @@ class oeSelfTest(unittest.TestCase):
         self.localconf_path = os.path.join(self.builddir, "conf/local.conf")
         self.testinc_path = os.path.join(self.builddir, "conf/selftest.inc")
         self.testlayer_path = oeSelfTest.testlayer_path
+        self._extra_tear_down_commands = []
         super(oeSelfTest, self).__init__(methodName)
 
     def setUp(self):
@@ -49,11 +50,26 @@ class oeSelfTest(unittest.TestCase):
         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.log.warning("tearDown commands have failed: %s" % ', '.join(map(str, failed_extra_commands)))
+                self.log.debug("Trying to move on.")
+            self._extra_tear_down_commands = []
         self.tearDownLocal()
 
     def tearDownLocal(self):
         pass
 
+    # add test specific commands to the tearDown method.
+    def add_command_to_tearDown(self, command):
+        self.log.debug("Adding command '%s' to tearDown for this test." % command)
+        self._extra_tear_down_commands.append(command)
+
     # write to <builddir>/conf/selftest.inc
     def write_config(self, data):
         self.log.debug("Writing to: %s\n%s\n" % (self.testinc_path, data))