If testtools and/or subunit modules are not found we get the following backtrace
(example for testtools):
NOTE: Starting bitbake server...
Traceback (most recent call last):
File "<..>/poky/scripts/oe-selftest", line 60, in
<module>
ret = main()
File "<..>/poky/scripts/oe-selftest", line 47, in main
results = args.func(logger, args)
File "<..>/poky/meta/lib/oeqa/selftest/context.py",
line 391, in run
rc = self._internal_run(logger, args)
File "<..>/poky/meta/lib/oeqa/selftest/context.py",
line 377, in _internal_run
rc = self.tc.runTests(**self.tc_kwargs['run'])
File "<..>/poky/meta/lib/oeqa/selftest/context.py",
line 161, in runTests
return super(OESelftestTestContext, self).runTests(processes, skips)
File "<..>/poky/meta/lib/oeqa/core/context.py", line
91, in runTests
result = self.runner.run(self.prepareSuite(self.suites, processes))
File "<..>/poky/meta/lib/oeqa/selftest/context.py",
line 154, in prepareSuite
from oeqa.core.utils.concurrencytest import ConcurrentTestSuite
File
"<..>/poky/meta/lib/oeqa/core/utils/concurrencytest.py",
line 22, in <module>
import testtools
ModuleNotFoundError: No module named 'testtools'
Fix this by adding a custom callback on -j/--num-processes parameter to
check testtools and subunit modules. Fallback to serial testing if
missing. This strategy is already used in sdk/context.py
Signed-off-by: Julien Stephan <[email protected]>
---
If someone has a better suggestion instead of using print here, I'll
update the patch :)
---
meta/lib/oeqa/selftest/context.py | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/meta/lib/oeqa/selftest/context.py
b/meta/lib/oeqa/selftest/context.py
index 57844b289a2..99186175e5d 100644
--- a/meta/lib/oeqa/selftest/context.py
+++ b/meta/lib/oeqa/selftest/context.py
@@ -194,8 +194,23 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
parser.add_argument('-R', '--skip-tests', required=False,
action='store',
nargs='+', dest="skips", default=None,
help='Skip the tests specified. Format should be
<module>[.<class>[.<test_method>]]')
+
+ def check_parallel_support(parameter):
+ if not parameter.isdigit():
+ import argparse
+ raise argparse.ArgumentTypeError("argument -j/--num-processes:
invalid int value: '%s' " % str(parameter))
+
+ processes = int(parameter)
+ if processes:
+ try:
+ import testtools, subunit
+ except ImportError:
+ print("Failed to import testtools or subunit, the
testcases will run serially")
+ processes = None
+ return processes
+
parser.add_argument('-j', '--num-processes', dest='processes',
action='store',
- type=int, help="number of processes to execute in parallel
with")
+ type=check_parallel_support, help="number of processes to
execute in parallel with")
parser.add_argument('-t', '--select-tag', dest="select_tags",
action='append', default=None,
--
2.34.1
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#198235):
https://lists.openembedded.org/g/openembedded-core/message/198235
Mute This Topic: https://lists.openembedded.org/mt/105534245/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-