b19cb8143b
Use an empty environment when calling make, but import PATH so the buildroot tree under test can find binaries from the host machine. Since environment variables are now ignored, move the handling of BR2_DL_DIR to the defconfig to keep the current precedence of -d: BR2_DL_DIR | -d DIR | test downloads | BR downloads ------------+----------+------------------+-------------- unset | unset | [error] | [error] unset | set | in $(DIR) | in $(DIR) set | unset | in $(BR2_DL_DIR) | in $(BR2_DL_DIR) set | set | in $(DIR) | in $(DIR) Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
123 lines
3.9 KiB
Python
Executable File
123 lines
3.9 KiB
Python
Executable File
#!/usr/bin/env python2
|
|
import argparse
|
|
import sys
|
|
import os
|
|
import nose2
|
|
import multiprocessing
|
|
|
|
from infra.basetest import BRTest
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description='Run Buildroot tests')
|
|
parser.add_argument('testname', nargs='*',
|
|
help='list of test cases to execute')
|
|
parser.add_argument('-l', '--list', action='store_true',
|
|
help='list of available test cases')
|
|
parser.add_argument('-a', '--all', action='store_true',
|
|
help='execute all test cases')
|
|
parser.add_argument('-s', '--stdout', action='store_true',
|
|
help='log everything to stdout')
|
|
parser.add_argument('-o', '--output',
|
|
help='output directory')
|
|
parser.add_argument('-d', '--download',
|
|
help='download directory')
|
|
parser.add_argument('-k', '--keep',
|
|
help='keep build directories',
|
|
action='store_true')
|
|
parser.add_argument('-t', '--testcases', type=int, default=1,
|
|
help='number of testcases to run simultaneously')
|
|
parser.add_argument('-j', '--jlevel', type=int,
|
|
help='BR2_JLEVEL to use for each testcase')
|
|
parser.add_argument('--timeout-multiplier', type=int, default=1,
|
|
help='increase timeouts (useful for slow machines)')
|
|
|
|
args = parser.parse_args()
|
|
|
|
script_path = os.path.realpath(__file__)
|
|
test_dir = os.path.dirname(script_path)
|
|
|
|
if args.stdout:
|
|
BRTest.logtofile = False
|
|
|
|
if args.list:
|
|
print "List of tests"
|
|
nose2.discover(argv=[script_path,
|
|
"-s", test_dir,
|
|
"-v",
|
|
"--collect-only"],
|
|
plugins=["nose2.plugins.collect"])
|
|
return 0
|
|
|
|
if args.download is None:
|
|
args.download = os.getenv("BR2_DL_DIR")
|
|
if args.download is None:
|
|
print "Missing download directory, please use -d/--download"
|
|
print ""
|
|
parser.print_help()
|
|
return 1
|
|
|
|
BRTest.downloaddir = os.path.abspath(args.download)
|
|
|
|
if args.output is None:
|
|
print "Missing output directory, please use -o/--output"
|
|
print ""
|
|
parser.print_help()
|
|
return 1
|
|
|
|
if not os.path.exists(args.output):
|
|
os.mkdir(args.output)
|
|
|
|
BRTest.outputdir = os.path.abspath(args.output)
|
|
|
|
if args.all is False and len(args.testname) == 0:
|
|
print "No test selected"
|
|
print ""
|
|
parser.print_help()
|
|
return 1
|
|
|
|
BRTest.keepbuilds = args.keep
|
|
|
|
if args.testcases != 1:
|
|
if args.testcases < 1:
|
|
print "Invalid number of testcases to run simultaneously"
|
|
print ""
|
|
parser.print_help()
|
|
return 1
|
|
# same default BR2_JLEVEL as package/Makefile.in
|
|
br2_jlevel = 1 + multiprocessing.cpu_count()
|
|
each_testcase = br2_jlevel / args.testcases
|
|
if each_testcase < 1:
|
|
each_testcase = 1
|
|
BRTest.jlevel = each_testcase
|
|
|
|
if args.jlevel:
|
|
if args.jlevel < 0:
|
|
print "Invalid BR2_JLEVEL to use for each testcase"
|
|
print ""
|
|
parser.print_help()
|
|
return 1
|
|
# the user can override the auto calculated value
|
|
BRTest.jlevel = args.jlevel
|
|
|
|
if args.timeout_multiplier < 1:
|
|
print "Invalid multiplier for timeout values"
|
|
print ""
|
|
parser.print_help()
|
|
return 1
|
|
BRTest.timeout_multiplier = args.timeout_multiplier
|
|
|
|
nose2_args = ["-v",
|
|
"-N", str(args.testcases),
|
|
"-s", test_dir,
|
|
"-c", os.path.join(test_dir, "conf/unittest.cfg")]
|
|
|
|
if len(args.testname) != 0:
|
|
nose2_args += args.testname
|
|
|
|
nose2.discover(argv=nose2_args)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|