@@ -8,37 +8,60 @@ function run_test() {
88 local sketchdir=$( dirname $sketch )
99 local sketchname=$( basename $sketchdir )
1010 local result=0
11+ local error=0
1112
12- if [[ -f " $sketchdir /.skip.$platform " ]] || [[ -f " $sketchdir /.skip.$target " ]] || [[ -f " $sketchdir /.skip.$platform .$target " ]]; then
13- echo " Skipping $sketchname test for $target , platform: $platform "
14- skipfile=" $sketchdir /.test_skipped"
15- touch $skipfile
16- exit 0
13+ # If the target or platform is listed as false, skip the sketch. Otherwise, include it.
14+ if [ -f $sketchdir /ci.json ]; then
15+ is_target=$( jq -r --arg target $target ' .targets[$target]' $sketchdir /ci.json)
16+ selected_platform=$( jq -r --arg platform $platform ' .platforms[$platform]' $sketchdir /ci.json)
17+ else
18+ is_target=" true"
19+ selected_platform=" true"
20+ fi
21+
22+ if [[ $is_target == " false" ]] || [[ $selected_platform == " false" ]]; then
23+ printf " \033[93mSkipping $sketchname test for $target , platform: $platform \033[0m\n"
24+ printf " \n\n\n"
25+ return 0
1726 fi
1827
19- if [ $options -eq 0 ] && [ -f $sketchdir /cfg.json ]; then
20- len=` jq -r --arg chip $target ' .targets[] | select(.name==$chip) | .fqbn | length' $sketchdir /cfg.json`
28+ if [ $options -eq 0 ] && [ -f $sketchdir /ci.json ]; then
29+ len=` jq -r --arg target $target ' .fqbn[$target] | length' $sketchdir /ci.json`
30+ if [ $len -eq 0 ]; then
31+ len=1
32+ fi
2133 else
2234 len=1
2335 fi
2436
2537 if [ $len -eq 1 ]; then
2638 # build_dir="$sketchdir/build"
2739 build_dir=" $HOME /.arduino/tests/$sketchname /build.tmp"
28- report_file=" $sketchdir /$sketchname .xml"
40+ report_file=" $sketchdir /$target / $ sketchname .xml"
2941 fi
3042
3143 for i in ` seq 0 $(( $len - 1 )) `
3244 do
33- echo " Running test: $sketchname -- Config: $i "
45+ fqbn=" Default"
46+
47+ if [ $len -ne 1 ]; then
48+ fqbn=` jq -r --arg target $target --argjson i $i ' .fqbn[$target] | sort | .[$i]' $sketchdir /ci.json`
49+ elif [ -f $sketchdir /ci.json ]; then
50+ has_fqbn=` jq -r --arg target $target ' .fqbn[$target]' $sketchdir /ci.json`
51+ if [ " $has_fqbn " != " null" ]; then
52+ fqbn=` jq -r --arg target $target ' .fqbn[$target] | .[0]' $sketchdir /ci.json`
53+ fi
54+ fi
55+
56+ printf " \033[95mRunning test: $sketchname -- Config: $fqbn \033[0m\n"
3457 if [ $erase_flash -eq 1 ]; then
3558 esptool.py -c $target erase_flash
3659 fi
3760
3861 if [ $len -ne 1 ]; then
3962 # build_dir="$sketchdir/build$i"
4063 build_dir=" $HOME /.arduino/tests/$sketchname /build$i .tmp"
41- report_file=" $sketchdir /$sketchname$i .xml"
64+ report_file=" $sketchdir /$target / $ sketchname$i .xml"
4265 fi
4366
4467 if [ $platform == " wokwi" ]; then
@@ -55,27 +78,31 @@ function run_test() {
5578 elif [ $target == " esp32c3" ]; then
5679 extra_args+=" --qemu-prog-path qemu-system-riscv32 --qemu-cli-args=\" -machine $target -icount 3 -nographic\" "
5780 else
58- echo " Unsupported QEMU target: $target "
81+ printf " \033[91mUnsupported QEMU target: $target \033[0m\n "
5982 exit 1
6083 fi
6184 else
6285 extra_args=" --embedded-services esp,arduino"
6386 fi
6487
6588 result=0
66- echo " pytest tests --build-dir $build_dir -k test_$sketchname --junit-xml=$report_file $extra_args "
89+ printf " \033[95mpytest tests --build-dir $build_dir -k test_$sketchname --junit-xml=$report_file $extra_args \033[0m\n "
6790 bash -c " set +e; pytest tests --build-dir $build_dir -k test_$sketchname --junit-xml=$report_file $extra_args ; exit \$ ?" || result=$?
68- result= $?
91+ printf " \n "
6992 if [ $result -ne 0 ]; then
7093 result=0
71- echo " Retrying test: $sketchname -- Config: $i "
94+ printf " \033[95mRetrying test: $sketchname -- Config: $i \033[0m\n"
95+ printf " \033[95mpytest tests --build-dir $build_dir -k test_$sketchname --junit-xml=$report_file $extra_args \033[0m\n"
7296 bash -c " set +e; pytest tests --build-dir $build_dir -k test_$sketchname --junit-xml=$report_file $extra_args ; exit \$ ?" || result=$?
97+ printf " \n"
7398 result=$?
7499 if [ $result -ne 0 ]; then
75- exit $result
100+ error= $result
76101 fi
77102 fi
78103 done
104+ printf " \n"
105+ return $error
79106}
80107
81108SCRIPTS_DIR=" ./.github/scripts"
@@ -92,14 +119,14 @@ while [ ! -z "$1" ]; do
92119 -c )
93120 chunk_run=1
94121 ;;
95- -q )
122+ -Q )
96123 if [ ! -d $QEMU_PATH ]; then
97124 echo " QEMU path $QEMU_PATH does not exist"
98125 exit 1
99126 fi
100127 platform=" qemu"
101128 ;;
102- -w )
129+ -W )
103130 shift
104131 wokwi_timeout=$1
105132 platform=" wokwi"
@@ -165,6 +192,7 @@ if [ $chunk_run -eq 0 ]; then
165192 exit 1
166193 fi
167194 run_test $target $test_folder /$sketch /$sketch .ino $options $erase
195+ exit $?
168196else
169197 if [ " $chunk_max " -le 0 ]; then
170198 echo " ERROR: Chunks count must be positive number"
197225 else
198226 start_index=$(( $chunk_index * $chunk_size ))
199227 if [ " $sketchcount " -le " $start_index " ]; then
200- echo " Skipping job"
201- touch $PWD /tests/.test_skipped
202228 exit 0
203229 fi
204230
210236
211237 start_num=$(( $start_index + 1 ))
212238 sketchnum=0
239+ error=0
213240
214241 for sketch in $sketches ; do
215242
@@ -218,9 +245,14 @@ else
218245 || [ " $sketchnum " -gt " $end_index " ]; then
219246 continue
220247 fi
221- echo " "
222- echo " Sketch Index $(( $sketchnum - 1 )) "
223248
224- run_test $target $sketch $options $erase
249+ printf " \033[95mSketch Index $(( $sketchnum - 1 )) \033[0m\n"
250+
251+ exit_code=0
252+ run_test $target $sketch $options $erase || exit_code=$?
253+ if [ $exit_code -ne 0 ]; then
254+ error=$exit_code
255+ fi
225256 done
257+ exit $error
226258fi
0 commit comments