new file mode 100644
@@ -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
new file mode 100644
@@ -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
@@ -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',
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