mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
oeqa: selftest: context: run tests serially if testtools/subunit modules are not found
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
(From OE-Core rev: ffd1db7d7813f6da22c0d9ef5fde6738058f1eb2)
Signed-off-by: Julien Stephan <jstephan@baylibre.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 35284404473b2c2d9f69594582868ed66ef3525e)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
This commit is contained in:
committed by
Steve Sakoman
parent
c3235e3ae9
commit
a4cd5dc1ee
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user