aboutsummaryrefslogtreecommitdiff
path: root/buildroot/tests
diff options
context:
space:
mode:
authorGeorgiy Bondarenko <69736697+nehilo@users.noreply.github.com>2021-03-04 20:54:23 +0300
committerGeorgiy Bondarenko <69736697+nehilo@users.noreply.github.com>2021-03-04 20:54:23 +0300
commite8701195e66f2d27ffe17fb514eae8173795aaf7 (patch)
tree9f519c4abf6556b9ae7190a6210d87ead1dfadde /buildroot/tests
downloadkp3s-lgvl-e8701195e66f2d27ffe17fb514eae8173795aaf7.tar.xz
kp3s-lgvl-e8701195e66f2d27ffe17fb514eae8173795aaf7.zip
Initial commit
Diffstat (limited to 'buildroot/tests')
-rw-r--r--buildroot/tests/.gitattributes1
-rw-r--r--buildroot/tests/ARMED-tests19
-rw-r--r--buildroot/tests/BIGTREE_BTT002-tests20
-rw-r--r--buildroot/tests/BIGTREE_GTR_V1_0-tests60
-rw-r--r--buildroot/tests/BIGTREE_SKR_PRO-tests41
-rw-r--r--buildroot/tests/DUE-tests61
-rw-r--r--buildroot/tests/DUE_archim-tests21
-rw-r--r--buildroot/tests/FLYF407ZG-tests18
-rw-r--r--buildroot/tests/FYSETC_F6-tests80
-rw-r--r--buildroot/tests/FYSETC_S6-tests18
-rw-r--r--buildroot/tests/LERDGEX-tests18
-rw-r--r--buildroot/tests/LPC1768-tests55
-rw-r--r--buildroot/tests/LPC1769-tests58
-rw-r--r--buildroot/tests/NUCLEO_F767ZI-tests21
-rw-r--r--buildroot/tests/REMRAM_V1-tests18
-rw-r--r--buildroot/tests/SAMD51_grandcentral_m4-tests39
-rw-r--r--buildroot/tests/STM32F070CB_malyan-tests15
-rw-r--r--buildroot/tests/STM32F070RB_malyan-tests15
-rw-r--r--buildroot/tests/STM32F103CB_malyan-tests13
-rw-r--r--buildroot/tests/STM32F103RC_btt-tests25
-rw-r--r--buildroot/tests/STM32F103RC_btt_USB-tests19
-rw-r--r--buildroot/tests/STM32F103RC_fysetc-tests16
-rw-r--r--buildroot/tests/STM32F103RC_meeb-tests23
-rw-r--r--buildroot/tests/STM32F103RE-tests22
-rw-r--r--buildroot/tests/STM32F103RET6_creality-tests30
-rw-r--r--buildroot/tests/STM32F103RE_btt-tests21
-rw-r--r--buildroot/tests/STM32F103RE_btt_USB-tests31
-rw-r--r--buildroot/tests/STM32F103VE_longer-tests23
-rw-r--r--buildroot/tests/STM32F401VE_STEVAL-tests16
-rw-r--r--buildroot/tests/STM32F407VE_black-tests15
-rw-r--r--buildroot/tests/at90usb1286_cdc-tests17
-rw-r--r--buildroot/tests/at90usb1286_dfu-tests22
-rw-r--r--buildroot/tests/esp32-tests41
-rw-r--r--buildroot/tests/jgaurora_a5s_a1-tests16
-rw-r--r--buildroot/tests/linux_native-tests19
-rw-r--r--buildroot/tests/malyan_M300-tests16
-rw-r--r--buildroot/tests/mega1280-tests59
-rw-r--r--buildroot/tests/mega2560-tests236
-rw-r--r--buildroot/tests/mks_robin-tests22
-rw-r--r--buildroot/tests/mks_robin_lite-tests17
-rw-r--r--buildroot/tests/mks_robin_mini-tests17
-rw-r--r--buildroot/tests/mks_robin_nano35-tests69
-rw-r--r--buildroot/tests/mks_robin_nano35_stm32-tests69
-rw-r--r--buildroot/tests/mks_robin_pro-tests21
-rw-r--r--buildroot/tests/mks_robin_stm32-tests13
-rw-r--r--buildroot/tests/rambo-tests133
-rw-r--r--buildroot/tests/rumba32-tests39
-rw-r--r--buildroot/tests/run_tests77
-rw-r--r--buildroot/tests/sanguino1284p-tests28
-rw-r--r--buildroot/tests/sanguino644p-tests17
-rw-r--r--buildroot/tests/teensy31-tests30
-rw-r--r--buildroot/tests/teensy35-tests122
-rw-r--r--buildroot/tests/teensy41-tests124
53 files changed, 2056 insertions, 0 deletions
diff --git a/buildroot/tests/.gitattributes b/buildroot/tests/.gitattributes
new file mode 100644
index 0000000..6313b56
--- /dev/null
+++ b/buildroot/tests/.gitattributes
@@ -0,0 +1 @@
+* text=auto eol=lf
diff --git a/buildroot/tests/ARMED-tests b/buildroot/tests/ARMED-tests
new file mode 100644
index 0000000..6aa1308
--- /dev/null
+++ b/buildroot/tests/ARMED-tests
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F1 ARMED
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+use_example_configs ArmEd
+opt_set X_DRIVER_TYPE TMC2130
+opt_set Y_DRIVER_TYPE TMC2208
+exec_test $1 $2 "ArmEd Example Configuration with mixed TMC Drivers" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/BIGTREE_BTT002-tests b/buildroot/tests/BIGTREE_BTT002-tests
new file mode 100644
index 0000000..90e033e
--- /dev/null
+++ b/buildroot/tests/BIGTREE_BTT002-tests
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F407VGT6 BigTreeTech BTT002 V1.0
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_BTT_BTT002_V1_0
+opt_set SERIAL_PORT 1
+opt_set X_DRIVER_TYPE TMC2209
+opt_set Y_DRIVER_TYPE TMC2130
+exec_test $1 $2 "BigTreeTech BTT002 Default Configuration plus TMC steppers" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/BIGTREE_GTR_V1_0-tests b/buildroot/tests/BIGTREE_GTR_V1_0-tests
new file mode 100644
index 0000000..adc850d
--- /dev/null
+++ b/buildroot/tests/BIGTREE_GTR_V1_0-tests
@@ -0,0 +1,60 @@
+#!/usr/bin/env bash
+#
+# Build tests for BigTreeTech GTR 1.0
+#
+
+# exit on first failure
+set -e
+
+restore_configs
+opt_set MOTHERBOARD BOARD_BTT_GTR_V1_0
+opt_set SERIAL_PORT -1
+opt_set EXTRUDERS 8
+opt_set TEMP_SENSOR_1 1
+opt_set TEMP_SENSOR_2 1
+opt_set TEMP_SENSOR_3 1
+opt_set TEMP_SENSOR_4 1
+opt_set TEMP_SENSOR_5 1
+opt_set TEMP_SENSOR_6 1
+opt_set TEMP_SENSOR_7 1
+# Not necessary to enable auto-fan for all extruders to hit problematic code paths
+opt_set E0_AUTO_FAN_PIN PC10
+opt_set E1_AUTO_FAN_PIN PC11
+opt_set E2_AUTO_FAN_PIN PC12
+opt_set X_DRIVER_TYPE TMC2208
+opt_set Y_DRIVER_TYPE TMC2130
+opt_set NEOPIXEL_PIN PF13
+opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER BLTOUCH NEOPIXEL_LED Z_SAFE_HOMING
+opt_enable FILAMENT_RUNOUT_SENSOR NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE
+opt_set FIL_RUNOUT_PIN 3
+opt_set FIL_RUNOUT2_PIN 4
+opt_set FIL_RUNOUT3_PIN 5
+opt_set FIL_RUNOUT4_PIN 6
+opt_set FIL_RUNOUT5_PIN 7
+opt_set FIL_RUNOUT6_PIN 8
+opt_set FIL_RUNOUT7_PIN 9
+opt_set FIL_RUNOUT8_PIN 10
+opt_set FIL_RUNOUT4_STATE HIGH
+opt_enable FIL_RUNOUT4_PULLUP
+opt_set FIL_RUNOUT8_STATE HIGH
+opt_enable FIL_RUNOUT8_PULLUP
+exec_test $1 $2 "BigTreeTech GTR 8 Extruders with Auto-Fan, Mixed TMC Drivers, and Runout Sensors with distinct states" "$3"
+
+restore_configs
+opt_set MOTHERBOARD BOARD_BTT_GTR_V1_0
+opt_set SERIAL_PORT -1
+opt_set EXTRUDERS 6
+opt_set TEMP_SENSOR_1 1
+opt_set TEMP_SENSOR_2 1
+opt_set TEMP_SENSOR_3 1
+opt_set TEMP_SENSOR_4 1
+opt_set TEMP_SENSOR_5 1
+opt_set NUM_Z_STEPPER_DRIVERS 3
+opt_set DEFAULT_Kp_LIST "{ 22.2, 20.0, 21.0, 19.0, 18.0, 17.0 }"
+opt_set DEFAULT_Ki_LIST "{ 1.08 }"
+opt_set DEFAULT_Kd_LIST "{ 114.0, 112.0, 110.0, 108.0 }"
+opt_enable TOOLCHANGE_FILAMENT_SWAP TOOLCHANGE_MIGRATION_FEATURE TOOLCHANGE_FS_INIT_BEFORE_SWAP TOOLCHANGE_FS_PRIME_FIRST_USED PID_PARAMS_PER_HOTEND
+exec_test $1 $2 "BigTreeTech GTR 6 Extruders Triple Z" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/BIGTREE_SKR_PRO-tests b/buildroot/tests/BIGTREE_SKR_PRO-tests
new file mode 100644
index 0000000..8dc433d
--- /dev/null
+++ b/buildroot/tests/BIGTREE_SKR_PRO-tests
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F407ZG BigTreeTech SKR Pro
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_BTT_SKR_PRO_V1_1
+opt_set SERIAL_PORT 1
+exec_test $1 $2 "BigTreeTech SKR Pro Default Configuration" "$3"
+
+restore_configs
+opt_set MOTHERBOARD BOARD_BTT_SKR_PRO_V1_1
+opt_set SERIAL_PORT -1
+opt_set EXTRUDERS 3
+opt_set TEMP_SENSOR_1 1
+opt_set TEMP_SENSOR_2 1
+opt_set E0_AUTO_FAN_PIN PC10
+opt_set E1_AUTO_FAN_PIN PC11
+opt_set E2_AUTO_FAN_PIN PC12
+opt_set X_DRIVER_TYPE TMC2209
+opt_set Y_DRIVER_TYPE TMC2130
+opt_enable BLTOUCH EEPROM_SETTINGS AUTO_BED_LEVELING_3POINT Z_SAFE_HOMING PINS_DEBUGGING
+exec_test $1 $2 "BigTreeTech SKR Pro 3 Extruders, Auto-Fan, BLTOUCH, mixed TMC drivers" "$3"
+
+restore_configs
+opt_set MOTHERBOARD BOARD_BTT_SKR_PRO_V1_1
+opt_set SERIAL_PORT -1
+opt_enable LASER_FEATURE REPRAP_DISCOUNT_SMART_CONTROLLER
+opt_set CUTTER_POWER_UNIT PERCENT
+opt_add SPINDLE_LASER_PWM_PIN HEATER_1_PIN
+opt_add SPINDLE_LASER_ENA_PIN HEATER_2_PIN
+exec_test $1 $2 "Laser, LCD, PERCENT power unit" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/DUE-tests b/buildroot/tests/DUE-tests
new file mode 100644
index 0000000..d4c49a3
--- /dev/null
+++ b/buildroot/tests/DUE-tests
@@ -0,0 +1,61 @@
+#!/usr/bin/env bash
+#
+# Build tests for DUE (Atmel SAM3X8E ARM Cortex-M3)
+#
+
+# exit on first failure
+set -e
+
+restore_configs
+opt_set LCD_LANGUAGE bg
+opt_set MOTHERBOARD BOARD_RAMPS4DUE_EFB
+opt_set TEMP_SENSOR_0 -2
+opt_set TEMP_SENSOR_BED 2
+opt_set GRID_MAX_POINTS_X 16
+opt_set FANMUX0_PIN 53
+opt_enable S_CURVE_ACCELERATION EEPROM_SETTINGS GCODE_MACROS \
+ FIX_MOUNTED_PROBE Z_SAFE_HOMING CODEPENDENT_XY_HOMING \
+ ASSISTED_TRAMMING ASSISTED_TRAMMING_WIZARD REPORT_TRAMMING_MM ASSISTED_TRAMMING_WAIT_POSITION \
+ EEPROM_SETTINGS SDSUPPORT BINARY_FILE_TRANSFER \
+ BLINKM PCA9533 PCA9632 RGB_LED RGB_LED_R_PIN RGB_LED_G_PIN RGB_LED_B_PIN LED_CONTROL_MENU \
+ NEOPIXEL_LED CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CASE_LIGHT_MENU \
+ NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE FILAMENT_RUNOUT_DISTANCE_MM FILAMENT_RUNOUT_SENSOR \
+ AUTO_BED_LEVELING_BILINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \
+ SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE CALIBRATION_GCODE \
+ BACKLASH_COMPENSATION BACKLASH_GCODE BAUD_RATE_GCODE BEZIER_CURVE_SUPPORT \
+ FWRETRACT ARC_SUPPORT ARC_P_CIRCLES CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS \
+ PSU_CONTROL AUTO_POWER_CONTROL \
+ PIDTEMPBED SLOW_PWM_HEATERS THERMAL_PROTECTION_CHAMBER \
+ PINS_DEBUGGING MAX7219_DEBUG M114_DETAIL \
+ EXTENSIBLE_UI
+opt_add EXTUI_EXAMPLE
+opt_set E0_AUTO_FAN_PIN 8
+opt_set EXTRUDER_AUTO_FAN_SPEED 100
+opt_set TEMP_SENSOR_CHAMBER 3
+opt_add TEMP_CHAMBER_PIN 6
+opt_set HEATER_CHAMBER_PIN 45
+exec_test $1 $2 "RAMPS4DUE_EFB with ABL (Bilinear), ExtUI, S-Curve, many options." "$3"
+
+#
+# RADDS with BLTouch, ABL(B), 3 x Z auto-align
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_RADDS
+opt_enable USE_XMAX_PLUG USE_YMAX_PLUG ENDSTOPPULLUPS BLTOUCH AUTO_BED_LEVELING_BILINEAR \
+ Z_STEPPER_AUTO_ALIGN Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS Z_SAFE_HOMING
+ #TOUCH_UI_FTDI_EVE LCD_ALEPHOBJECTS_CLCD_UI OTHER_PIN_LAYOUT
+opt_set NUM_Z_STEPPER_DRIVERS 3
+pins_set ramps/RAMPS X_MAX_PIN -1
+pins_set ramps/RAMPS Y_MAX_PIN -1
+exec_test $1 $2 "RADDS with ABL (Bilinear), Triple Z Axis, Z_STEPPER_AUTO_ALIGN" "$3"
+
+#
+# Test SWITCHING_EXTRUDER
+#
+restore_configs
+opt_set LCD_LANGUAGE fi
+opt_set MOTHERBOARD BOARD_RAMPS4DUE_EEF
+opt_set EXTRUDERS 2
+opt_set NUM_SERVOS 1
+opt_enable SWITCHING_EXTRUDER ULTIMAKERCONTROLLER BEEP_ON_FEEDRATE_CHANGE POWER_LOSS_RECOVERY
+exec_test $1 $2 "RAMPS4DUE_EEF with SWITCHING_EXTRUDER, POWER_LOSS_RECOVERY" "$3"
diff --git a/buildroot/tests/DUE_archim-tests b/buildroot/tests/DUE_archim-tests
new file mode 100644
index 0000000..f1711a8
--- /dev/null
+++ b/buildroot/tests/DUE_archim-tests
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+#
+# Build tests for DUE (Atmel SAM3X8E ARM Cortex-M3)
+#
+
+# exit on first failure
+set -e
+
+#
+# Test Archim 1
+#
+use_example_configs UltiMachine/Archim1
+exec_test $1 $2 "Archim 1 base configuration" "$3"
+
+#
+# Test Archim 2
+#
+use_example_configs UltiMachine/Archim2
+exec_test $1 $2 "Archim 2 base configuration" "$3"
+
+restore_configs
diff --git a/buildroot/tests/FLYF407ZG-tests b/buildroot/tests/FLYF407ZG-tests
new file mode 100644
index 0000000..2c915eb
--- /dev/null
+++ b/buildroot/tests/FLYF407ZG-tests
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+#
+# Build tests for FLYF407ZG
+#
+
+# exit on first failure
+set -e
+
+# Build examples
+restore_configs
+opt_set MOTHERBOARD BOARD_FLYF407ZG
+opt_set SERIAL_PORT -1
+opt_set X_DRIVER_TYPE TMC2208
+opt_set Y_DRIVER_TYPE TMC2130
+exec_test $1 $2 "FLYF407ZG Default Config with mixed TMC Drivers" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/FYSETC_F6-tests b/buildroot/tests/FYSETC_F6-tests
new file mode 100644
index 0000000..e1eb668
--- /dev/null
+++ b/buildroot/tests/FYSETC_F6-tests
@@ -0,0 +1,80 @@
+#!/usr/bin/env bash
+#
+# Build tests for AVR ATmega FYSETC F6 1.3
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_FYSETC_F6_13
+opt_enable DGUS_LCD_UI_FYSETC
+exec_test $1 $2 "FYSETC F6 1.3 with DGUS" "$3"
+
+#
+# Delta Config (generic) + UBL + ALLEN_KEY + EEPROM_SETTINGS + OLED_PANEL_TINYBOY2
+#
+use_example_configs delta/generic
+opt_set MOTHERBOARD BOARD_FYSETC_F6_13
+opt_enable RESTORE_LEVELING_AFTER_G28 EEPROM_SETTINGS EEPROM_CHITCHAT \
+ Z_PROBE_ALLEN_KEY AUTO_BED_LEVELING_UBL \
+ OLED_PANEL_TINYBOY2 MESH_EDIT_GFX_OVERLAY DELTA_CALIBRATION_MENU
+opt_set LCD_LANGUAGE ko_KR
+opt_set X_DRIVER_TYPE L6470
+opt_set Y_DRIVER_TYPE L6470
+opt_set Z_DRIVER_TYPE L6470
+opt_add L6470_CHAIN_SCK_PIN 53
+opt_add L6470_CHAIN_MISO_PIN 49
+opt_add L6470_CHAIN_MOSI_PIN 40
+opt_add L6470_CHAIN_SS_PIN 42
+opt_add "ENABLE_RESET_L64XX_CHIPS(V) NOOP"
+exec_test $1 $2 "DELTA, RAMPS, L6470, UBL, Allen Key, EEPROM, OLED_PANEL_TINYBOY2..." "$3"
+
+#
+# Test mixed TMC config
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_FYSETC_F6_13
+opt_set LCD_LANGUAGE vi
+opt_set LCD_LANGUAGE_2 fr
+opt_set X_DRIVER_TYPE TMC2160
+opt_set Y_DRIVER_TYPE TMC5160
+opt_set Z_DRIVER_TYPE TMC2208_STANDALONE
+opt_set E0_DRIVER_TYPE TMC2130
+opt_set X_MIN_ENDSTOP_INVERTING true
+opt_set Y_MIN_ENDSTOP_INVERTING true
+opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER \
+ MARLIN_BRICKOUT MARLIN_INVADERS MARLIN_SNAKE \
+ MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD \
+ USE_ZMIN_PLUG SENSORLESS_HOMING TMC_DEBUG M114_DETAIL
+exec_test $1 $2 "RAMPS | Mixed TMC | Sensorless | RRDFGSC | Games" "$3"
+
+#
+# Delta Config (FLSUN AC because it's complex)
+#
+use_example_configs delta/FLSUN/auto_calibrate
+opt_set MOTHERBOARD BOARD_FYSETC_F6_13
+exec_test $1 $2 "RAMPS 1.3 | DELTA | FLSUN AC Config" "$3"
+
+#
+# SCARA with Mixed TMC
+#
+use_example_configs SCARA/Morgan
+opt_set MOTHERBOARD BOARD_FYSETC_F6_13
+opt_set LCD_LANGUAGE es
+opt_enable USE_ZMIN_PLUG FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR PAUSE_BEFORE_DEPLOY_STOW \
+ FYSETC_242_OLED_12864 EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL Z_SAFE_HOMING \
+ STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD SENSORLESS_HOMING SQUARE_WAVE_STEPPING
+opt_set X_MAX_ENDSTOP_INVERTING false
+opt_set X_DRIVER_TYPE TMC2209
+opt_set Y_DRIVER_TYPE TMC2130
+opt_set Z_DRIVER_TYPE TMC2130_STANDALONE
+opt_set E0_DRIVER_TYPE TMC2660
+opt_add X_HARDWARE_SERIAL Serial2
+exec_test $1 $2 "FYSETC_F6 | SCARA | Mixed TMC | EEPROM" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/FYSETC_S6-tests b/buildroot/tests/FYSETC_S6-tests
new file mode 100644
index 0000000..c7f7a16
--- /dev/null
+++ b/buildroot/tests/FYSETC_S6-tests
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+#
+# Build tests for FYSETC_S6
+#
+
+# exit on first failure
+set -e
+
+# Build examples
+restore_configs
+use_example_configs FYSETC/S6
+opt_enable MEATPACK
+opt_set Y_DRIVER_TYPE TMC2209
+opt_set Z_DRIVER_TYPE TMC2130
+exec_test $1 $2 "FYSETC S6 Example" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/LERDGEX-tests b/buildroot/tests/LERDGEX-tests
new file mode 100644
index 0000000..7fcdb26
--- /dev/null
+++ b/buildroot/tests/LERDGEX-tests
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+#
+# Build tests for LERDGEX environment
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_LERDGE_X
+opt_set SERIAL_PORT 1
+exec_test $1 $2 "LERDGE X with Default Configuration" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/LPC1768-tests b/buildroot/tests/LPC1768-tests
new file mode 100644
index 0000000..27d2fbf
--- /dev/null
+++ b/buildroot/tests/LPC1768-tests
@@ -0,0 +1,55 @@
+#!/usr/bin/env bash
+#
+# Build tests for LPC1768 (NXP ARM Cortex-M3)
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+#restore_configs
+#opt_set MOTHERBOARD BOARD_RAMPS_14_RE_ARM_EFB
+#exec_test $1 $2 "Default Configuration" "$3"
+
+restore_configs
+opt_set MOTHERBOARD BOARD_RAMPS_14_RE_ARM_EFB
+opt_enable VIKI2 SDSUPPORT SDCARD_READONLY SERIAL_PORT_2 NEOPIXEL_LED
+opt_set NEOPIXEL_PIN P1_16
+exec_test $1 $2 "ReARM EFB VIKI2, SDSUPPORT, 2 Serial ports (USB CDC + UART0), NeoPixel" "$3"
+
+#restore_configs
+#use_example_configs Mks/Sbase
+#exec_test $1 $2 "MKS SBASE Example Config" "$3"
+
+restore_configs
+opt_set MOTHERBOARD BOARD_MKS_SBASE
+opt_set EXTRUDERS 2
+opt_set TEMP_SENSOR_1 1
+opt_set NUM_SERVOS 2
+opt_set SERVO_DELAY "{ 300, 300 }"
+opt_enable SWITCHING_NOZZLE SWITCHING_NOZZLE_E1_SERVO_NR ULTIMAKERCONTROLLER
+exec_test $1 $2 "MKS SBASE with SWITCHING_NOZZLE" "$3"
+
+restore_configs
+opt_set MOTHERBOARD BOARD_RAMPS_14_RE_ARM_EEB
+opt_set EXTRUDERS 2
+opt_set TEMP_SENSOR_1 -1
+opt_set TEMP_SENSOR_BED 5
+opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER ADAPTIVE_FAN_SLOWING NO_FAN_SLOWING_IN_PID_TUNING \
+ FILAMENT_WIDTH_SENSOR FILAMENT_LCD_DISPLAY PID_EXTRUSION_SCALING SOUND_MENU_ITEM \
+ NOZZLE_AS_PROBE AUTO_BED_LEVELING_BILINEAR PREHEAT_BEFORE_LEVELING G29_RETRY_AND_RECOVER Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \
+ BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET BABYSTEP_ZPROBE_GFX_OVERLAY \
+ PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE SLOW_PWM_HEATERS PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT \
+ Z_SAFE_HOMING ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE \
+ HOST_KEEPALIVE_FEATURE HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT \
+ LCD_INFO_MENU ARC_SUPPORT BEZIER_CURVE_SUPPORT EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES \
+ SDSUPPORT SDCARD_SORT_ALPHA AUTO_REPORT_SD_STATUS EMERGENCY_PARSER
+opt_set GRID_MAX_POINTS_X 16
+opt_set NOZZLE_TO_PROBE_OFFSET "{ 0, 0, 0 }"
+opt_set NOZZLE_CLEAN_MIN_TEMP 170
+exec_test $1 $2 "Re-ARM with NOZZLE_AS_PROBE and many features." "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/LPC1769-tests b/buildroot/tests/LPC1769-tests
new file mode 100644
index 0000000..0a61d42
--- /dev/null
+++ b/buildroot/tests/LPC1769-tests
@@ -0,0 +1,58 @@
+#!/usr/bin/env bash
+#
+# Build tests for LPC1769 (NXP ARM Cortex-M3)
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+use_example_configs Azteeg/X5GT
+exec_test $1 $2 "Azteeg X5GT Example Configuration" "$3"
+
+restore_configs
+opt_set MOTHERBOARD BOARD_SMOOTHIEBOARD
+opt_set EXTRUDERS 2
+opt_set TEMP_SENSOR_1 -1
+opt_set TEMP_SENSOR_BED 5
+opt_enable TFTGLCD_PANEL_SPI SDSUPPORT ADAPTIVE_FAN_SLOWING NO_FAN_SLOWING_IN_PID_TUNING \
+ FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR G29_RETRY_AND_RECOVER Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \
+ BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET LEVEL_CORNERS_USE_PROBE LEVEL_CORNERS_VERIFY_RAISED \
+ PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE SLOW_PWM_HEATERS PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT \
+ Z_SAFE_HOMING ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE \
+ LCD_INFO_MENU ARC_SUPPORT BEZIER_CURVE_SUPPORT EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES SDCARD_SORT_ALPHA EMERGENCY_PARSER
+opt_set GRID_MAX_POINTS_X 16
+exec_test $1 $2 "Smoothieboard with TFTGLCD_PANEL_SPI and many features" "$3"
+
+#restore_configs
+#opt_set MOTHERBOARD BOARD_AZTEEG_X5_MINI_WIFI
+#opt_enable COREYX USE_XMAX_PLUG DAC_MOTOR_CURRENT_DEFAULT \
+# REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT BABYSTEPPING \
+# AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 EEPROM_SETTINGS \
+# FILAMENT_LCD_DISPLAY FILAMENT_WIDTH_SENSOR FAN_SOFT_PWM \
+# SHOW_TEMP_ADC_VALUES HOME_Y_BEFORE_X EMERGENCY_PARSER FAN_KICKSTART_TIME \
+# SD_ABORT_ON_ENDSTOP_HIT ADVANCED_OK GCODE_MACROS \
+# VOLUMETRIC_DEFAULT_ON NO_WORKSPACE_OFFSETS \
+# EXTRA_FAN_SPEED FWRETRACT MENU_ADDAUTOSTART SDCARD_SORT_ALPHA
+#opt_set FAN_MIN_PWM 50
+#opt_set FAN_KICKSTART_TIME 100
+#opt_set XY_FREQUENCY_LIMIT 15
+#exec_test $1 $2 "Azteeg X5 MINI WIFI Many less common options" "$3"
+
+restore_configs
+use_example_configs delta/generic
+opt_set MOTHERBOARD BOARD_COHESION3D_REMIX
+opt_set X_DRIVER_TYPE TMC2130
+opt_set Y_DRIVER_TYPE TMC2130
+opt_set Z_DRIVER_TYPE TMC2130
+opt_enable AUTO_BED_LEVELING_BILINEAR EEPROM_SETTINGS EEPROM_CHITCHAT MECHANICAL_GANTRY_CALIBRATION \
+ TMC_USE_SW_SPI MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z HYBRID_THRESHOLD \
+ SENSORLESS_PROBING Z_SAFE_HOMING X_STALL_SENSITIVITY Y_STALL_SENSITIVITY Z_STALL_SENSITIVITY TMC_DEBUG \
+ EXPERIMENTAL_I2CBUS
+opt_disable PSU_CONTROL Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
+exec_test $1 $2 "Cohesion3D Remix DELTA + ABL Bilinear + EEPROM + SENSORLESS_PROBING" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/NUCLEO_F767ZI-tests b/buildroot/tests/NUCLEO_F767ZI-tests
new file mode 100644
index 0000000..bd5ca86
--- /dev/null
+++ b/buildroot/tests/NUCLEO_F767ZI-tests
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+#
+# Build tests for NUCLEO_F767ZI
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_NUCLEO_F767ZI
+opt_set SERIAL_PORT -1
+opt_enable BLTOUCH Z_SAFE_HOMING SPEAKER SOFTWARE_DRIVER_ENABLE
+opt_set X_DRIVER_TYPE TMC2209
+opt_set Y_DRIVER_TYPE TMC2208
+exec_test $1 $2 "Mixed timer usage" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/REMRAM_V1-tests b/buildroot/tests/REMRAM_V1-tests
new file mode 100644
index 0000000..f5944ff
--- /dev/null
+++ b/buildroot/tests/REMRAM_V1-tests
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+#
+# Build tests for REMRAM_V1
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_REMRAM_V1
+opt_set SERIAL_PORT 1
+exec_test $1 $2 "Default Configuration" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/SAMD51_grandcentral_m4-tests b/buildroot/tests/SAMD51_grandcentral_m4-tests
new file mode 100644
index 0000000..a989295
--- /dev/null
+++ b/buildroot/tests/SAMD51_grandcentral_m4-tests
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+#
+# Build tests for Adafruit Grand Central M4 (ATMEL ARM Cortex-M4)
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set SERIAL_PORT -1
+opt_set MOTHERBOARD BOARD_AGCM4_RAMPS_144
+opt_set TEMP_SENSOR_0 11
+opt_set TEMP_SENSOR_BED 11
+opt_set X_DRIVER_TYPE TMC2209
+opt_set Y_DRIVER_TYPE TMC2209
+opt_set Z_DRIVER_TYPE TMC2209
+opt_set Z2_DRIVER_TYPE TMC2209
+opt_set E0_DRIVER_TYPE TMC2209
+opt_set RESTORE_LEVELING_AFTER_G28 false
+opt_set LCD_LANGUAGE it
+opt_set NUM_Z_STEPPER_DRIVERS 2
+opt_set HOMING_BUMP_MM "{ 0, 0, 0 }"
+opt_set SDCARD_CONNECTION LCD
+opt_enable ENDSTOP_INTERRUPTS_FEATURE S_CURVE_ACCELERATION BLTOUCH Z_MIN_PROBE_REPEATABILITY_TEST \
+ FILAMENT_RUNOUT_SENSOR G26_MESH_VALIDATION MESH_EDIT_GFX_OVERLAY Z_SAFE_HOMING \
+ EEPROM_SETTINGS NOZZLE_PARK_FEATURE SDSUPPORT SD_CHECK_AND_RETRY \
+ REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER Z_STEPPER_AUTO_ALIGN ADAPTIVE_STEP_SMOOTHING \
+ STATUS_MESSAGE_SCROLLING LCD_SET_PROGRESS_MANUALLY SHOW_REMAINING_TIME USE_M73_REMAINING_TIME \
+ LONG_FILENAME_HOST_SUPPORT SCROLL_LONG_FILENAMES BABYSTEPPING DOUBLECLICK_FOR_Z_BABYSTEPPING \
+ MOVE_Z_WHEN_IDLE BABYSTEP_ZPROBE_OFFSET BABYSTEP_ZPROBE_GFX_OVERLAY \
+ LIN_ADVANCE ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE MONITOR_DRIVER_STATUS SENSORLESS_HOMING \
+ SQUARE_WAVE_STEPPING TMC_DEBUG EXPERIMENTAL_SCURVE
+exec_test $1 $2 "Build Grand Central M4 Default Configuration" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/STM32F070CB_malyan-tests b/buildroot/tests/STM32F070CB_malyan-tests
new file mode 100644
index 0000000..eeec7e9
--- /dev/null
+++ b/buildroot/tests/STM32F070CB_malyan-tests
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F070CB Malyan M200 v2
+#
+
+# exit on first failure
+set -e
+
+restore_configs
+opt_set MOTHERBOARD BOARD_MALYAN_M200_V2
+opt_set SERIAL_PORT -1
+exec_test $1 $2 "Malyan M200 v2 Default Config" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/STM32F070RB_malyan-tests b/buildroot/tests/STM32F070RB_malyan-tests
new file mode 100644
index 0000000..493dd5f
--- /dev/null
+++ b/buildroot/tests/STM32F070RB_malyan-tests
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F070RB Malyan M200 v2
+#
+
+# exit on first failure
+set -e
+
+restore_configs
+opt_set MOTHERBOARD BOARD_MALYAN_M200_V2
+opt_set SERIAL_PORT -1
+exec_test $1 $2 "Malyan M200 v2 Default Config" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/STM32F103CB_malyan-tests b/buildroot/tests/STM32F103CB_malyan-tests
new file mode 100644
index 0000000..6624b6c
--- /dev/null
+++ b/buildroot/tests/STM32F103CB_malyan-tests
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F103CB Malyan M200
+#
+
+# exit on first failure
+set -e
+
+use_example_configs Malyan/M200
+exec_test $1 $2 "Malyan M200" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/STM32F103RC_btt-tests b/buildroot/tests/STM32F103RC_btt-tests
new file mode 100644
index 0000000..0084f59
--- /dev/null
+++ b/buildroot/tests/STM32F103RC_btt-tests
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F103RC BigTreeTech (SKR Mini E3)
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V1_0
+opt_set SERIAL_PORT 1
+opt_set SERIAL_PORT_2 -1
+opt_set X_DRIVER_TYPE TMC2209
+opt_set Y_DRIVER_TYPE TMC2209
+opt_set Z_DRIVER_TYPE TMC2209
+opt_set E0_DRIVER_TYPE TMC2209
+opt_enable PINS_DEBUGGING
+
+exec_test $1 $2 "BigTreeTech SKR Mini E3 1.0 - Basic Config with TMC2209 HW Serial" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/STM32F103RC_btt_USB-tests b/buildroot/tests/STM32F103RC_btt_USB-tests
new file mode 100644
index 0000000..d752c87
--- /dev/null
+++ b/buildroot/tests/STM32F103RC_btt_USB-tests
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F103RC BigTreeTech (SKR Mini v1.1)
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_V1_1
+opt_set SERIAL_PORT 1
+opt_set SERIAL_PORT_2 -1
+exec_test $1 $2 "BigTreeTech SKR Mini v1.1 - Basic Configuration" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/STM32F103RC_fysetc-tests b/buildroot/tests/STM32F103RC_fysetc-tests
new file mode 100644
index 0000000..0e78c73
--- /dev/null
+++ b/buildroot/tests/STM32F103RC_fysetc-tests
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F103RC FYSETC
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+use_example_configs "Creality/Ender-3/FYSETC Cheetah 1.2/base"
+exec_test $1 $2 "Cheetah 1.2 Configuration" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/STM32F103RC_meeb-tests b/buildroot/tests/STM32F103RC_meeb-tests
new file mode 100644
index 0000000..4fcb6e8
--- /dev/null
+++ b/buildroot/tests/STM32F103RC_meeb-tests
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F103RC MEEB_3DP (ccrobot-online.com)
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_CCROBOT_MEEB_3DP
+opt_set SERIAL_PORT 1
+opt_set SERIAL_PORT_2 -1
+opt_set X_DRIVER_TYPE TMC2208
+opt_set Y_DRIVER_TYPE TMC2208
+opt_set Z_DRIVER_TYPE TMC2208
+opt_set E0_DRIVER_TYPE TMC2208
+exec_test $1 $2 "MEEB_3DP - Basic Config with TMC2208 SW Serial" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/STM32F103RE-tests b/buildroot/tests/STM32F103RE-tests
new file mode 100644
index 0000000..909c362
--- /dev/null
+++ b/buildroot/tests/STM32F103RE-tests
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F103RE
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_STM32F103RE
+opt_set EXTRUDERS 2
+opt_set SERIAL_PORT -1
+opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT \
+ PAREN_COMMENTS GCODE_MOTION_MODES SINGLENOZZLE TOOLCHANGE_FILAMENT_SWAP TOOLCHANGE_PARK \
+ BAUD_RATE_GCODE GCODE_MACROS NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE
+exec_test $1 $2 "STM32F1R EEPROM_SETTINGS EEPROM_CHITCHAT REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT PAREN_COMMENTS GCODE_MOTION_MODES" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/STM32F103RET6_creality-tests b/buildroot/tests/STM32F103RET6_creality-tests
new file mode 100644
index 0000000..199bd6a
--- /dev/null
+++ b/buildroot/tests/STM32F103RET6_creality-tests
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F103RET6_creality
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with configs included in the PR
+#
+use_example_configs "Creality/Ender-3 V2"
+opt_enable MARLIN_DEV_MODE
+exec_test $1 $2 "Ender 3 v2" "$3"
+
+use_example_configs "Creality/Ender-3 V2"
+opt_disable CLASSIC_JERK
+opt_add SDCARD_EEPROM_EMULATION
+exec_test $1 $2 "Ender 3 v2, SD EEPROM, w/o CLASSIC_JERK" "$3"
+
+restore_configs
+opt_set SERIAL_PORT 1
+opt_set MOTHERBOARD BOARD_CREALITY_V452
+opt_disable NOZZLE_TO_PROBE_OFFSET
+opt_enable NOZZLE_AS_PROBE Z_SAFE_HOMING Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
+opt_enable PROBE_ACTIVATION_SWITCH PROBE_TARE PROBE_TARE_ONLY_WHILE_INACTIVE
+exec_test $1 $2 "Creality V4.5.2 PROBE_ACTIVATION_SWITCH, Probe Tare" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/STM32F103RE_btt-tests b/buildroot/tests/STM32F103RE_btt-tests
new file mode 100644
index 0000000..ab8681c
--- /dev/null
+++ b/buildroot/tests/STM32F103RE_btt-tests
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F103RE BigTreeTech (SKR E3 DIP v1.0)
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_BTT_SKR_E3_DIP
+opt_set SERIAL_PORT 1
+opt_set SERIAL_PORT_2 -1
+opt_set X_DRIVER_TYPE TMC2209
+opt_set Y_DRIVER_TYPE TMC2130
+exec_test $1 $2 "BigTreeTech SKR E3 DIP v1.0 - Basic Config with mixed TMC Drivers" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/STM32F103RE_btt_USB-tests b/buildroot/tests/STM32F103RE_btt_USB-tests
new file mode 100644
index 0000000..43162b6
--- /dev/null
+++ b/buildroot/tests/STM32F103RE_btt_USB-tests
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F103RE BigTreeTech (SKR E3 DIP v1.0)
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_BTT_SKR_E3_DIP
+opt_set SERIAL_PORT 1
+opt_set SERIAL_PORT_2 -1
+exec_test $1 $2 "BigTreeTech SKR E3 DIP v1.0 - Basic Configuration" "$3"
+
+restore_configs
+opt_set MOTHERBOARD BOARD_BTT_SKR_CR6
+opt_set SERIAL_PORT -1
+opt_set SERIAL_PORT_2 2
+opt_set TEMP_SENSOR_BED 1
+opt_enable CR10_STOCKDISPLAY \
+ NOZZLE_AS_PROBE Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN Z_SAFE_HOMING \
+ PROBE_ACTIVATION_SWITCH PROBE_TARE PROBE_TARE_ONLY_WHILE_INACTIVE \
+ PROBING_HEATERS_OFF PREHEAT_BEFORE_PROBING
+opt_disable NOZZLE_TO_PROBE_OFFSET
+exec_test $1 $2 "BigTreeTech SKR CR6 PROBE_ACTIVATION_SWITCH, Probe Tare" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/STM32F103VE_longer-tests b/buildroot/tests/STM32F103VE_longer-tests
new file mode 100644
index 0000000..1c90744
--- /dev/null
+++ b/buildroot/tests/STM32F103VE_longer-tests
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F103VET6
+#
+
+# exit on first failure
+set -e
+
+use_example_configs Alfawise/U20
+opt_enable BAUD_RATE_GCODE
+exec_test $1 $2 "CLASSIC_UI U20 config" "$3"
+
+use_example_configs Alfawise/U20
+opt_enable BAUD_RATE_GCODE TFT_COLOR_UI
+opt_disable TFT_CLASSIC_UI CUSTOM_STATUS_SCREEN_IMAGE
+exec_test $1 $2 "COLOR_UI U20 config" "$3"
+
+use_example_configs Alfawise/U20-bltouch
+opt_enable BAUD_RATE_GCODE
+exec_test $1 $2 "BLTouch U20 config"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/STM32F401VE_STEVAL-tests b/buildroot/tests/STM32F401VE_STEVAL-tests
new file mode 100644
index 0000000..d7c90e7
--- /dev/null
+++ b/buildroot/tests/STM32F401VE_STEVAL-tests
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F401VE_STEVAL
+#
+
+# exit on first failure
+set -e
+
+# Build examples
+restore_configs
+opt_set MOTHERBOARD BOARD_STEVAL_3DP001V1
+opt_set SERIAL_PORT -1
+exec_test $1 $2 "STM32F401VE_STEVAL Default Config" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/STM32F407VE_black-tests b/buildroot/tests/STM32F407VE_black-tests
new file mode 100644
index 0000000..6b7a3cf
--- /dev/null
+++ b/buildroot/tests/STM32F407VE_black-tests
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F407VET6
+#
+
+# exit on first failure
+set -e
+
+restore_configs
+use_example_configs STM32/Black_STM32F407VET6
+opt_enable BAUD_RATE_GCODE
+exec_test $1 $2 "Full-featured Sample Black STM32F407VET6 config" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/at90usb1286_cdc-tests b/buildroot/tests/at90usb1286_cdc-tests
new file mode 100644
index 0000000..01d752d
--- /dev/null
+++ b/buildroot/tests/at90usb1286_cdc-tests
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+#
+# Build tests for AT90USB1286 ARMED
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_BRAINWAVE_PRO
+exec_test $1 $2 "Default Configuration" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/at90usb1286_dfu-tests b/buildroot/tests/at90usb1286_dfu-tests
new file mode 100644
index 0000000..75672a6
--- /dev/null
+++ b/buildroot/tests/at90usb1286_dfu-tests
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+#
+# Build tests for AT90USB1286 ARMED
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_PRINTRBOARD
+exec_test $1 $2 "Printrboard Configuration" "$3"
+
+restore_configs
+opt_set MOTHERBOARD BOARD_PRINTRBOARD_REVF
+opt_enable MINIPANEL
+exec_test $1 $2 "Printrboard RevF with MiniPanel and Stepper DAC (in pins file)" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/esp32-tests b/buildroot/tests/esp32-tests
new file mode 100644
index 0000000..310eea2
--- /dev/null
+++ b/buildroot/tests/esp32-tests
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+#
+# Build tests for ESP32
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_ESPRESSIF_ESP32
+opt_enable WIFISUPPORT WEBSUPPORT GCODE_MACROS BAUD_RATE_GCODE M115_GEOMETRY_REPORT REPETIER_GCODE_M360
+opt_add WIFI_SSID "\"ssid\""
+opt_add WIFI_PWD "\"password\""
+opt_set TX_BUFFER_SIZE 64
+exec_test $1 $2 "ESP32 with WIFISUPPORT and WEBSUPPORT" "$3"
+
+#
+# Build with TMC drivers using hardware serial
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_ESPRESSIF_ESP32
+opt_set X_DRIVER_TYPE TMC2209
+opt_set Y_DRIVER_TYPE TMC2208
+opt_set Z_DRIVER_TYPE TMC2209
+opt_set E0_DRIVER_TYPE TMC2209
+opt_set X_HARDWARE_SERIAL Serial1
+opt_set Y_HARDWARE_SERIAL Serial1
+opt_set Z_HARDWARE_SERIAL Serial1
+opt_set E0_HARDWARE_SERIAL Serial1
+opt_set X_SLAVE_ADDRESS 0
+opt_set Y_SLAVE_ADDRESS 1
+opt_set Z_SLAVE_ADDRESS 2
+opt_set E0_SLAVE_ADDRESS 3
+opt_enable HOTEND_IDLE_TIMEOUT SOFTWARE_DRIVER_ENABLE
+exec_test $1 $2 "ESP32, TMC HW Serial, Hotend Idle" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/jgaurora_a5s_a1-tests b/buildroot/tests/jgaurora_a5s_a1-tests
new file mode 100644
index 0000000..e9be89e
--- /dev/null
+++ b/buildroot/tests/jgaurora_a5s_a1-tests
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F103ZE JGAurora A5S A1
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+use_example_configs JGAurora/A5S
+exec_test $1 $2 "JGAurora/A5S Configuration" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/linux_native-tests b/buildroot/tests/linux_native-tests
new file mode 100644
index 0000000..711691f
--- /dev/null
+++ b/buildroot/tests/linux_native-tests
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+#
+# Build tests for Linux x86_64
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_LINUX_RAMPS
+opt_set TEMP_SENSOR_BED 1
+opt_enable PIDTEMPBED EEPROM_SETTINGS BAUD_RATE_GCODE
+exec_test $1 $2 "Linux with EEPROM" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/malyan_M300-tests b/buildroot/tests/malyan_M300-tests
new file mode 100644
index 0000000..27bdcfb
--- /dev/null
+++ b/buildroot/tests/malyan_M300-tests
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F070CB Malyan M300
+#
+
+# exit on first failure
+set -e
+
+restore_configs
+use_example_configs "delta/Malyan M300"
+opt_disable AUTO_BED_LEVELING_3POINT
+opt_set LCD_SERIAL_PORT 1
+exec_test $1 $2 "Malyan M300 (delta)" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/mega1280-tests b/buildroot/tests/mega1280-tests
new file mode 100644
index 0000000..ac1b5f6
--- /dev/null
+++ b/buildroot/tests/mega1280-tests
@@ -0,0 +1,59 @@
+#!/usr/bin/env bash
+#
+# Build tests for AVR ATmega1280
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+#restore_configs
+#exec_test $1 $2 "Default Configuration" "$3"
+
+#
+# Test MESH_BED_LEVELING feature, with LCD
+#
+restore_configs
+opt_set LCD_LANGUAGE an
+opt_enable SPINDLE_FEATURE ULTIMAKERCONTROLLER LCD_BED_LEVELING \
+ EEPROM_SETTINGS EEPROM_BOOT_SILENT EEPROM_AUTO_INIT \
+ SENSORLESS_BACKOFF_MM HOMING_BACKOFF_POST_MM HOME_Y_BEFORE_X CODEPENDENT_XY_HOMING \
+ MESH_BED_LEVELING ENABLE_LEVELING_FADE_HEIGHT MESH_G28_REST_ORIGIN \
+ G26_MESH_VALIDATION MESH_EDIT_MENU GCODE_QUOTED_STRINGS \
+ EXTERNAL_CLOSED_LOOP_CONTROLLER POWER_MONITOR_CURRENT POWER_MONITOR_VOLTAGE
+opt_set POWER_MONITOR_CURRENT_PIN 14
+opt_set POWER_MONITOR_VOLTAGE_PIN 15
+opt_set CLOSED_LOOP_ENABLE_PIN 44
+opt_set CLOSED_LOOP_MOVE_COMPLETE_PIN 45
+exec_test $1 $2 "Spindle, MESH_BED_LEVELING, closed loop, Power Monitor, and LCD" "$3"
+
+#
+# Test DUAL_X_CARRIAGE
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TT_OSCAR
+opt_set LCD_LANGUAGE pt
+opt_set EXTRUDERS 2
+opt_set TEMP_SENSOR_1 1
+opt_enable USE_XMAX_PLUG DUAL_X_CARRIAGE REPRAPWORLD_KEYPAD
+opt_set REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
+exec_test $1 $2 "TT Oscar | DUAL_X_CARRIAGE" "$3"
+
+#
+# Delta Config (generic) + Probeless
+#
+use_example_configs delta/generic
+opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER DELTA_AUTO_CALIBRATION DELTA_CALIBRATION_MENU
+exec_test $1 $2 "RAMPS | DELTA | RRD LCD | DELTA_AUTO_CALIBRATION | DELTA_CALIBRATION_MENU" "$3"
+
+#
+# Delta Config (generic) + ABL bilinear + BLTOUCH
+use_example_configs delta/generic
+opt_set LCD_LANGUAGE cz
+opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER DELTA_CALIBRATION_MENU AUTO_BED_LEVELING_BILINEAR BLTOUCH
+exec_test $1 $2 "DELTA | RRD LCD | ABL Bilinear | BLTOUCH" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/mega2560-tests b/buildroot/tests/mega2560-tests
new file mode 100644
index 0000000..aef2b87
--- /dev/null
+++ b/buildroot/tests/mega2560-tests
@@ -0,0 +1,236 @@
+#!/usr/bin/env bash
+#
+# Build tests for AVR ATmega2560
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+#restore_configs
+#exec_test $1 $2 "Default Configuration" "$3"
+
+#
+# Test a probeless build of AUTO_BED_LEVELING_UBL, with lots of extruders
+#
+use_example_configs AnimationExample
+opt_set SHOW_CUSTOM_BOOTSCREEN
+opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
+opt_set LCD_LANGUAGE fr
+opt_set EXTRUDERS 5
+opt_set TEMP_SENSOR_1 1
+opt_set TEMP_SENSOR_2 5
+opt_set TEMP_SENSOR_3 20
+opt_set TEMP_SENSOR_4 1000
+opt_set TEMP_SENSOR_BED 1
+opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 DEBUG_LEVELING_FEATURE G26_MESH_VALIDATION ENABLE_LEVELING_FADE_HEIGHT SKEW_CORRECTION \
+ REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER LIGHTWEIGHT_UI STATUS_MESSAGE_SCROLLING BOOT_MARLIN_LOGO_SMALL \
+ SDSUPPORT SDCARD_SORT_ALPHA USB_FLASH_DRIVE_SUPPORT AUTO_REPORT_SD_STATUS SCROLL_LONG_FILENAMES CANCEL_OBJECTS SOUND_MENU_ITEM \
+ EEPROM_SETTINGS EEPROM_CHITCHAT GCODE_MACROS CUSTOM_USER_MENUS \
+ MULTI_NOZZLE_DUPLICATION CLASSIC_JERK LIN_ADVANCE EXTRA_LIN_ADVANCE_K QUICK_HOME \
+ LCD_SET_PROGRESS_MANUALLY PRINT_PROGRESS_SHOW_DECIMALS SHOW_REMAINING_TIME \
+ BABYSTEPPING BABYSTEP_XY NANODLP_Z_SYNC I2C_POSITION_ENCODERS M114_DETAIL
+exec_test $1 $2 "Azteeg X3 Pro | EXTRUDERS 5 | RRDFGSC | UBL | LIN_ADVANCE ..." "$3"
+
+#
+# Add a Sled Z Probe, use UBL Cartesian moves, use Japanese language
+#
+use_example_configs AnimationExample
+opt_set SHOW_CUSTOM_BOOTSCREEN
+opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
+opt_set LCD_LANGUAGE fr
+opt_set EXTRUDERS 5
+opt_set TEMP_SENSOR_1 1
+opt_set TEMP_SENSOR_2 5
+opt_set TEMP_SENSOR_3 20
+opt_set TEMP_SENSOR_4 1000
+opt_set TEMP_SENSOR_BED 1
+opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 DEBUG_LEVELING_FEATURE G26_MESH_VALIDATION ENABLE_LEVELING_FADE_HEIGHT SKEW_CORRECTION \
+ REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER LIGHTWEIGHT_UI STATUS_MESSAGE_SCROLLING BOOT_MARLIN_LOGO_SMALL \
+ SDSUPPORT SDCARD_SORT_ALPHA USB_FLASH_DRIVE_SUPPORT SCROLL_LONG_FILENAMES CANCEL_OBJECTS NO_SD_AUTOSTART \
+ EEPROM_SETTINGS EEPROM_CHITCHAT GCODE_MACROS CUSTOM_USER_MENUS \
+ MULTI_NOZZLE_DUPLICATION CLASSIC_JERK LIN_ADVANCE QUICK_HOME \
+ LCD_SET_PROGRESS_MANUALLY PRINT_PROGRESS_SHOW_DECIMALS SHOW_REMAINING_TIME \
+ BABYSTEPPING BABYSTEP_XY NANODLP_Z_SYNC I2C_POSITION_ENCODERS M114_DETAIL \
+ Z_PROBE_SLED SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE
+opt_set LCD_LANGUAGE jp_kana
+opt_disable SEGMENT_LEVELED_MOVES
+opt_enable BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET DOUBLECLICK_FOR_Z_BABYSTEPPING BABYSTEP_HOTEND_Z_OFFSET BABYSTEP_DISPLAY_TOTAL M114_DETAIL
+exec_test $1 $2 "Azteeg X3 Pro | EXTRUDERS 5 | RRDFGSC | UBL | LIN_ADVANCE | Sled Probe | Skew | JP-Kana | Babystep offsets ..." "$3"
+
+
+#
+# 5 runout sensors with distinct states
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
+opt_set EXTRUDERS 5
+opt_set NUM_SERVOS 1
+opt_set TEMP_SENSOR_1 1
+opt_set TEMP_SENSOR_2 1
+opt_set TEMP_SENSOR_3 1
+opt_set TEMP_SENSOR_4 1
+opt_enable VIKI2 BOOT_MARLIN_LOGO_ANIMATED SDSUPPORT AUTO_REPORT_SD_STATUS \
+ Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE \
+ EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL \
+ NO_VOLUMETRICS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES AUTOTEMP G38_PROBE_TARGET JOYSTICK \
+ DIRECT_STEPPING DETECT_BROKEN_ENDSTOP \
+ FILAMENT_RUNOUT_SENSOR NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE Z_SAFE_HOMING FIL_RUNOUT3_PULLUP
+opt_set NUM_RUNOUT_SENSORS 5
+opt_set FIL_RUNOUT2_PIN 44
+opt_set FIL_RUNOUT3_PIN 45
+opt_set FIL_RUNOUT3_STATE HIGH
+opt_set FIL_RUNOUT4_PIN 46
+opt_set FIL_RUNOUT5_PIN 47
+exec_test $1 $2 "Multiple runout sensors (x5) | Distinct runout states" "$3"
+
+
+#
+# Mixing Extruder with 5 steppers, Greek
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
+opt_set LCD_LANGUAGE el_gr
+opt_enable MIXING_EXTRUDER GRADIENT_MIX GRADIENT_VTOOL CR10_STOCKDISPLAY \
+ USE_CONTROLLER_FAN CONTROLLER_FAN_EDITABLE CONTROLLER_FAN_IGNORE_Z
+opt_set MIXING_STEPPERS 5
+opt_set LCD_LANGUAGE ru
+exec_test $1 $2 "Azteeg X3 | Mixing Extruder (x5) | Gradient Mix | Greek" "$3"
+
+#
+# Test SPEAKER with BOARD_BQ_ZUM_MEGA_3D and BQ_LCD_SMART_CONTROLLER
+#
+#restore_configs
+#opt_set MOTHERBOARD BOARD_BQ_ZUM_MEGA_3D
+#opt_set LCD_FEEDBACK_FREQUENCY_DURATION_MS 10
+#opt_set LCD_FEEDBACK_FREQUENCY_HZ 100
+#opt_enable BQ_LCD_SMART_CONTROLLER SPEAKER
+
+#
+# Enable COREXY
+#
+#restore_configs
+#opt_enable COREXY
+#exec_test $1 $2 "Stuff" "$3"
+
+######## Other Standard LCD/Panels ##############
+#
+# ULTRA_LCD
+#
+#restore_configs
+#opt_enable ULTRA_LCD
+#exec_test $1 $2 "Stuff" "$3"
+#
+# DOGLCD
+#
+#restore_configs
+#opt_enable DOGLCD
+#exec_test $1 $2 "Stuff" "$3"
+#
+# MAKRPANEL
+# Needs to use Melzi and Sanguino hardware
+#
+#restore_configs
+#opt_enable MAKRPANEL
+#exec_test $1 $2 "Stuff" "$3"
+#
+# REPRAP_DISCOUNT_SMART_CONTROLLER, SDSUPPORT, BABYSTEPPING, RIGIDBOARD_V2, and DAC_MOTOR_CURRENT_DEFAULT
+#
+#restore_configs
+#opt_set MOTHERBOARD BOARD_RIGIDBOARD_V2
+#opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT BABYSTEPPING DAC_MOTOR_CURRENT_DEFAULT
+#exec_test $1 $2 "Stuff" "$3"
+# #
+# G3D_PANEL with SDCARD_SORT_ALPHA and STATUS_MESSAGE_SCROLLING
+#
+#restore_configs
+#opt_enable G3D_PANEL SDSUPPORT SDCARD_SORT_ALPHA STATUS_MESSAGE_SCROLLING SCROLL_LONG_FILENAMES
+#opt_set SDSORT_GCODE true
+#opt_set SDSORT_USES_RAM true
+#opt_set SDSORT_USES_STACK true
+#opt_set SDSORT_CACHE_NAMES true
+#exec_test $1 $2 "Stuff" "$3"
+#
+# REPRAPWORLD_KEYPAD
+#
+# Cant find configuration details to get it to compile
+#restore_configs
+#opt_enable ULTRA_LCD REPRAPWORLD_KEYPAD REPRAPWORLD_KEYPAD_MOVE_STEP
+#exec_test $1 $2 "Stuff" "$3"
+#
+# RA_CONTROL_PANEL
+#
+#restore_configs
+#opt_enable RA_CONTROL_PANEL PINS_DEBUGGING
+#exec_test $1 $2 "Stuff" "$3"
+
+######## I2C LCD/PANELS ##############
+#
+# !!!ATTENTION!!!
+# Most I2C configurations are failing at the moment because they require
+# a different Liquid Crystal library "LiquidTWI2".
+#
+# LCD_SAINSMART_I2C_1602
+#
+#restore_configs
+#opt_enable LCD_SAINSMART_I2C_1602
+#exec_test $1 $2 "Stuff" "$3"
+#
+# LCD_I2C_PANELOLU2
+#
+#restore_configs
+#opt_enable LCD_I2C_PANELOLU2
+#exec_test $1 $2 "Stuff" "$3"
+#
+# LCD_I2C_VIKI
+#
+#restore_configs
+#opt_enable LCD_I2C_VIKI
+#exec_test $1 $2 "Stuff" "$3"
+#
+# LCM1602
+#
+#restore_configs
+#opt_enable LCM1602
+#exec_test $1 $2 "Stuff" "$3"
+
+#
+# Language files test with REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
+#
+#restore_configs
+#opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT
+#for lang in an bg ca cz da de el el_gr en es eu fi fr gl hr hu it jp_kana nl pl pt pt_br ro ru sk sv tr uk vi zh_CN zh_TW test; do opt_set LCD_LANGUAGE $lang; echo "compile with language $lang ..."; exec_test $1 $2 "Stuff" "$3"; done
+#
+#restore_configs
+#opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT
+#for lang in an bg ca cz da de el el_gr en es eu fi fr gl hr hu it jp_kana nl pl pt pt_br ro ru sk sv tr uk vi zh_CN zh_TW test; do opt_set LCD_LANGUAGE $lang; echo "compile with language $lang ..."; exec_test $1 $2 "Stuff" "$3"; done
+
+######## Example Configurations ##############
+#
+# Test a basic DUAL_X_CARRIAGE configuration
+#
+use_example_configs Formbot/T_Rex_3
+exec_test $1 $2 "Formbot/T_Rex_3 example configuration." "$3"
+
+#
+# BQ Hephestos 2
+#restore_configs
+#use_example_configs BQ/Hephestos_2
+#exec_test $1 $2 "Stuff" "$3"
+
+#
+# Makibox Config need to check board type for Teensy++ 2.0
+#
+#use_example_configs makibox
+#exec_test $1 $2 "Stuff" "$3"
+
+#
+# tvrrug Config need to check board type for sanguino atmega644p
+#
+#use_example_configs tvrrug/Round2
+#exec_test $1 $2 "Stuff" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/mks_robin-tests b/buildroot/tests/mks_robin-tests
new file mode 100644
index 0000000..652147f
--- /dev/null
+++ b/buildroot/tests/mks_robin-tests
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+#
+# Build tests for MKS Robin
+# (STM32F1 genericSTM32F103ZE)
+#
+
+# exit on first failure
+set -e
+
+use_example_configs Mks/Robin
+exec_test $1 $2 "MKS Robin config (FSMC Color UI)" "$3"
+
+#
+# MKS Robin LVGL FSMC
+#
+use_example_configs Mks/Robin
+opt_disable TFT_CLASSIC_UI TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240
+opt_enable TFT_LVGL_UI TFT_RES_480x320
+exec_test $1 $2 "MKS Robin nano v1.2 LVGL FSMC" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/mks_robin_lite-tests b/buildroot/tests/mks_robin_lite-tests
new file mode 100644
index 0000000..c4be4f2
--- /dev/null
+++ b/buildroot/tests/mks_robin_lite-tests
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F1 genericSTM32F103RC
+#
+
+# exit on first failure
+set -e
+
+restore_configs
+opt_set MOTHERBOARD BOARD_MKS_ROBIN_LITE
+opt_set SERIAL_PORT 1
+opt_enable EEPROM_SETTINGS
+opt_enable SDSUPPORT
+exec_test $1 $2 "Default Configuration with Fallback SD EEPROM" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/mks_robin_mini-tests b/buildroot/tests/mks_robin_mini-tests
new file mode 100644
index 0000000..6675634
--- /dev/null
+++ b/buildroot/tests/mks_robin_mini-tests
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+#
+# Build tests for MKS Robin mini
+# (STM32F1 genericSTM32F103VE)
+#
+
+# exit on first failure
+set -e
+
+use_example_configs Mks/Robin
+opt_set MOTHERBOARD BOARD_MKS_ROBIN_MINI
+opt_set EXTRUDERS 1
+opt_set TEMP_SENSOR_1 0
+exec_test $1 $2 "MKS Robin mini" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/mks_robin_nano35-tests b/buildroot/tests/mks_robin_nano35-tests
new file mode 100644
index 0000000..6e2f9f1
--- /dev/null
+++ b/buildroot/tests/mks_robin_nano35-tests
@@ -0,0 +1,69 @@
+#!/usr/bin/env bash
+#
+# Build tests for MKS Robin nano
+# (STM32F1 genericSTM32F103VE)
+#
+
+# exit on first failure
+set -e
+
+#
+# MKS Robin nano v1.2 Emulated DOGM FSMC
+#
+use_example_configs Mks/Robin
+opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO
+exec_test $1 $2 "MKS Robin nano v1.2 Emulated DOGM FSMC" "$3"
+
+#
+# MKS Robin v2 nano Emulated DOGM SPI
+# (Robin v2 nano has no FSMC interface)
+#
+use_example_configs Mks/Robin
+opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
+opt_disable TFT_INTERFACE_FSMC
+opt_enable TFT_INTERFACE_SPI
+exec_test $1 $2 "MKS Robin v2 nano Emulated DOGM SPI" "$3"
+
+#
+# MKS Robin v2 nano LVGL SPI
+# (Robin v2 nano has no FSMC interface)
+#
+use_example_configs Mks/Robin
+opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
+opt_disable TFT_INTERFACE_FSMC TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240 SERIAL_PORT_2
+opt_enable TFT_INTERFACE_SPI TFT_LVGL_UI TFT_RES_480x320 MKS_WIFI_MODULE
+exec_test $1 $2 "MKS Robin v2 nano LVGL SPI w/ WiFi" "$3"
+
+#
+# MKS Robin v2 nano New Color UI 480x320 SPI
+# (Robin v2 nano has no FSMC interface)
+#
+use_example_configs Mks/Robin
+opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
+opt_disable TFT_INTERFACE_FSMC TFT_RES_320x240
+opt_enable TFT_INTERFACE_SPI TFT_RES_480x320
+exec_test $1 $2 "MKS Robin v2 nano New Color UI 480x320 SPI" "$3"
+
+#
+# MKS Robin v2 nano LVGL SPI + TMC
+# (Robin v2 nano has no FSMC interface)
+#
+use_example_configs Mks/Robin
+opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
+opt_disable TFT_INTERFACE_FSMC TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240
+opt_enable TFT_INTERFACE_SPI TFT_LVGL_UI TFT_RES_480x320
+opt_set X_DRIVER_TYPE TMC2209
+opt_set Y_DRIVER_TYPE TMC2209
+exec_test $1 $2 "MKS Robin v2 nano LVGL SPI + TMC" "$3"
+
+#
+# MKS Robin v2 nano New Color UI 480x320 SPI Without Touch Screen
+#
+use_example_configs Mks/Robin
+opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
+opt_disable TFT_INTERFACE_FSMC TFT_RES_320x240 TOUCH_SCREEN
+opt_enable TFT_INTERFACE_SPI TFT_RES_480x320 TFT_COLOR_UI
+exec_test $1 $2 "MKS Robin v2 nano New Color UI 480x320 SPI without TOUCH_SCREEN" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/mks_robin_nano35_stm32-tests b/buildroot/tests/mks_robin_nano35_stm32-tests
new file mode 100644
index 0000000..696fb94
--- /dev/null
+++ b/buildroot/tests/mks_robin_nano35_stm32-tests
@@ -0,0 +1,69 @@
+#!/usr/bin/env bash
+#
+# Build tests for MKS Robin nano
+# (STM32F1 genericSTM32F103VE)
+#
+
+# exit on first failure
+set -e
+
+#
+# MKS Robin nano v1.2 Emulated DOGM FSMC
+#
+use_example_configs Mks/Robin
+opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO
+exec_test $1 $2 "MKS Robin nano v1.2 Emulated DOGM FSMC" "$3"
+
+#
+# MKS Robin v2 nano Emulated DOGM SPI
+# (Robin v2 nano has no FSMC interface)
+#
+use_example_configs Mks/Robin
+opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
+opt_disable TFT_INTERFACE_FSMC
+opt_enable TFT_INTERFACE_SPI
+exec_test $1 $2 "MKS Robin v2 nano Emulated DOGM SPI" "$3"
+
+#
+# MKS Robin nano v1.2 LVGL FSMC
+#
+# use_example_configs Mks/Robin
+# opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO
+# opt_disable TFT_CLASSIC_UI TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240
+# opt_enable TFT_LVGL_UI TFT_RES_480x320
+# exec_test $1 $2 "MKS Robin nano v1.2 LVGL FSMC" "$3"
+
+#
+# MKS Robin v2 nano LVGL SPI
+# (Robin v2 nano has no FSMC interface)
+#
+# use_example_configs Mks/Robin
+# opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
+# opt_disable TFT_INTERFACE_FSMC TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240
+# opt_enable TFT_INTERFACE_SPI TFT_LVGL_UI TFT_RES_480x320
+# exec_test $1 $2 "MKS Robin v2 nano LVGL SPI" "$3"
+
+#
+# MKS Robin v2 nano New Color UI 480x320 SPI
+# (Robin v2 nano has no FSMC interface)
+#
+use_example_configs Mks/Robin
+opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
+opt_disable TFT_INTERFACE_FSMC TFT_RES_320x240
+opt_enable TFT_INTERFACE_SPI TFT_RES_480x320
+exec_test $1 $2 "MKS Robin v2 nano New Color UI 480x320 SPI" "$3"
+
+#
+# MKS Robin v2 nano LVGL SPI + TMC
+# (Robin v2 nano has no FSMC interface)
+#
+# use_example_configs Mks/Robin
+# opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
+# opt_disable TFT_INTERFACE_FSMC TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240
+# opt_enable TFT_INTERFACE_SPI TFT_LVGL_UI TFT_RES_480x320
+# opt_set X_DRIVER_TYPE TMC2209
+# opt_set Y_DRIVER_TYPE TMC2209
+# exec_test $1 $2 "MKS Robin v2 nano LVGL SPI + TMC" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/mks_robin_pro-tests b/buildroot/tests/mks_robin_pro-tests
new file mode 100644
index 0000000..3503d0c
--- /dev/null
+++ b/buildroot/tests/mks_robin_pro-tests
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+#
+# Build tests for MKS Robin Pro
+#
+
+# exit on first failure
+set -e
+
+use_example_configs Mks/Robin_Pro
+opt_enable EMERGENCY_PARSER
+opt_set SERIAL_PORT 3
+opt_disable SERIAL_PORT_2
+opt_set SDCARD_CONNECTION LCD
+opt_set X_DRIVER_TYPE TMC2209
+opt_set Y_DRIVER_TYPE TMC2130
+opt_set TEMP_SENSOR_BED 1
+opt_disable THERMAL_PROTECTION_HOTENDS
+exec_test $1 $2 "MKS Robin Pro, TMC Drivers, no thermal protection" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/mks_robin_stm32-tests b/buildroot/tests/mks_robin_stm32-tests
new file mode 100644
index 0000000..e250dce
--- /dev/null
+++ b/buildroot/tests/mks_robin_stm32-tests
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+#
+# Build tests for MKS Robin (HAL/STM32)
+#
+
+# exit on first failure
+set -e
+
+use_example_configs Mks/Robin
+exec_test $1 $2 "MKS Robin base configuration" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/rambo-tests b/buildroot/tests/rambo-tests
new file mode 100644
index 0000000..d471f42
--- /dev/null
+++ b/buildroot/tests/rambo-tests
@@ -0,0 +1,133 @@
+#!/usr/bin/env bash
+#
+# Build tests for AVR ATmega2560 RAMBo
+#
+
+# exit on first failure
+set -e
+
+#
+# Lots of options - Formerly the first Mega2560 test
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_RAMBO
+opt_set EXTRUDERS 2
+opt_set TEMP_SENSOR_0 -2
+opt_set TEMP_SENSOR_1 1
+opt_set TEMP_SENSOR_BED 2
+opt_set TEMP_SENSOR_PROBE 1
+opt_add TEMP_PROBE_PIN 12
+opt_set TEMP_SENSOR_CHAMBER 3
+opt_add TEMP_CHAMBER_PIN 3
+opt_add HEATER_CHAMBER_PIN 45
+opt_set GRID_MAX_POINTS_X 16
+opt_set FANMUX0_PIN 53
+opt_disable USE_WATCHDOG
+opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER LCD_PROGRESS_BAR LCD_PROGRESS_BAR_TEST \
+ FIX_MOUNTED_PROBE Z_SAFE_HOMING CODEPENDENT_XY_HOMING PIDTEMPBED PROBE_TEMP_COMPENSATION \
+ PREHEAT_BEFORE_PROBING PROBING_HEATERS_OFF PROBING_FANS_OFF PROBING_STEPPERS_OFF WAIT_FOR_BED_HEATER \
+ EEPROM_SETTINGS SDSUPPORT SD_REPRINT_LAST_SELECTED_FILE BINARY_FILE_TRANSFER \
+ BLINKM PCA9533 PCA9632 RGB_LED RGB_LED_R_PIN RGB_LED_G_PIN RGB_LED_B_PIN LED_CONTROL_MENU \
+ NEOPIXEL_LED CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CASE_LIGHT_MENU \
+ PID_PARAMS_PER_HOTEND PID_AUTOTUNE_MENU PID_EDIT_MENU LCD_SHOW_E_TOTAL \
+ PRINTCOUNTER SERVICE_NAME_1 SERVICE_INTERVAL_1 LEVEL_BED_CORNERS LEVEL_CENTER_TOO \
+ NOZZLE_PARK_FEATURE FILAMENT_RUNOUT_SENSOR FILAMENT_RUNOUT_DISTANCE_MM \
+ ADVANCED_PAUSE_FEATURE FILAMENT_LOAD_UNLOAD_GCODES FILAMENT_UNLOAD_ALL_EXTRUDERS \
+ PASSWORD_FEATURE PASSWORD_ON_STARTUP PASSWORD_ON_SD_PRINT_MENU PASSWORD_AFTER_SD_PRINT_END PASSWORD_AFTER_SD_PRINT_ABORT \
+ AUTO_BED_LEVELING_BILINEAR Z_MIN_PROBE_REPEATABILITY_TEST DISTINCT_E_FACTORS \
+ SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE \
+ BACKLASH_COMPENSATION BACKLASH_GCODE BAUD_RATE_GCODE BEZIER_CURVE_SUPPORT \
+ FWRETRACT ARC_P_CIRCLES CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS \
+ PSU_CONTROL AUTO_POWER_CONTROL POWER_LOSS_RECOVERY POWER_LOSS_PIN POWER_LOSS_STATE \
+ SLOW_PWM_HEATERS THERMAL_PROTECTION_CHAMBER LIN_ADVANCE EXTRA_LIN_ADVANCE_K \
+ HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT PINS_DEBUGGING MAX7219_DEBUG M114_DETAIL
+opt_add DEBUG_POWER_LOSS_RECOVERY
+exec_test $1 $2 "RAMBO | EXTRUDERS 2 | CHAR LCD + SD | FIX Probe | ABL-Linear | Advanced Pause | PLR | LEDs ..." "$3"
+
+#
+# Full size Rambo Dual Endstop CNC
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_RAMBO
+opt_set EXTRUDERS 0
+opt_set TEMP_SENSOR_0 999
+opt_set DUMMY_THERMISTOR_999_VALUE 170
+opt_set DIGIPOT_MOTOR_CURRENT '{ 120, 120, 120, 120, 120 }'
+opt_set LEVEL_CORNERS_LEVELING_ORDER '{ LF, RF }'
+opt_enable USE_XMAX_PLUG USE_YMAX_PLUG USE_ZMAX_PLUG \
+ REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER REVERSE_ENCODER_DIRECTION SDSUPPORT EEPROM_SETTINGS \
+ S_CURVE_ACCELERATION X_DUAL_STEPPER_DRIVERS X_DUAL_ENDSTOPS Y_DUAL_STEPPER_DRIVERS Y_DUAL_ENDSTOPS \
+ ADAPTIVE_STEP_SMOOTHING CNC_COORDINATE_SYSTEMS GCODE_MOTION_MODES \
+ LEVEL_BED_CORNERS LEVEL_CENTER_TOO
+opt_disable MIN_SOFTWARE_ENDSTOP_Z MAX_SOFTWARE_ENDSTOPS
+exec_test $1 $2 "Rambo CNC Configuration" "$3"
+
+#
+# Rambo heated bed only
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_RAMBO
+opt_set EXTRUDERS 0
+opt_set TEMP_SENSOR_BED 1
+opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
+exec_test $1 $2 "Rambo heated bed only" "$3"
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_EINSY_RAMBO
+opt_set X_DRIVER_TYPE TMC2130
+opt_set Y_DRIVER_TYPE TMC2130
+opt_set Z_DRIVER_TYPE TMC2130
+opt_set E0_DRIVER_TYPE TMC2130
+exec_test $1 $2 "Einsy RAMBo with TMC2130" "$3"
+
+#
+# Test MINIRAMBO with PWM_MOTOR_CURRENT and many features
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_MINIRAMBO
+opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER \
+ SDSUPPORT PCA9632 SOUND_MENU_ITEM GCODE_REPEAT_MARKERS \
+ AUTO_BED_LEVELING_BILINEAR PROBE_MANUALLY LCD_BED_LEVELING G26_MESH_VALIDATION MESH_EDIT_MENU \
+ LIN_ADVANCE EXTRA_LIN_ADVANCE_K \
+ INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT EXPERIMENTAL_I2CBUS M100_FREE_MEMORY_WATCHER \
+ NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE \
+ ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE ADVANCED_PAUSE_CONTINUOUS_PURGE FILAMENT_LOAD_UNLOAD_GCODES \
+ PRINTCOUNTER SERVICE_NAME_1 SERVICE_INTERVAL_1 M114_DETAIL
+opt_set CONTROLLERFAN_SPEED_IDLE 128
+opt_add M100_FREE_MEMORY_DUMPER
+opt_add M100_FREE_MEMORY_CORRUPTOR
+opt_set PWM_MOTOR_CURRENT "{ 1300, 1300, 1250 }"
+opt_set I2C_SLAVE_ADDRESS 63
+exec_test $1 $2 "MINIRAMBO | RRDGFSC | M100 | PWM_MOTOR_CURRENT | PRINTCOUNTER | Advanced Pause ..." "$3"
+
+#
+# Test many less common options
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_RAMBO
+opt_set TEMP_SENSOR_0 -2
+opt_set DIGIPOT_I2C_NUM_CHANNELS 5
+opt_set LCD_LANGUAGE it
+opt_set MIXING_STEPPERS 2
+opt_set SERVO_DELAY "{ 300, 300, 300 }"
+opt_enable COREYX USE_XMAX_PLUG MIXING_EXTRUDER GRADIENT_MIX \
+ BABYSTEPPING BABYSTEP_DISPLAY_TOTAL FILAMENT_LCD_DISPLAY \
+ REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER MENU_ADDAUTOSTART SDSUPPORT SDCARD_SORT_ALPHA \
+ ENDSTOP_NOISE_THRESHOLD FAN_SOFT_PWM \
+ FIX_MOUNTED_PROBE AUTO_BED_LEVELING_LINEAR DEBUG_LEVELING_FEATURE FILAMENT_WIDTH_SENSOR PROBE_OFFSET_WIZARD \
+ Z_SAFE_HOMING SHOW_TEMP_ADC_VALUES HOME_Y_BEFORE_X EMERGENCY_PARSER \
+ SD_ABORT_ON_ENDSTOP_HIT HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT ADVANCED_OK M114_DETAIL \
+ VOLUMETRIC_DEFAULT_ON NO_WORKSPACE_OFFSETS EXTRA_FAN_SPEED FWRETRACT \
+ USE_CONTROLLER_FAN CONTROLLER_FAN_EDITABLE CONTROLLER_FAN_USE_Z_ONLY
+opt_set CONTROLLER_FAN_PIN X_MAX_PIN
+opt_set FAN_MIN_PWM 50
+opt_set FAN_KICKSTART_TIME 100
+opt_set XY_FREQUENCY_LIMIT 15
+opt_add FILWIDTH_PIN 5
+exec_test $1 $2 "Rambo | CoreXY, Gradient Mix | Endstop Int. | Home Y > X | FW Retract ..." "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/rumba32-tests b/buildroot/tests/rumba32-tests
new file mode 100644
index 0000000..20a640e
--- /dev/null
+++ b/buildroot/tests/rumba32-tests
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+#
+# Build tests for rumba32
+#
+
+# exit on first failure
+set -e
+
+# Build examples
+restore_configs
+opt_set MOTHERBOARD BOARD_RUMBA32_V1_0
+opt_set SERIAL_PORT -1
+opt_disable PIDTEMP
+opt_enable PIDTEMPBED
+opt_set TEMP_SENSOR_BED 1
+opt_disable THERMAL_PROTECTION_BED
+opt_set X_DRIVER_TYPE TMC2130
+exec_test $1 $2 "RUMBA32 V1.0 with TMC2130, PID Bed, and bed thermal protection disabled" "$3"
+
+# Build examples
+restore_configs
+opt_set MOTHERBOARD BOARD_RUMBA32_V1_1
+opt_set SERIAL_PORT -1
+opt_enable PIDTEMPBED EEPROM_SETTINGS EEPROM_CHITCHAT REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
+opt_set TEMP_SENSOR_BED 1
+opt_set X_DRIVER_TYPE TMC2130
+opt_set Y_DRIVER_TYPE TMC2208
+exec_test $1 $2 "RUMBA32 V1.1 with TMC2130, TMC2208, PID Bed, EEPROM settings, and graphic LCD controller" "$3"
+
+# Build examples
+restore_configs
+opt_set MOTHERBOARD BOARD_RUMBA32_MKS
+opt_set SERIAL_PORT -1
+opt_set X_DRIVER_TYPE TMC2130
+opt_set Y_DRIVER_TYPE TMC2208
+exec_test $1 $2 "RUMBA32 MKS Default Config with Mixed TMC Drivers" "$3"
+
+# cleanup
+restore_configs
diff --git a/buildroot/tests/run_tests b/buildroot/tests/run_tests
new file mode 100644
index 0000000..c4286f4
--- /dev/null
+++ b/buildroot/tests/run_tests
@@ -0,0 +1,77 @@
+#!/usr/bin/env bash
+#
+# run_tests
+#
+export PATH="$PATH:$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )"
+export PATH="$PATH:./buildroot/bin"
+
+# exit on first failure
+set -e
+
+exec_test () {
+ printf "\n\033[0;32m[Test $2] \033[0m$3...\n"
+ # Check to see if we should skip tests
+ if [[ -n "$4" ]] ; then
+ if [[ ! "$3" =~ $4 ]] ; then
+ printf "\033[1;33mSkipped\033[0m\n"
+ return 0
+ fi
+ fi
+ if [[ -z "$VERBOSE_PLATFORMIO" ]] ; then
+ silent="--silent"
+ else
+ silent="-v"
+ fi
+ if platformio run --project-dir $1 -e $2 $silent; then
+ printf "\033[0;32mPassed\033[0m\n"
+ return 0
+ else
+ if [[ -n $GIT_RESET_HARD ]]; then
+ git reset --hard HEAD
+ else
+ restore_configs
+ fi
+ printf "\033[0;31mFailed!\033[0m\n"
+ return 1
+ fi
+}
+export -f exec_test
+
+printf "Running \033[0;32m$2\033[0m Tests\n"
+
+if [[ $2 = "ALL" ]]; then
+ dir_list=("$(dirname "${BASH_SOURCE[0]}")"/*)
+ declare -a tests=(${dir_list[@]/*run_tests/})
+ for f in "${tests[@]}"; do
+ testenv=$(basename $f | cut -d"-" -f1)
+ printf "Running \033[0;32m$f\033[0m Tests\n"
+ exec_test $1 "$testenv --target clean" "Setup Build Environment"
+ if [[ $GIT_RESET_HARD == "true" ]]; then
+ git reset --hard HEAD
+ else
+ restore_configs
+ fi
+ done
+else
+ exec_test $1 "$2 --target clean" "Setup Build Environment"
+ test_name="$3"
+ # If the test name is 1 or 2 digits, treat it as an index
+ if [[ "$test_name" =~ ^[0-9][0-9]?$ ]] ; then
+ # Find the test name that corresponds to that index
+ test_name="$(cat buildroot/tests/$2-tests | grep -e '^exec_test' | sed -n "$3p" | sed "s/.*\$1 \$2 \"\([^\"]*\).*/\1/g")"
+ if [[ -z "$test_name" ]] ; then
+ # Fail if none matches
+ printf "\033[0;31mCould not find test \033[0m#$3\033[0;31m in \033[0mbuildroot/tests/$2-tests\n"
+ exit 1
+ else
+ printf "\033[0;32mMatching test \033[0m#$3\033[0;32m: '\033[0m$test_name\033[0;32m'\n"
+ fi
+ fi
+ $2-tests $1 $2 "$test_name"
+ if [[ $GIT_RESET_HARD == "true" ]]; then
+ git reset --hard HEAD
+ else
+ restore_configs
+ fi
+fi
+printf "\033[0;32mAll tests completed successfully\033[0m\n"
diff --git a/buildroot/tests/sanguino1284p-tests b/buildroot/tests/sanguino1284p-tests
new file mode 100644
index 0000000..55cdf41
--- /dev/null
+++ b/buildroot/tests/sanguino1284p-tests
@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+#
+# Build tests for AVR ATmega 1284p
+#
+
+# exit on first failure
+set -e
+
+#
+# Start with default configurations...
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_SANGUINOLOLU_12
+opt_set LCD_LANGUAGE de
+opt_enable MINIPANEL USE_CONTROLLER_FAN CONTROLLER_FAN_EDITABLE
+opt_set CONTROLLER_FAN_PIN 27
+exec_test $1 $2 "Default Configuration | MINIPANAL | CONTROLLER_FAN" "$3"
+
+#
+# Start with default configurations...
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_MELZI
+opt_enable ZONESTAR_LCD
+exec_test $1 $2 "Default Configuration | ZONESTAR_LCD " "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/sanguino644p-tests b/buildroot/tests/sanguino644p-tests
new file mode 100644
index 0000000..12910a7
--- /dev/null
+++ b/buildroot/tests/sanguino644p-tests
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+#
+# Build tests for AVR ATmega 644p
+#
+
+# exit on first failure
+set -e
+
+#
+# Build with the default configurations
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_SANGUINOLOLU_12
+exec_test $1 $2 "Default Configuration" "$3"
+
+# clean up
+restore_configs
diff --git a/buildroot/tests/teensy31-tests b/buildroot/tests/teensy31-tests
new file mode 100644
index 0000000..448a886
--- /dev/null
+++ b/buildroot/tests/teensy31-tests
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+#
+# Build tests for Teensy 3.1/3.2 (ARM Cortex-M4)
+#
+
+# exit on first failure
+set -e
+
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY31_32
+exec_test $1 $2 "Teensy3.1 with default config" "$3"
+
+#
+# Test many features together
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY31_32
+opt_set TEMP_SENSOR_0 1
+opt_set TEMP_SENSOR_BED 1
+opt_enable EEPROM_SETTINGS FILAMENT_WIDTH_SENSOR CALIBRATION_GCODE BAUD_RATE_GCODE \
+ FIX_MOUNTED_PROBE Z_SAFE_HOMING AUTO_BED_LEVELING_BILINEAR DEBUG_LEVELING_FEATURE Z_MIN_PROBE_REPEATABILITY_TEST \
+ BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET PRINTCOUNTER SLOW_PWM_HEATERS PIDTEMPBED \
+ INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT M100_FREE_MEMORY_WATCHER \
+ NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE PARK_HEAD_ON_PAUSE \
+ ARC_SUPPORT BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES \
+ PHOTO_GCODE PHOTO_POSITION PHOTO_SWITCH_POSITION PHOTO_SWITCH_MS PHOTO_DELAY_MS PHOTO_RETRACT_MM \
+ HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT
+opt_set I2C_SLAVE_ADDRESS 63
+opt_set GRID_MAX_POINTS_X 16
+exec_test $1 $2 "Teensy3.1 with many features" "$3"
diff --git a/buildroot/tests/teensy35-tests b/buildroot/tests/teensy35-tests
new file mode 100644
index 0000000..79998a2
--- /dev/null
+++ b/buildroot/tests/teensy35-tests
@@ -0,0 +1,122 @@
+#!/usr/bin/env bash
+#
+# Build tests for Teensy 3.5/3.6 (ARM Cortex-M4)
+#
+
+# exit on first failure
+set -e
+
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY35_36
+exec_test $1 $2 "Teensy3.5 with default config" "$3"
+
+#
+# Test as many features together as possible
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY35_36
+opt_set EXTRUDERS 2
+opt_set TEMP_SENSOR_0 1
+opt_set TEMP_SENSOR_1 5
+opt_set TEMP_SENSOR_BED 1
+opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER LCD_INFO_MENU SDSUPPORT SDCARD_SORT_ALPHA \
+ FILAMENT_WIDTH_SENSOR FILAMENT_LCD_DISPLAY CALIBRATION_GCODE BAUD_RATE_GCODE SOUND_MENU_ITEM \
+ FIX_MOUNTED_PROBE Z_SAFE_HOMING AUTO_BED_LEVELING_BILINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \
+ BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET BABYSTEP_ZPROBE_GFX_OVERLAY \
+ PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE SLOW_PWM_HEATERS PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT M100_FREE_MEMORY_WATCHER \
+ ADVANCED_PAUSE_FEATURE ARC_SUPPORT BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES PARK_HEAD_ON_PAUSE \
+ PHOTO_GCODE PHOTO_POSITION PHOTO_SWITCH_POSITION PHOTO_SWITCH_MS PHOTO_DELAY_MS PHOTO_RETRACT_MM \
+ HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT
+opt_set I2C_SLAVE_ADDRESS 63
+opt_set GRID_MAX_POINTS_X 16
+exec_test $1 $2 "Teensy3.5 with many features" "$3"
+
+#
+# Test a Sled Z Probe with Linear leveling
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY35_36
+opt_enable EEPROM_SETTINGS Z_PROBE_SLED Z_SAFE_HOMING AUTO_BED_LEVELING_LINEAR DEBUG_LEVELING_FEATURE GCODE_MACROS
+exec_test $1 $2 "Sled Z Probe with Linear leveling" "$3"
+
+#
+# Test a Servo Probe
+#
+# restore_configs
+# opt_set MOTHERBOARD BOARD_TEENSY35_36
+# opt_enable Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE \
+# AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS
+# opt_set NUM_SERVOS 1
+# exec_test $1 $2 "Servo Probe"
+#
+# ...with AUTO_BED_LEVELING_3POINT, DEBUG_LEVELING_FEATURE, EEPROM_SETTINGS, EEPROM_CHITCHAT, EXTENDED_CAPABILITIES_REPORT, and AUTO_REPORT_TEMPERATURES
+#
+# opt_enable AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS \
+# EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES
+# exec_test $1 $2 "...with AUTO_BED_LEVELING_3POINT, DEBUG_LEVELING_FEATURE, EEPROM_SETTINGS, EEPROM_CHITCHAT, EXTENDED_CAPABILITIES_REPORT, and AUTO_REPORT_TEMPERATURES"
+
+#
+# Test MAGNETIC_PARKING_EXTRUDER with LCD
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY35_36
+opt_set EXTRUDERS 2
+opt_set TEMP_SENSOR_1 1
+opt_enable MAGNETIC_PARKING_EXTRUDER ULTIMAKERCONTROLLER
+exec_test $1 $2 "MAGNETIC_PARKING_EXTRUDER with LCD" "$3"
+
+#
+# Mixing Extruder
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY35_36
+opt_enable MIXING_EXTRUDER DIRECT_MIXING_IN_G1 GRADIENT_MIX GRADIENT_VTOOL REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
+opt_set MIXING_STEPPERS 2
+exec_test $1 $2 "Mixing Extruder" "$3"
+
+#
+# Test SWITCHING_EXTRUDER
+#
+# restore_configs
+# opt_set MOTHERBOARD BOARD_TEENSY35_36
+# opt_set EXTRUDERS 2
+# opt_set NUM_SERVOS 1
+# opt_enable SWITCHING_EXTRUDER ULTIMAKERCONTROLLER
+# exec_test $1 $2 "SWITCHING_EXTRUDER"
+
+#
+# Enable COREXY
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY35_36
+opt_enable COREXY
+opt_set X_DRIVER_TYPE TMC5160
+opt_set Y_DRIVER_TYPE TMC5160
+opt_set X_MIN_ENDSTOP_INVERTING true
+opt_set Y_MIN_ENDSTOP_INVERTING true
+opt_add X_CS_PIN 46
+opt_add Y_CS_PIN 47
+opt_enable USE_ZMIN_PLUG MONITOR_DRIVER_STATUS SENSORLESS_HOMING
+exec_test $1 $2 "Teensy 3.5/3.6 COREXY" "$3"
+
+#
+# Enable COREXZ
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY35_36
+opt_enable COREXZ
+exec_test $1 $2 "Teensy 3.5/3.6 COREXZ" "$3"
+
+#
+# Enable Dual Z with Dual Z endstops
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY35_36
+opt_set NUM_Z_STEPPER_DRIVERS 2
+opt_enable Z_MULTI_ENDSTOPS USE_XMAX_PLUG
+pins_set ramps/RAMPS X_MAX_PIN -1
+opt_add Z2_MAX_PIN 2
+exec_test $1 $2 "Dual Z with Dual Z endstops" "$3"
+
+# Clean up
+restore_configs
diff --git a/buildroot/tests/teensy41-tests b/buildroot/tests/teensy41-tests
new file mode 100644
index 0000000..6829045
--- /dev/null
+++ b/buildroot/tests/teensy41-tests
@@ -0,0 +1,124 @@
+#!/usr/bin/env bash
+#
+# Build tests for Teensy 4.0/4.1 (ARM Cortex-M7)
+#
+
+# exit on first failure
+set -e
+
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY41
+exec_test $1 $2 "Teensy4.1 with default config" "$3"
+
+#
+# Test as many features together as possible
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY41
+opt_set EXTRUDERS 2
+opt_set TEMP_SENSOR_0 1
+opt_set TEMP_SENSOR_1 5
+opt_set TEMP_SENSOR_BED 1
+opt_enable EXTENSIBLE_UI LCD_INFO_MENU SDSUPPORT SDCARD_SORT_ALPHA \
+ FILAMENT_LCD_DISPLAY CALIBRATION_GCODE BAUD_RATE_GCODE \
+ FIX_MOUNTED_PROBE Z_SAFE_HOMING AUTO_BED_LEVELING_BILINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \
+ BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET \
+ PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE SLOW_PWM_HEATERS PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT \
+ ADVANCED_PAUSE_FEATURE ARC_SUPPORT BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES PARK_HEAD_ON_PAUSE \
+ PHOTO_GCODE PHOTO_POSITION PHOTO_SWITCH_POSITION PHOTO_SWITCH_MS PHOTO_DELAY_MS PHOTO_RETRACT_MM \
+ HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT
+opt_add EXTUI_EXAMPLE
+opt_set I2C_SLAVE_ADDRESS 63
+opt_set GRID_MAX_POINTS_X 16
+exec_test $1 $2 "Teensy4.1 with many features" "$3"
+
+#
+# Test a Sled Z Probe with Linear leveling
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY41
+opt_enable EEPROM_SETTINGS Z_PROBE_SLED Z_SAFE_HOMING AUTO_BED_LEVELING_LINEAR DEBUG_LEVELING_FEATURE GCODE_MACROS
+exec_test $1 $2 "Sled Z Probe with Linear leveling" "$3"
+
+#
+# Test a Servo Probe
+#
+# restore_configs
+# opt_set MOTHERBOARD BOARD_TEENSY41
+# opt_enable Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE \
+# AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS
+# opt_set NUM_SERVOS 1
+# exec_test $1 $2 "Servo Probe" "$3"
+#
+# ...with AUTO_BED_LEVELING_3POINT, DEBUG_LEVELING_FEATURE, EEPROM_SETTINGS, EEPROM_CHITCHAT, EXTENDED_CAPABILITIES_REPORT, and AUTO_REPORT_TEMPERATURES
+#
+# opt_enable AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS \
+# EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES
+# exec_test $1 $2 "...with AUTO_BED_LEVELING_3POINT, DEBUG_LEVELING_FEATURE, EEPROM_SETTINGS, EEPROM_CHITCHAT, EXTENDED_CAPABILITIES_REPORT, and AUTO_REPORT_TEMPERATURES" "$3"
+
+#
+# Test MAGNETIC_PARKING_EXTRUDER with no LCD
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY41
+opt_set EXTRUDERS 2
+opt_set TEMP_SENSOR_1 1
+opt_set SERIAL_PORT_2 -2
+opt_enable EEPROM_SETTINGS MAGNETIC_PARKING_EXTRUDER
+exec_test $1 $2 "Ethernet, EEPROM, Magnetic Parking Extruder, No LCD" "$3"
+
+#
+# Mixing Extruder
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY41
+opt_enable MIXING_EXTRUDER DIRECT_MIXING_IN_G1 GRADIENT_MIX GRADIENT_VTOOL
+opt_set MIXING_STEPPERS 2
+exec_test $1 $2 "Mixing Extruder" "$3"
+
+#
+# Test SWITCHING_EXTRUDER
+#
+# restore_configs
+# opt_set MOTHERBOARD BOARD_TEENSY41
+# opt_set EXTRUDERS 2
+# opt_set NUM_SERVOS 1
+# opt_enable SWITCHING_EXTRUDER ULTIMAKERCONTROLLER
+# exec_test $1 $2 "SWITCHING_EXTRUDER" "$3"
+
+#
+# Enable COREXY
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY41
+opt_enable COREXY
+opt_set X_DRIVER_TYPE TMC5160
+opt_set Y_DRIVER_TYPE TMC5160
+opt_set X_MIN_ENDSTOP_INVERTING true
+opt_set Y_MIN_ENDSTOP_INVERTING true
+opt_add X_CS_PIN 46
+opt_add Y_CS_PIN 47
+opt_enable USE_ZMIN_PLUG MONITOR_DRIVER_STATUS SENSORLESS_HOMING
+exec_test $1 $2 "Teensy 4.0/4.1 COREXY" "$3"
+
+#
+# Enable COREXZ
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY41
+opt_enable COREXZ
+exec_test $1 $2 "Teensy 4.0/4.1 COREXZ" "$3"
+
+#
+# Enable Dual Z with Dual Z endstops
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_TEENSY41
+opt_enable Z_MULTI_ENDSTOPS USE_XMAX_PLUG
+opt_set NUM_Z_STEPPER_DRIVERS 2
+pins_set ramps/RAMPS X_MAX_PIN -1
+opt_add Z2_MAX_PIN 2
+exec_test $1 $2 "Dual Z with Dual Z endstops" "$3"
+
+# Clean up
+restore_configs