@@ -8,37 +8,60 @@ function run_test() {
8
8
local sketchdir=$( dirname $sketch )
9
9
local sketchname=$( basename $sketchdir )
10
10
local result=0
11
+ local error=0
11
12
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
17
26
fi
18
27
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
21
33
else
22
34
len=1
23
35
fi
24
36
25
37
if [ $len -eq 1 ]; then
26
38
# build_dir="$sketchdir/build"
27
39
build_dir=" $HOME /.arduino/tests/$sketchname /build.tmp"
28
- report_file=" $sketchdir /$sketchname .xml"
40
+ report_file=" $sketchdir /$target / $ sketchname .xml"
29
41
fi
30
42
31
43
for i in ` seq 0 $(( $len - 1 )) `
32
44
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"
34
57
if [ $erase_flash -eq 1 ]; then
35
58
esptool.py -c $target erase_flash
36
59
fi
37
60
38
61
if [ $len -ne 1 ]; then
39
62
# build_dir="$sketchdir/build$i"
40
63
build_dir=" $HOME /.arduino/tests/$sketchname /build$i .tmp"
41
- report_file=" $sketchdir /$sketchname$i .xml"
64
+ report_file=" $sketchdir /$target / $ sketchname$i .xml"
42
65
fi
43
66
44
67
if [ $platform == " wokwi" ]; then
@@ -55,27 +78,31 @@ function run_test() {
55
78
elif [ $target == " esp32c3" ]; then
56
79
extra_args+=" --qemu-prog-path qemu-system-riscv32 --qemu-cli-args=\" -machine $target -icount 3 -nographic\" "
57
80
else
58
- echo " Unsupported QEMU target: $target "
81
+ printf " \033[91mUnsupported QEMU target: $target \033[0m\n "
59
82
exit 1
60
83
fi
61
84
else
62
85
extra_args=" --embedded-services esp,arduino"
63
86
fi
64
87
65
88
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 "
67
90
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 "
69
92
if [ $result -ne 0 ]; then
70
93
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"
72
96
bash -c " set +e; pytest tests --build-dir $build_dir -k test_$sketchname --junit-xml=$report_file $extra_args ; exit \$ ?" || result=$?
97
+ printf " \n"
73
98
result=$?
74
99
if [ $result -ne 0 ]; then
75
- exit $result
100
+ error= $result
76
101
fi
77
102
fi
78
103
done
104
+ printf " \n"
105
+ return $error
79
106
}
80
107
81
108
SCRIPTS_DIR=" ./.github/scripts"
@@ -92,14 +119,14 @@ while [ ! -z "$1" ]; do
92
119
-c )
93
120
chunk_run=1
94
121
;;
95
- -q )
122
+ -Q )
96
123
if [ ! -d $QEMU_PATH ]; then
97
124
echo " QEMU path $QEMU_PATH does not exist"
98
125
exit 1
99
126
fi
100
127
platform=" qemu"
101
128
;;
102
- -w )
129
+ -W )
103
130
shift
104
131
wokwi_timeout=$1
105
132
platform=" wokwi"
@@ -165,6 +192,7 @@ if [ $chunk_run -eq 0 ]; then
165
192
exit 1
166
193
fi
167
194
run_test $target $test_folder /$sketch /$sketch .ino $options $erase
195
+ exit $?
168
196
else
169
197
if [ " $chunk_max " -le 0 ]; then
170
198
echo " ERROR: Chunks count must be positive number"
197
225
else
198
226
start_index=$(( $chunk_index * $chunk_size ))
199
227
if [ " $sketchcount " -le " $start_index " ]; then
200
- echo " Skipping job"
201
- touch $PWD /tests/.test_skipped
202
228
exit 0
203
229
fi
204
230
210
236
211
237
start_num=$(( $start_index + 1 ))
212
238
sketchnum=0
239
+ error=0
213
240
214
241
for sketch in $sketches ; do
215
242
@@ -218,9 +245,14 @@ else
218
245
|| [ " $sketchnum " -gt " $end_index " ]; then
219
246
continue
220
247
fi
221
- echo " "
222
- echo " Sketch Index $(( $sketchnum - 1 )) "
223
248
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
225
256
done
257
+ exit $error
226
258
fi
0 commit comments