- Added workflow triggered by cron or label "hil_test" - Added examples with both pytest and unity
71 lines
1.7 KiB
Bash
Executable file
71 lines
1.7 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
target=$1
|
|
chunk_idex=$2
|
|
chunks_num=$3
|
|
|
|
SCRIPTS_DIR="./.github/scripts"
|
|
COUNT_SKETCHES="${SCRIPTS_DIR}/sketch_utils.sh count"
|
|
|
|
source ${SCRIPTS_DIR}/install-arduino-ide.sh
|
|
|
|
if [ "$chunks_num" -le 0 ]; then
|
|
echo "ERROR: Chunks count must be positive number"
|
|
return 1
|
|
fi
|
|
if [ "$chunk_idex" -ge "$chunks_num" ] && [ "$chunks_num" -ge 2 ]; then
|
|
echo "ERROR: Chunk index must be less than chunks count"
|
|
return 1
|
|
fi
|
|
|
|
set +e
|
|
${COUNT_SKETCHES} $PWD/tests $target
|
|
sketchcount=$?
|
|
set -e
|
|
sketches=$(cat sketches.txt)
|
|
rm -rf sketches.txt
|
|
|
|
chunk_size=$(( $sketchcount / $chunks_num ))
|
|
all_chunks=$(( $chunks_num * $chunk_size ))
|
|
if [ "$all_chunks" -lt "$sketchcount" ]; then
|
|
chunk_size=$(( $chunk_size + 1 ))
|
|
fi
|
|
|
|
start_index=0
|
|
end_index=0
|
|
if [ "$chunk_idex" -ge "$chunks_num" ]; then
|
|
start_index=$chunk_idex
|
|
end_index=$sketchcount
|
|
else
|
|
start_index=$(( $chunk_idex * $chunk_size ))
|
|
if [ "$sketchcount" -le "$start_index" ]; then
|
|
echo "Skipping job"
|
|
return 0
|
|
fi
|
|
|
|
end_index=$(( $(( $chunk_idex + 1 )) * $chunk_size ))
|
|
if [ "$end_index" -gt "$sketchcount" ]; then
|
|
end_index=$sketchcount
|
|
fi
|
|
fi
|
|
|
|
start_num=$(( $start_index + 1 ))
|
|
sketchnum=0
|
|
|
|
for sketch in $sketches; do
|
|
sketchdir=$(dirname $sketch)
|
|
sketchdirname=$(basename $sketchdir)
|
|
sketchname=$(basename $sketch)
|
|
sketchnum=$(($sketchnum + 1))
|
|
if [ "$sketchnum" -le "$start_index" ] \
|
|
|| [ "$sketchnum" -gt "$end_index" ]; then
|
|
continue
|
|
fi
|
|
echo ""
|
|
echo "Test for Sketch Index $(($sketchnum - 1)) - $sketchdirname"
|
|
pytest tests -k test_$sketchdirname --junit-xml=tests/$sketchdirname/$sketchdirname.xml
|
|
result=$?
|
|
if [ $result -ne 0 ]; then
|
|
return $result
|
|
fi
|
|
done
|