meta/lib/oeqa/core/tests/cases/timeout.py: add a testcase for the previous fix

This is the sequence that didn't properly operate:

- a test case that skips and isn't executed
- a second test case that is skipped via a dependency decorator, and sets a timeout
- a third test case that takes longer than the timeout from the second
test case

Without the fix, the timeout is not cleared, and the third test case is
erroneously aborted. With the fix, the timeout is cleared and the third
test case is able to complete.

(From OE-Core rev: 54ef07a9aa1af8f41cfb9a4802929c918efc43c8)

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alexander Kanavin
2021-04-20 19:32:59 +02:00
committed by Richard Purdie
parent b40f78a5c7
commit c13be2e1dc
2 changed files with 19 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ from time import sleep
from oeqa.core.case import OETestCase
from oeqa.core.decorator.oetimeout import OETimeout
from oeqa.core.decorator.depends import OETestDepends
class TimeoutTest(OETestCase):
@@ -19,3 +20,15 @@ class TimeoutTest(OETestCase):
def testTimeoutFail(self):
sleep(2)
self.assertTrue(True, msg='How is this possible?')
def testTimeoutSkip(self):
self.skipTest("This test needs to be skipped, so that testTimeoutDepends()'s OETestDepends kicks in")
@OETestDepends(["timeout.TimeoutTest.testTimeoutSkip"])
@OETimeout(3)
def testTimeoutDepends(self):
self.assertTrue(False, msg='How is this possible?')
def testTimeoutUnrelated(self):
sleep(6)

View File

@@ -133,5 +133,11 @@ class TestTimeoutDecorator(TestBase):
msg = "OETestTimeout didn't restore SIGALRM"
self.assertIs(alarm_signal, signal.getsignal(signal.SIGALRM), msg=msg)
def test_timeout_cancel(self):
tests = ['timeout.TimeoutTest.testTimeoutSkip', 'timeout.TimeoutTest.testTimeoutDepends', 'timeout.TimeoutTest.testTimeoutUnrelated']
msg = 'Unrelated test failed to complete'
tc = self._testLoader(modules=self.modules, tests=tests)
self.assertTrue(tc.runTests().wasSuccessful(), msg=msg)
if __name__ == '__main__':
unittest.main()