1
0
mirror of https://github.com/danog/psalm.git synced 2024-11-30 04:39:00 +01:00

fix CI "split" unevenly splits the number of tests

This commit is contained in:
kkmuffme 2023-11-18 13:31:37 +01:00
parent 98851b590c
commit 2c6aa77baf

View File

@ -24,7 +24,23 @@ exit "$exit_code"'
mkdir -p build/parallel/ build/phpunit/logs/
find tests -name '*Test.php' | shuf --random-source=<(get_seeded_random) > build/tests_all
split --number="l/$chunk_number/$chunk_count" build/tests_all > build/tests_split
# split incorrectly splits the lines by byte size, which means that the number of tests per file are as evenly distributed as possible
#split --number="l/$chunk_number/$chunk_count" build/tests_all > build/tests_split
local -r lines=$(wc -l <build/tests_all)
local -r chunk_lines=$(( $lines / $chunk_count ))
local -r rest=$(( $lines % $chunk_count ))
local start_line
local end_line
if [[ $chunk_number -le $rest ]]
then
start_line=$(( ($chunk_number - 1) * $chunk_lines + $chunk_number ))
end_line=$(( $chunk_number * $chunk_lines + $chunk_number ))
else
start_line=$(( ($chunk_number - 1) * $chunk_lines + $rest + 1 ))
end_line=$(( $chunk_number * $chunk_lines + $rest ))
fi
awk "NR==$start_line,NR==$end_line" <build/tests_all > build/tests_split
parallel --group -j"$parallel_processes" --rpl {_}\ s/\\//_/g --joblog build/parallel/jobs.log "$phpunit_cmd" < build/tests_split
}