diff mbox series

[36/41] oeqa/core/tests: Add tests for skipping tests and td_vars checks

Message ID 20261115084845.701136-36-richard.purdie@linuxfoundation.org
State New
Headers show
Series [01/41] oeqa/loader: Drop code for pre python 3.5 | expand

Commit Message

Richard Purdie Nov. 15, 2026, 8:48 a.m. UTC
Check that tests and whole classes can be skipped by id and that a
skipped class doesn't run its setUpClass(), and that a missing td_vars
variable is reported, ahead of reworking how test setup is hooked.

AI-Generated: Uses Claude Opus 5.5
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
 meta/lib/oeqa/core/tests/cases/skips.py  | 24 ++++++++++++++++++++++++
 meta/lib/oeqa/core/tests/cases/tdvars.py | 13 +++++++++++++
 meta/lib/oeqa/core/tests/test_runner.py  | 21 +++++++++++++++++++++
 3 files changed, 58 insertions(+)
 create mode 100644 meta/lib/oeqa/core/tests/cases/skips.py
 create mode 100644 meta/lib/oeqa/core/tests/cases/tdvars.py
diff mbox series

Patch

diff --git a/meta/lib/oeqa/core/tests/cases/skips.py b/meta/lib/oeqa/core/tests/cases/skips.py
new file mode 100644
index 00000000000..a24ee8d1c04
--- /dev/null
+++ b/meta/lib/oeqa/core/tests/cases/skips.py
@@ -0,0 +1,24 @@ 
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
+#
+
+from oeqa.core.case import OETestCase
+
+class SkipsClassTest(OETestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        raise Exception("setUpClass of a skipped class shouldn't run")
+
+    def testSkipsClass(self):
+        pass
+
+class SkipsTest(OETestCase):
+
+    def testSkipsSkipped(self):
+        self.fail("Skipped test shouldn't run")
+
+    def testSkipsRun(self):
+        pass
diff --git a/meta/lib/oeqa/core/tests/cases/tdvars.py b/meta/lib/oeqa/core/tests/cases/tdvars.py
new file mode 100644
index 00000000000..60313600754
--- /dev/null
+++ b/meta/lib/oeqa/core/tests/cases/tdvars.py
@@ -0,0 +1,13 @@ 
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
+#
+
+from oeqa.core.case import OETestCase
+
+class TdVarsMissingTest(OETestCase):
+    td_vars = ['NOT_IN_TD']
+
+    def testTdVarsMissing(self):
+        pass
diff --git a/meta/lib/oeqa/core/tests/test_runner.py b/meta/lib/oeqa/core/tests/test_runner.py
index a9aac5ddf66..70107d1e25d 100755
--- a/meta/lib/oeqa/core/tests/test_runner.py
+++ b/meta/lib/oeqa/core/tests/test_runner.py
@@ -56,6 +56,27 @@  class TestResultStatus(TestBase):
             'resultsmodule.ResultsModuleTest.testModuleError': 'ERROR',
         })
 
+    def test_skip_tests(self):
+        # Tests and classes can be skipped by id prefix; a skipped class must
+        # not run its setUpClass()
+        tc = self._testLoader(modules=['skips'])
+        result = tc.runTests(skips=['skips.SkipsClassTest', 'skips.SkipsTest.testSkipsSkipped'])
+        statuses = {case_id: result._getTestResultDetails(case)[0]
+                    for case_id, case in tc._registry['cases'].items()}
+        self.assertEqual(statuses, {
+            'skips.SkipsClassTest.testSkipsClass': 'SKIPPED',
+            'skips.SkipsTest.testSkipsSkipped': 'SKIPPED',
+            'skips.SkipsTest.testSkipsRun': 'PASSED',
+        })
+
+    def test_td_vars(self):
+        tc = self._testLoader(modules=['tdvars'])
+        result = tc.runTests()
+        statuses = {case_id: result._getTestResultDetails(case)[0]
+                    for case_id, case in tc._registry['cases'].items()}
+        self.assertEqual(statuses, {'tdvars.TdVarsMissingTest.testTdVarsMissing': 'ERROR'})
+        self.assertIn("OEQAMissingVariable", result.errors[0][1])
+
     def test_subtest_status(self):
         self.assertEqual(self._statuses(['subtest']), {
             'subtest.SubTestTest.testSubTestFail': 'FAILED',