Skip to content

Commit c9f5617

Browse files
committed
Fail build if build_sketch passed invalid IDE version
Previously the build_sketch command would return 0 if IDE version(s) that aren't installed were specified.
1 parent 8895624 commit c9f5617

File tree

1 file changed

+57
-57
lines changed

1 file changed

+57
-57
lines changed

arduino-ci-script.sh

+57-57
Original file line numberDiff line numberDiff line change
@@ -769,68 +769,68 @@ function build_sketch()
769769

770770
if [[ "$ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY" == "$ARDUINO_CI_SCRIPT_IDE_VERSION_LIST_ARRAY_DECLARATION"'()' ]]; then
771771
echo "ERROR: The IDE version(s) specified are not installed"
772-
return_handler "$ARDUINO_CI_SCRIPT_FAILURE_EXIT_STATUS"
773-
fi
774-
775-
eval "$ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY"
776-
local IDEversion
777-
for IDEversion in "${IDEversionListArray[@]}"; do
778-
# Install the IDE
779-
# This must be done before searching for sketches in case the path specified is in the Arduino IDE installation folder
780-
install_ide_version "$IDEversion"
781-
782-
# The package_index files installed by some versions of the IDE (1.6.5, 1.6.5) can cause compilation to fail for other versions (1.6.5-r4, 1.6.5-r5). Attempting to install a dummy package ensures that the correct version of those files will be installed before the sketch verification.
783-
# Check if the newest installed IDE version supports --install-boards
784-
local unsupportedInstallBoardsOptionVersionsRange1regex="^1\.5\.[0-9]$"
785-
local unsupportedInstallBoardsOptionVersionsRange2regex="^1\.6\.[0-3]$"
786-
if ! [[ "$IDEversion" =~ $unsupportedInstallBoardsOptionVersionsRange1regex || "$IDEversion" =~ $unsupportedInstallBoardsOptionVersionsRange2regex ]]; then
787-
# shellcheck disable=SC2086
788-
eval \"${ARDUINO_CI_SCRIPT_APPLICATION_FOLDER}/${ARDUINO_CI_SCRIPT_IDE_INSTALLATION_FOLDER}/${ARDUINO_CI_SCRIPT_ARDUINO_COMMAND}\" --install-boards arduino:dummy "$ARDUINO_CI_SCRIPT_VERBOSITY_REDIRECT"
789-
if [[ "$ARDUINO_CI_SCRIPT_VERBOSITY_LEVEL" -gt 1 ]]; then
790-
# The warning is printed to stdout
791-
echo "NOTE: The warning above \"Selected board is not available\" is caused intentionally and does not indicate a problem."
772+
buildSketchExitStatus="$ARDUINO_CI_SCRIPT_FAILURE_EXIT_STATUS"
773+
else
774+
eval "$ARDUINO_CI_SCRIPT_GENERATED_IDE_VERSION_LIST_ARRAY"
775+
local IDEversion
776+
for IDEversion in "${IDEversionListArray[@]}"; do
777+
# Install the IDE
778+
# This must be done before searching for sketches in case the path specified is in the Arduino IDE installation folder
779+
install_ide_version "$IDEversion"
780+
781+
# The package_index files installed by some versions of the IDE (1.6.5, 1.6.5) can cause compilation to fail for other versions (1.6.5-r4, 1.6.5-r5). Attempting to install a dummy package ensures that the correct version of those files will be installed before the sketch verification.
782+
# Check if the newest installed IDE version supports --install-boards
783+
local unsupportedInstallBoardsOptionVersionsRange1regex="^1\.5\.[0-9]$"
784+
local unsupportedInstallBoardsOptionVersionsRange2regex="^1\.6\.[0-3]$"
785+
if ! [[ "$IDEversion" =~ $unsupportedInstallBoardsOptionVersionsRange1regex || "$IDEversion" =~ $unsupportedInstallBoardsOptionVersionsRange2regex ]]; then
786+
# shellcheck disable=SC2086
787+
eval \"${ARDUINO_CI_SCRIPT_APPLICATION_FOLDER}/${ARDUINO_CI_SCRIPT_IDE_INSTALLATION_FOLDER}/${ARDUINO_CI_SCRIPT_ARDUINO_COMMAND}\" --install-boards arduino:dummy "$ARDUINO_CI_SCRIPT_VERBOSITY_REDIRECT"
788+
if [[ "$ARDUINO_CI_SCRIPT_VERBOSITY_LEVEL" -gt 1 ]]; then
789+
# The warning is printed to stdout
790+
echo "NOTE: The warning above \"Selected board is not available\" is caused intentionally and does not indicate a problem."
791+
fi
792792
fi
793-
fi
794793

795-
if [[ "$sketchPath" =~ \.ino$ || "$sketchPath" =~ \.pde$ ]]; then
796-
# A sketch was specified
797-
if ! [[ -f "$sketchPath" ]]; then
798-
echo "ERROR: Specified sketch: $sketchPath doesn't exist"
799-
buildSketchExitStatus="$ARDUINO_CI_SCRIPT_FAILURE_EXIT_STATUS"
800-
elif ! build_this_sketch "$sketchPath" "$boardID" "$IDEversion" "$allowFail"; then
801-
# build_this_sketch returned a non-zero exit status
802-
buildSketchExitStatus="$ARDUINO_CI_SCRIPT_FAILURE_EXIT_STATUS"
803-
fi
804-
else
805-
# Search for all sketches in the path and put them in an array
806-
local sketchFound="false"
807-
# https://github.com/koalaman/shellcheck/wiki/SC2207
808-
declare -a sketches
809-
mapfile -t sketches < <(find "$sketchPath" -name "*.pde" -o -name "*.ino")
810-
local sketchName
811-
for sketchName in "${sketches[@]}"; do
812-
# Only verify the sketch that matches the name of the sketch folder, otherwise it will cause redundant verifications for sketches that have multiple .ino files
813-
local sketchFolder
814-
sketchFolder="$(echo "$sketchName" | rev | cut -d'/' -f 2 | rev)"
815-
local sketchNameWithoutPathWithExtension
816-
sketchNameWithoutPathWithExtension="$(echo "$sketchName" | rev | cut -d'/' -f 1 | rev)"
817-
local sketchNameWithoutPathWithoutExtension
818-
sketchNameWithoutPathWithoutExtension="${sketchNameWithoutPathWithExtension%.*}"
819-
if [[ "$sketchFolder" == "$sketchNameWithoutPathWithoutExtension" ]]; then
820-
sketchFound="true"
821-
if ! build_this_sketch "$sketchName" "$boardID" "$IDEversion" "$allowFail"; then
822-
# build_this_sketch returned a non-zero exit status
823-
buildSketchExitStatus="$ARDUINO_CI_SCRIPT_FAILURE_EXIT_STATUS"
824-
fi
794+
if [[ "$sketchPath" =~ \.ino$ || "$sketchPath" =~ \.pde$ ]]; then
795+
# A sketch was specified
796+
if ! [[ -f "$sketchPath" ]]; then
797+
echo "ERROR: Specified sketch: $sketchPath doesn't exist"
798+
buildSketchExitStatus="$ARDUINO_CI_SCRIPT_FAILURE_EXIT_STATUS"
799+
elif ! build_this_sketch "$sketchPath" "$boardID" "$IDEversion" "$allowFail"; then
800+
# build_this_sketch returned a non-zero exit status
801+
buildSketchExitStatus="$ARDUINO_CI_SCRIPT_FAILURE_EXIT_STATUS"
825802
fi
826-
done
803+
else
804+
# Search for all sketches in the path and put them in an array
805+
local sketchFound="false"
806+
# https://github.com/koalaman/shellcheck/wiki/SC2207
807+
declare -a sketches
808+
mapfile -t sketches < <(find "$sketchPath" -name "*.pde" -o -name "*.ino")
809+
local sketchName
810+
for sketchName in "${sketches[@]}"; do
811+
# Only verify the sketch that matches the name of the sketch folder, otherwise it will cause redundant verifications for sketches that have multiple .ino files
812+
local sketchFolder
813+
sketchFolder="$(echo "$sketchName" | rev | cut -d'/' -f 2 | rev)"
814+
local sketchNameWithoutPathWithExtension
815+
sketchNameWithoutPathWithExtension="$(echo "$sketchName" | rev | cut -d'/' -f 1 | rev)"
816+
local sketchNameWithoutPathWithoutExtension
817+
sketchNameWithoutPathWithoutExtension="${sketchNameWithoutPathWithExtension%.*}"
818+
if [[ "$sketchFolder" == "$sketchNameWithoutPathWithoutExtension" ]]; then
819+
sketchFound="true"
820+
if ! build_this_sketch "$sketchName" "$boardID" "$IDEversion" "$allowFail"; then
821+
# build_this_sketch returned a non-zero exit status
822+
buildSketchExitStatus="$ARDUINO_CI_SCRIPT_FAILURE_EXIT_STATUS"
823+
fi
824+
fi
825+
done
827826

828-
if [[ "$sketchFound" == "false" ]]; then
829-
echo "ERROR: No valid sketches were found in the specified path"
830-
buildSketchExitStatus="$ARDUINO_CI_SCRIPT_FAILURE_EXIT_STATUS"
827+
if [[ "$sketchFound" == "false" ]]; then
828+
echo "ERROR: No valid sketches were found in the specified path"
829+
buildSketchExitStatus="$ARDUINO_CI_SCRIPT_FAILURE_EXIT_STATUS"
830+
fi
831831
fi
832-
fi
833-
done
832+
done
833+
fi
834834

835835
disable_verbosity
836836

0 commit comments

Comments
 (0)