]>
Commit | Line | Data |
---|---|---|
2f52018c SG |
1 | #!/bin/bash |
2 | ||
c9adb355 | 3 | # Script to run all U-Boot tests that use sandbox. |
499fde5c | 4 | # $1: tests to run (empty for all, 'quick' for quick ones only) |
c9adb355 SG |
5 | |
6 | # Runs a test and checks the exit code to decide if it passed | |
7 | # $1: Test name | |
8 | # $2 onwards: command line to run | |
2f52018c | 9 | run_test() { |
c9adb355 SG |
10 | echo -n "$1: " |
11 | shift | |
12 | "$@" | |
3bc11e81 | 13 | [ $? -ne 0 ] && failures=$((failures+1)) |
2f52018c | 14 | } |
07f4eadc | 15 | |
f6e6022f | 16 | # Select test attributes |
d1962ac7 | 17 | ut_mark_expr=test_ut |
f6e6022f SG |
18 | if [ "$1" = "quick" ]; then |
19 | mark_expr="not slow" | |
d1962ac7 | 20 | ut_mark_expr="test_ut and not slow" |
f6e6022f SG |
21 | skip=--skip-net-tests |
22 | fi | |
23 | ||
76160801 | 24 | [ "$1" == "tools" ] && tools_only=y |
499fde5c | 25 | |
d1962ac7 SG |
26 | if [ "$1" = "parallel" ]; then |
27 | if ! echo 'import xdist' | python3 2>/dev/null; then | |
28 | echo "Please install python3-pytest-xdist - see doc/develop/py_testing.rst" | |
29 | exit 1 | |
30 | fi | |
31 | jobs="$(($(nproc) > 16 ? 16 : $(nproc)))" | |
32 | para="-n${jobs} -q" | |
33 | prompt="Building and..." | |
34 | skip=--skip-net-tests | |
35 | mark_expr="not slow and not bootstd and not spi_flash" | |
36 | ut_mark_expr="test_ut and not slow and not bootstd and not spi_flash" | |
37 | echo "Note: test log is garbled with parallel tests" | |
38 | fi | |
39 | ||
3bc11e81 | 40 | failures=0 |
73a01d90 | 41 | |
76160801 SG |
42 | if [ -z "$tools_only" ]; then |
43 | # Run all tests that the standard sandbox build can support | |
d1962ac7 SG |
44 | echo "${prompt}" |
45 | run_test "sandbox" ./test/py/test.py --bd sandbox --build ${para} \ | |
f6e6022f | 46 | -k "${mark_expr}" |
76160801 | 47 | fi |
029ab15a SG |
48 | |
49 | # Run tests which require sandbox_spl | |
d1962ac7 SG |
50 | echo "${prompt}" |
51 | run_test "sandbox_spl" ./test/py/test.py --bd sandbox_spl --build ${para} \ | |
7b51bf77 | 52 | -k 'test_ofplatdata or test_handoff or test_spl' |
029ab15a | 53 | |
59c585e9 | 54 | # Run the same tests with sandbox_noinst (i.e. without OF_PLATDATA_INST) |
d1962ac7 | 55 | echo "${prompt}" |
59c585e9 | 56 | run_test "sandbox_noinst" ./test/py/test.py --bd sandbox_noinst --build ${para} \ |
c25b8dcd SG |
57 | -k 'test_ofplatdata or test_handoff or test_spl' |
58 | ||
76160801 SG |
59 | if [ -z "$tools_only" ]; then |
60 | # Run tests for the flat-device-tree version of sandbox. This is a special | |
61 | # build which does not enable CONFIG_OF_LIVE for the live device tree, so we can | |
62 | # check that functionality is the same. The standard sandbox build (above) uses | |
63 | # CONFIG_OF_LIVE. | |
d1962ac7 | 64 | echo "${prompt}" |
76160801 | 65 | run_test "sandbox_flattree" ./test/py/test.py --bd sandbox_flattree \ |
d1962ac7 | 66 | ${para} --build -k "${ut_mark_expr}" |
76160801 | 67 | fi |
2f52018c | 68 | |
734f3de9 | 69 | # Set up a path to dtc (device-tree compiler) and libfdt.py, a library it |
8acce60b SG |
70 | # provides and which is built by the sandbox_spl config. Also set up the path |
71 | # to tools build by the build. | |
ed772fe7 | 72 | DTC_DIR=build-sandbox_spl/scripts/dtc |
734f3de9 SG |
73 | export PYTHONPATH=${DTC_DIR}/pylibfdt |
74 | export DTC=${DTC_DIR}/dtc | |
8acce60b | 75 | TOOLS_DIR=build-sandbox_spl/tools |
ed772fe7 | 76 | |
53cd5d92 | 77 | run_test "binman" ./tools/binman/binman --toolpath ${TOOLS_DIR} test |
6bb74de7 | 78 | run_test "patman" ./tools/patman/patman test |
499fde5c | 79 | |
499fde5c | 80 | run_test "buildman" ./tools/buildman/buildman -t ${skip} |
3bc11e81 | 81 | run_test "fdt" ./tools/dtoc/test_fdt -t |
c9adb355 | 82 | run_test "dtoc" ./tools/dtoc/dtoc -t |
72d8172b | 83 | |
30d704c6 SG |
84 | # This needs you to set up Python test coverage tools. |
85 | # To enable Python test coverage on Debian-type distributions (e.g. Ubuntu): | |
16d836cd | 86 | # $ sudo apt-get install python-pytest python-coverage |
d1962ac7 SG |
87 | |
88 | # Code-coverage tests cannot run in parallel, so skip them in that case | |
89 | if [ -z "${para}" ]; then | |
90 | export PATH=$PATH:${TOOLS_DIR} | |
91 | run_test "binman code coverage" ./tools/binman/binman test -T | |
92 | run_test "dtoc code coverage" ./tools/dtoc/dtoc -T | |
93 | run_test "fdt code coverage" ./tools/dtoc/test_fdt -T | |
94 | fi | |
30d704c6 | 95 | |
3bc11e81 | 96 | if [ $failures == 0 ]; then |
2f52018c SG |
97 | echo "Tests passed!" |
98 | else | |
99 | echo "Tests FAILED" | |
100 | exit 1 | |
101 | fi |