瀏覽代碼

support/testing/run-tests: fix --testcases option

The --testcases option of run-tests says how many test cases to build in
parallel. It automatically derives a jlevel from it by dividing the
number of cores + 1 by the number of parallel testcases. However, this
will typically result in a fractional number. Make doesn't like
fractional numbers as argument to -j.

Convert the number to integer (rounding down).

* br2_jlevel is an int, as multiprocessing.cpu_count() is an int, so it
  will be always >=2  (cpu_count() raises an error if it can't determine
  the number of CPU, so it will always return at least 1);

* args.testcases is an int, and is checked to be >=1

So br2_jlevel + args.testcases is guaranteed to always be bigger
than or equal to args.testcases, and the division thus bigger than 1.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
[yann.morin.1998@free.fr:
  - ensure division provide at least 1
  - drop the test below
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
(cherry picked from commit 8dce595a68bf86b351f2b990c5c489a21e1e5064)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Arnout Vandecappelle (Essensium/Mind) 3 年之前
父節點
當前提交
12b706f762
共有 1 個文件被更改,包括 1 次插入3 次删除
  1. 1 3
      support/testing/run-tests

+ 1 - 3
support/testing/run-tests

@@ -87,9 +87,7 @@ def main():
             return 1
             return 1
         # same default BR2_JLEVEL as package/Makefile.in
         # same default BR2_JLEVEL as package/Makefile.in
         br2_jlevel = 1 + multiprocessing.cpu_count()
         br2_jlevel = 1 + multiprocessing.cpu_count()
-        each_testcase = br2_jlevel / args.testcases
-        if each_testcase < 1:
-            each_testcase = 1
+        each_testcase = int((br2_jlevel + args.testcases) / args.testcases)
         BRConfigTest.jlevel = each_testcase
         BRConfigTest.jlevel = each_testcase
 
 
     if args.jlevel:
     if args.jlevel: