Skip to content

Commit fd1368f

Browse files
authored
Merge branch 'master' into master
2 parents aa62a28 + e8e251a commit fd1368f

File tree

99 files changed

+9127
-290
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+9127
-290
lines changed

Diff for: .flake8

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-python/.flake8
22
# See: https://flake8.pycqa.org/en/latest/user/configuration.html
3-
# The code style defined in this file is the official standardized style to be used in all Arduino tooling projects and
4-
# should not be modified.
53

64
[flake8]
75
doctests = True
86
# W503 and W504 are mutually exclusive. PEP 8 recommends line break before.
97
ignore = W503,E203
10-
max-complexity = 10
8+
max-complexity = 20
119
max-line-length = 120
1210
select = E,W,F,C,N

Diff for: .github/scripts/sketch_utils.sh

+9-8
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ function build_sketch(){ # build_sketch <ide_path> <user_path> <path-to-ino> [ex
121121
fi
122122

123123
if [ -z "$fqbn" ]; then
124-
echo "No FQBN passed or unvalid chip: $target"
124+
echo "No FQBN passed or invalid chip: $target"
125125
exit 1
126126
fi
127127

@@ -139,7 +139,7 @@ function build_sketch(){ # build_sketch <ide_path> <user_path> <path-to-ino> [ex
139139
echo "Skipping $sketchname for target $target"
140140
exit 0
141141
fi
142-
142+
143143
ARDUINO_CACHE_DIR="$HOME/.arduino/cache.tmp"
144144
if [ -n "$ARDUINO_BUILD_DIR" ]; then
145145
build_dir="$ARDUINO_BUILD_DIR"
@@ -177,7 +177,7 @@ function build_sketch(){ # build_sketch <ide_path> <user_path> <path-to-ino> [ex
177177
--build-path "$build_dir" \
178178
$xtra_opts "${sketchdir}" \
179179
> $output_file
180-
180+
181181
exit_status=$?
182182
if [ $exit_status -ne 0 ]; then
183183
echo ""ERROR: Compilation failed with error code $exit_status""
@@ -198,11 +198,11 @@ function build_sketch(){ # build_sketch <ide_path> <user_path> <path-to-ino> [ex
198198
# Extract the desired substring using sed
199199
lib_sketch_name=$(echo "$directory_path" | sed "s|$constant_part||")
200200
#append json file where key is fqbn, sketch name, sizes -> extracted values
201-
echo "{\"name\": \"$lib_sketch_name\",
201+
echo "{\"name\": \"$lib_sketch_name\",
202202
\"sizes\": [{
203-
\"flash_bytes\": $flash_bytes,
204-
\"flash_percentage\": $flash_percentage,
205-
\"ram_bytes\": $ram_bytes,
203+
\"flash_bytes\": $flash_bytes,
204+
\"flash_percentage\": $flash_percentage,
205+
\"ram_bytes\": $ram_bytes,
206206
\"ram_percentage\": $ram_percentage
207207
}]
208208
}," >> "$sizes_file"
@@ -365,6 +365,7 @@ function build_sketches(){ # build_sketches <ide_path> <user_path> <target> <pat
365365
start_index=$(( $chunk_index * $chunk_size ))
366366
if [ "$sketchcount" -le "$start_index" ]; then
367367
echo "Skipping job"
368+
touch ~/.build_skipped
368369
return 0
369370
fi
370371

@@ -386,7 +387,7 @@ function build_sketches(){ # build_sketches <ide_path> <user_path> <target> <pat
386387
if [ $log_compilation ]; then
387388
#echo board,target and start of sketches to sizes_file json
388389
echo "{ \"board\": \"$fqbn\",
389-
\"target\": \"$target\",
390+
\"target\": \"$target\",
390391
\"sketches\": [" >> "$sizes_file"
391392
fi
392393

Diff for: .github/scripts/tests_build.sh

+25-7
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,20 @@
22

33
USAGE="
44
USAGE:
5-
${0} -c <chunk_build_opts>
6-
Example: ${0} -c -t esp32 -i 0 -m 15
5+
${0} -c -type <test_type> <chunk_build_opts>
6+
Example: ${0} -c -type validation -t esp32 -i 0 -m 15
77
${0} -s sketch_name <build_opts>
88
Example: ${0} -s hello_world -t esp32
99
${0} -clean
1010
Remove build and test generated files
1111
"
1212

1313
function clean(){
14-
rm -rf tests/*/build*/
1514
rm -rf tests/.pytest_cache
16-
rm -rf tests/*/__pycache__/
17-
rm -rf tests/*/*.xml
15+
find tests/ -type d -name 'build*' -exec rm -rf "{}" \+
16+
find tests/ -type d -name '__pycache__' -exec rm -rf "{}" \+
17+
find tests/ -name '*.xml' -exec rm -rf "{}" \+
18+
find tests/ -name 'result_*.json' -exec rm -rf "{}" \+
1819
}
1920

2021
SCRIPTS_DIR="./.github/scripts"
@@ -35,6 +36,10 @@ while [ ! -z "$1" ]; do
3536
echo "$USAGE"
3637
exit 0
3738
;;
39+
-type )
40+
shift
41+
test_type=$1
42+
;;
3843
-clean )
3944
clean
4045
exit 0
@@ -52,12 +57,25 @@ source ${SCRIPTS_DIR}/install-arduino-core-esp32.sh
5257

5358
args="-ai $ARDUINO_IDE_PATH -au $ARDUINO_USR_PATH"
5459

60+
if [[ $test_type == "all" ]] || [[ -z $test_type ]]; then
61+
if [ -n "$sketch" ]; then
62+
tmp_sketch_path=$(find tests -name $sketch.ino)
63+
test_type=$(basename $(dirname $(dirname "$tmp_sketch_path")))
64+
echo "Sketch $sketch test type: $test_type"
65+
test_folder="$PWD/tests/$test_type"
66+
else
67+
test_folder="$PWD/tests"
68+
fi
69+
else
70+
test_folder="$PWD/tests/$test_type"
71+
fi
72+
5573
if [ $chunk_build -eq 1 ]; then
5674
BUILD_CMD="${SCRIPTS_DIR}/sketch_utils.sh chunk_build"
57-
args+=" -p $PWD/tests"
75+
args+=" -p $test_folder"
5876
else
5977
BUILD_CMD="${SCRIPTS_DIR}/sketch_utils.sh build"
60-
args+=" -s $PWD/tests/$sketch"
78+
args+=" -s $test_folder/$sketch"
6179
fi
6280

6381
${BUILD_CMD} ${args} $*

Diff for: .github/scripts/tests_run.sh

+56-10
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,23 @@ function run_test() {
88
local sketchdir=$(dirname $sketch)
99
local sketchname=$(basename $sketchdir)
1010

11+
if [[ -f "$sketchdir/.skip.$platform" ]]; then
12+
echo "Skipping $sketchname test for $target, platform: $platform"
13+
skipfile="$sketchdir/.test_skipped"
14+
touch $skipfile
15+
exit 0
16+
fi
17+
1118
if [ $options -eq 0 ] && [ -f $sketchdir/cfg.json ]; then
1219
len=`jq -r --arg chip $target '.targets[] | select(.name==$chip) | .fqbn | length' $sketchdir/cfg.json`
1320
else
1421
len=1
1522
fi
1623

1724
if [ $len -eq 1 ]; then
18-
# build_dir="tests/$sketchname/build"
25+
# build_dir="$sketchdir/build"
1926
build_dir="$HOME/.arduino/tests/$sketchname/build.tmp"
20-
report_file="tests/$sketchname/$sketchname.xml"
27+
report_file="$sketchdir/$sketchname.xml"
2128
fi
2229

2330
for i in `seq 0 $(($len - 1))`
@@ -28,12 +35,21 @@ function run_test() {
2835
fi
2936

3037
if [ $len -ne 1 ]; then
31-
# build_dir="tests/$sketchname/build$i"
38+
# build_dir="$sketchdir/build$i"
3239
build_dir="$HOME/.arduino/tests/$sketchname/build$i.tmp"
33-
report_file="tests/$sketchname/$sketchname$i.xml"
40+
report_file="$sketchdir/$sketchname$i.xml"
41+
fi
42+
43+
if [ $platform == "wokwi" ]; then
44+
extra_args="--target $target --embedded-services arduino,wokwi --wokwi-timeout=$wokwi_timeout"
45+
if [[ -f "$sketchdir/scenario.yaml" ]]; then
46+
extra_args+=" --wokwi-scenario $sketchdir/scenario.yaml"
47+
fi
48+
else
49+
extra_args="--embedded-services esp,arduino"
3450
fi
3551

36-
pytest tests --build-dir $build_dir -k test_$sketchname --junit-xml=$report_file
52+
pytest tests --build-dir $build_dir -k test_$sketchname --junit-xml=$report_file $extra_args
3753
result=$?
3854
if [ $result -ne 0 ]; then
3955
return $result
@@ -44,6 +60,8 @@ function run_test() {
4460
SCRIPTS_DIR="./.github/scripts"
4561
COUNT_SKETCHES="${SCRIPTS_DIR}/sketch_utils.sh count"
4662

63+
platform="hardware"
64+
wokwi_timeout=60000
4765
chunk_run=0
4866
options=0
4967
erase=0
@@ -53,6 +71,11 @@ while [ ! -z "$1" ]; do
5371
-c )
5472
chunk_run=1
5573
;;
74+
-w )
75+
shift
76+
wokwi_timeout=$1
77+
platform="wokwi"
78+
;;
5679
-o )
5780
options=1
5881
;;
@@ -79,6 +102,10 @@ while [ ! -z "$1" ]; do
79102
echo "$USAGE"
80103
exit 0
81104
;;
105+
-type )
106+
shift
107+
test_type=$1
108+
;;
82109
* )
83110
break
84111
;;
@@ -88,21 +115,39 @@ done
88115

89116
source ${SCRIPTS_DIR}/install-arduino-ide.sh
90117

118+
# If sketch is provided and test type is not, test type is inferred from the sketch path
119+
if [[ $test_type == "all" ]] || [[ -z $test_type ]]; then
120+
if [ -n "$sketch" ]; then
121+
tmp_sketch_path=$(find tests -name $sketch.ino)
122+
test_type=$(basename $(dirname $(dirname "$tmp_sketch_path")))
123+
echo "Sketch $sketch test type: $test_type"
124+
test_folder="$PWD/tests/$test_type"
125+
else
126+
test_folder="$PWD/tests"
127+
fi
128+
else
129+
test_folder="$PWD/tests/$test_type"
130+
fi
131+
91132
if [ $chunk_run -eq 0 ]; then
92-
run_test $target $PWD/tests/$sketch/$sketch.ino $options $erase
133+
if [ -z $sketch ]; then
134+
echo "ERROR: Sketch name is required for single test run"
135+
exit 1
136+
fi
137+
run_test $target $test_folder/$sketch/$sketch.ino $options $erase
93138
else
94139
if [ "$chunk_max" -le 0 ]; then
95140
echo "ERROR: Chunks count must be positive number"
96-
return 1
141+
exit 1
97142
fi
98143

99144
if [ "$chunk_index" -ge "$chunk_max" ] && [ "$chunk_max" -ge 2 ]; then
100145
echo "ERROR: Chunk index must be less than chunks count"
101-
return 1
146+
exit 1
102147
fi
103148

104149
set +e
105-
${COUNT_SKETCHES} $PWD/tests $target
150+
${COUNT_SKETCHES} $test_folder $target
106151
sketchcount=$?
107152
set -e
108153
sketches=$(cat sketches.txt)
@@ -123,7 +168,8 @@ else
123168
start_index=$(( $chunk_index * $chunk_size ))
124169
if [ "$sketchcount" -le "$start_index" ]; then
125170
echo "Skipping job"
126-
return 0
171+
touch $PWD/tests/.test_skipped
172+
exit 0
127173
fi
128174

129175
end_index=$(( $(( $chunk_index + 1 )) * $chunk_size ))

0 commit comments

Comments
 (0)