Browse Source

Update Travis Tests to run platforms in parallel (#11256)

Chris Pepper 6 years ago
parent
commit
c43793aa1e

+ 8 - 439
.travis.yml

@@ -16,7 +16,11 @@ cache:
   - "~/.platformio"
 
 env:
-  - TEST_PLATFORM="-e megaatmega2560"
+  - TEST_PLATFORM="megaatmega2560"
+  - TEST_PLATFORM="LPC1768"
+  - TEST_PLATFORM="DUE"
+  - TEST_PLATFORM="STM32F1"
+  - TEST_PLATFORM="teensy35"
 
 before_install:
   #
@@ -26,6 +30,8 @@ before_install:
   # Publish the buildroot script folder
   - chmod +x ${TRAVIS_BUILD_DIR}/buildroot/bin/*
   - export PATH=${TRAVIS_BUILD_DIR}/buildroot/bin/:${PATH}
+  - chmod +x ${TRAVIS_BUILD_DIR}/buildroot/share/tests/*
+  - export PATH=${TRAVIS_BUILD_DIR}/buildroot/share/tests/:${PATH}
 
 install:
   #- pip install -U platformio
@@ -43,441 +49,4 @@ before_script:
   - cat ${TRAVIS_BUILD_DIR}/Marlin/src/inc/_Version.h
   #
 script:
-  #
-  # Backup pins_RAMPS.h
-  #
-  - cp Marlin/src/pins/pins_RAMPS.h Marlin/src/pins/pins_RAMPS.h.backup
-  #
-  # Build with the default configurations
-  #
-  - restore_configs
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Test 2 extruders (one MAX6675) and heated bed on basic RAMPS 1.4
-  # Test a "Fix Mounted" Probe with Safe Homing, some arc options,
-  # linear bed leveling, M48, leveling debug, and firmware retraction.
-  #
-  - opt_set MOTHERBOARD BOARD_RAMPS_14_EEB
-  - opt_set EXTRUDERS 2
-  - opt_set TEMP_SENSOR_0 -2
-  - opt_set TEMP_SENSOR_1 1
-  - opt_set TEMP_SENSOR_BED 1
-  - opt_set POWER_SUPPLY 1
-  - opt_enable PIDTEMPBED FIX_MOUNTED_PROBE Z_SAFE_HOMING
-  - opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT EEPROM_SETTINGS PINS_DEBUGGING
-  - opt_enable BLINKM PCA9632 RGB_LED NEOPIXEL_LED AUTO_POWER_CONTROL NOZZLE_PARK_FEATURE FILAMENT_RUNOUT_SENSOR
-  - opt_enable AUTO_BED_LEVELING_LINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE
-  - opt_enable_adv ARC_P_CIRCLES ADVANCED_PAUSE_FEATURE CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS POWER_LOSS_RECOVERY
-  - opt_enable_adv FWRETRACT MAX7219_DEBUG LED_CONTROL_MENU CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CODEPENDENT_XY_HOMING
-  - opt_set GRID_MAX_POINTS_X 16
-  - opt_set_adv FANMUX0_PIN 53
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Test a probeless build of AUTO_BED_LEVELING_UBL, with lots of extruders
-  #
-  - restore_configs
-  - opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
-  - 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 999
-  - opt_set TEMP_SENSOR_BED 1
-  - opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 DEBUG_LEVELING_FEATURE G26_MESH_EDITING ENABLE_LEVELING_FADE_HEIGHT SKEW_CORRECTION
-  - opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT
-  - opt_enable_adv SDCARD_SORT_ALPHA STATUS_MESSAGE_SCROLLING SCROLL_LONG_FILENAMES LIGHTWEIGHT_UI
-  - opt_enable_adv CUSTOM_USER_MENUS I2C_POSITION_ENCODERS BABYSTEPPING BABYSTEP_XY LIN_ADVANCE NANODLP_Z_SYNC QUICK_HOME JUNCTION_DEVIATION
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Add a Sled Z Probe, use UBL Cartesian moves, use Japanese language
-  #
-  - opt_enable 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_adv BABYSTEP_ZPROBE_OFFSET DOUBLECLICK_FOR_Z_BABYSTEPPING
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Test a Servo Probe
-  # ...with AUTO_BED_LEVELING_3POINT, DEBUG_LEVELING_FEATURE, EEPROM_SETTINGS, EEPROM_CHITCHAT, EXTENDED_CAPABILITIES_REPORT, and AUTO_REPORT_TEMPERATURES
-  #
-  - restore_configs
-  - opt_enable NUM_SERVOS Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE
-  - opt_set NUM_SERVOS 1
-  - opt_enable AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS EEPROM_CHITCHAT
-  - opt_enable_adv NO_VOLUMETRICS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES AUTOTEMP G38_PROBE_TARGET
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Test MESH_BED_LEVELING feature, with LCD
-  #
-  - restore_configs
-  - opt_enable MESH_BED_LEVELING G26_MESH_EDITING MESH_G28_REST_ORIGIN LCD_BED_LEVELING ULTIMAKERCONTROLLER
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Test MINIRAMBO for PWM_MOTOR_CURRENT
-  #      PROBE_MANUALLY feature, with LCD support,
-  #      ULTIMAKERCONTROLLER, FILAMENT_LCD_DISPLAY, FILAMENT_WIDTH_SENSOR,
-  #      PRINTCOUNTER, NOZZLE_PARK_FEATURE, NOZZLE_CLEAN_FEATURE, PCA9632,
-  #      Z_DUAL_ENDSTOPS, BEZIER_CURVE_SUPPORT, EXPERIMENTAL_I2CBUS,
-  #      ADVANCED_PAUSE_FEATURE, ADVANCED_PAUSE_CONTINUOUS_PURGE, PARK_HEAD_ON_PAUSE, LCD_INFO_MENU,
-  #      EEPROM_SETTINGS, EEPROM_CHITCHAT, M100_FREE_MEMORY_WATCHER,
-  #      INCH_MODE_SUPPORT, TEMPERATURE_UNITS_SUPPORT
-  #
-  - restore_configs
-  - opt_set MOTHERBOARD BOARD_MINIRAMBO
-  - opt_enable PROBE_MANUALLY AUTO_BED_LEVELING_BILINEAR G26_MESH_EDITING LCD_BED_LEVELING ULTIMAKERCONTROLLER
-  - opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT M100_FREE_MEMORY_WATCHER M100_FREE_MEMORY_DUMPER M100_FREE_MEMORY_CORRUPTOR INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT
-  - opt_enable ULTIMAKERCONTROLLER SDSUPPORT
-  - opt_enable PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE PCA9632
-  - opt_enable_adv BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS
-  - opt_enable_adv ADVANCED_PAUSE_FEATURE ADVANCED_PAUSE_CONTINUOUS_PURGE FILAMENT_LOAD_UNLOAD_GCODES PARK_HEAD_ON_PAUSE LCD_INFO_MENU M114_DETAIL
-  - opt_set_adv PWM_MOTOR_CURRENT {1300,1300,1250}
-  - opt_set_adv I2C_SLAVE_ADDRESS 63
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Mixing Extruder with 5 steppers, Cyrillic
-  #
-  - restore_configs
-  - opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
-  - opt_enable MIXING_EXTRUDER CR10_STOCKDISPLAY
-  - opt_set MIXING_STEPPERS 5
-  - opt_set LCD_LANGUAGE ru
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Test DUAL_X_CARRIAGE
-  #
-  - restore_configs
-  - opt_set MOTHERBOARD BOARD_RUMBA
-  - opt_set EXTRUDERS 2
-  - opt_set TEMP_SENSOR_1 1
-  - opt_enable USE_XMAX_PLUG
-  - opt_enable_adv DUAL_X_CARRIAGE
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # 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
-  #
-  # Test SWITCHING_EXTRUDER
-  #
-  - restore_configs
-  - opt_set MOTHERBOARD BOARD_RUMBA
-  - opt_set EXTRUDERS 2
-  - opt_enable NUM_SERVOS
-  - opt_set NUM_SERVOS 1
-  - opt_enable SWITCHING_EXTRUDER ULTIMAKERCONTROLLER
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Enable COREXY
-  #
-  #- restore_configs
-  #- opt_enable COREXY
-  #- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Test many less common options
-  #
-  - restore_configs
-  - opt_enable COREYX
-  - opt_set_adv FAN_MIN_PWM 50
-  - opt_set_adv FAN_KICKSTART_TIME 100
-  - opt_set_adv XY_FREQUENCY_LIMIT  15
-  - opt_enable_adv SHOW_TEMP_ADC_VALUES HOME_Y_BEFORE_X EMERGENCY_PARSER FAN_KICKSTART_TIME
-  - opt_enable_adv ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED ADVANCED_OK
-  - opt_enable_adv VOLUMETRIC_DEFAULT_ON NO_WORKSPACE_OFFSETS ACTION_ON_KILL
-  - opt_enable_adv EXTRA_FAN_SPEED FWERETRACT Z_DUAL_STEPPER_DRIVERS Z_DUAL_ENDSTOPS
-  - opt_enable_adv MENU_ADDAUTOSTART SDCARD_SORT_ALPHA
-  - opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER BABYSTEPPING DAC_MOTOR_CURRENT_DEFAULT
-  - opt_enable FILAMENT_LCD_DISPLAY FILAMENT_WIDTH_SENSOR
-  - opt_enable ENDSTOP_INTERRUPTS_FEATURE FAN_SOFT_PWM SDSUPPORT
-  - opt_enable USE_XMAX_PLUG
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  ######## Other Standard LCD/Panels ##############
-  #
-  # ULTRA_LCD
-  #
-  #- restore_configs
-  #- opt_enable ULTRA_LCD
-  #- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # DOGLCD
-  #
-  #- restore_configs
-  #- opt_enable DOGLCD
-  #- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # MAKRPANEL
-  # Needs to use Melzi and Sanguino hardware
-  #
-  #- restore_configs
-  #- opt_enable MAKRPANEL
-  #- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # 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
-  #- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  # #
-  # G3D_PANEL with SDCARD_SORT_ALPHA and STATUS_MESSAGE_SCROLLING
-  #
-  #- restore_configs
-  #- opt_enable G3D_PANEL SDSUPPORT
-  #- opt_enable_adv SDCARD_SORT_ALPHA STATUS_MESSAGE_SCROLLING SCROLL_LONG_FILENAMES
-  #- opt_set_adv SDSORT_GCODE true
-  #- opt_set_adv SDSORT_USES_RAM true
-  #- opt_set_adv SDSORT_USES_STACK true
-  #- opt_set_adv SDSORT_CACHE_NAMES true
-  #- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Test a full-featured CR-10S config
-  #
-  - use_example_configs Creality/CR-10S
-  - opt_enable SHOW_CUSTOM_BOOTSCREEN
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # REPRAPWORLD_KEYPAD
-  #
-  # Cant find configuration details to get it to compile
-  #- restore_configs
-  #- opt_enable ULTRA_LCD REPRAPWORLD_KEYPAD REPRAPWORLD_KEYPAD_MOVE_STEP
-  #- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # RA_CONTROL_PANEL
-  #
-  #- restore_configs
-  #- opt_enable RA_CONTROL_PANEL PINS_DEBUGGING
-  #- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  ######## 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
-  #- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # LCD_I2C_PANELOLU2
-  #
-  #- restore_configs
-  #- opt_enable LCD_I2C_PANELOLU2
-  #- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # LCD_I2C_VIKI
-  #
-  #- restore_configs
-  #- opt_enable LCD_I2C_VIKI
-  #- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # LCM1602
-  #
-  #- restore_configs
-  #- opt_enable LCM1602
-  #- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # 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 zh_CN zh_TW cz da de el el-gr en es eu fi fr gl hr it jp-kana nl pl pt pt-br ru sk tr uk test; do opt_set LCD_LANGUAGE $lang; echo "compile with language $lang ..."; build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}; done
-  #
-  #- restore_configs
-  #- opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT
-  #- for lang in an bg ca zh_CN zh_TW cz da de el el-gr en es eu fi fr gl hr it jp-kana nl pl pt pt-br ru sk tr uk test; do opt_set LCD_LANGUAGE $lang; echo "compile with language $lang ..."; build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}; done
-  #
-  #
-  ######## Example Configurations ##############
-  #
-  # BQ Hephestos 2
-  #- restore_configs
-  #- use_example_configs Hephestos_2
-  #- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Delta Config (generic) + ABL bilinear + PROBE_MANUALLY
-  - use_example_configs delta/generic
-  - opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER DELTA_CALIBRATION_MENU AUTO_BED_LEVELING_BILINEAR PROBE_MANUALLY
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Delta Config (generic) + UBL + ALLEN_KEY + OLED_PANEL_TINYBOY2 + EEPROM_SETTINGS
-  #
-  - use_example_configs delta/generic
-  - opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 Z_PROBE_ALLEN_KEY EEPROM_SETTINGS EEPROM_CHITCHAT
-  - opt_enable OLED_PANEL_TINYBOY2 MESH_EDIT_GFX_OVERLAY
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Delta Config (FLSUN AC because it's complex)
-  #
-  - use_example_configs delta/FLSUN/auto_calibrate
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Makibox Config  need to check board type for Teensy++ 2.0
-  #
-  #- use_example_configs makibox
-  #- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # SCARA with TMC2130
-  #
-  - use_example_configs SCARA
-  - opt_enable AUTO_BED_LEVELING_BILINEAR FIX_MOUNTED_PROBE USE_ZMIN_PLUG EEPROM_SETTINGS EEPROM_CHITCHAT ULTIMAKERCONTROLLER
-  - opt_enable_adv HAVE_TMC2130 X_IS_TMC2130 Y_IS_TMC2130 Z_IS_TMC2130
-  - opt_enable_adv MONITOR_DRIVER_STATUS STEALTHCHOP HYBRID_THRESHOLD SENSORLESS_HOMING
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # TMC2208 Config
-  #
-  - restore_configs
-  - opt_enable_adv HAVE_TMC2208 X_IS_TMC2208 Y_IS_TMC2208 Z_IS_TMC2208
-  - opt_enable_adv MONITOR_DRIVER_STATUS STEALTHCHOP HYBRID_THRESHOLD TMC_DEBUG
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # tvrrug Config need to check board type for sanguino atmega644p
-  #
-  #- use_example_configs tvrrug/Round2
-  #- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  #
-  ######## Board Types #############
-  #
-  # To be added in nightly test branch
-  #
-
-  - export TEST_PLATFORM="-e teensy35"
-  - restore_configs
-  - opt_set MOTHERBOARD BOARD_TEENSY35_36
-  - update_defaults
-  - cp Marlin/src/pins/pins_RAMPS.h Marlin/src/pins/pins_RAMPS.h.backup
-  #
-  # Test Teensy3.5 with default config
-  #
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Test as many features together as possible
-  #
-  - restore_configs
-  - 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 SDSUPPORT
-  - opt_enable FILAMENT_WIDTH_SENSOR FILAMENT_LCD_DISPLAY
-  - opt_enable FIX_MOUNTED_PROBE Z_SAFE_HOMING AUTO_BED_LEVELING_BILINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE
-  - opt_enable BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET BABYSTEP_ZPROBE_GFX_OVERLAY
-  - opt_enable PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE SLOW_PWM_HEATERS PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT M100_FREE_MEMORY_WATCHER
-  - opt_enable_adv ADVANCED_PAUSE_FEATURE LCD_INFO_MENU ARC_SUPPORT BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES SDCARD_SORT_ALPHA PARK_HEAD_ON_PAUSE
-  - opt_set_adv I2C_SLAVE_ADDRESS 63
-  - opt_set GRID_MAX_POINTS_X 16
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Test a Sled Z Probe with Linear leveling
-  #
-  - restore_configs
-  - opt_enable Z_PROBE_SLED
-  - opt_enable AUTO_BED_LEVELING_LINEAR DEBUG_LEVELING_FEATURE EEPROM_SETTINGS
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Test a Servo Probe
-  #
-  - restore_configs
-  - opt_enable NUM_SERVOS Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE
-  - opt_set NUM_SERVOS 1
-  - opt_enable AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # ...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
-  - opt_enable_adv EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Test MESH_BED_LEVELING feature, with LCD
-  #
-  - restore_configs
-  - opt_enable MESH_BED_LEVELING MESH_G28_REST_ORIGIN MANUAL_BED_LEVELING ULTIMAKERCONTROLLER
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Mixing Extruder
-  #
-  - restore_configs
-  - opt_enable MIXING_EXTRUDER DIRECT_MIXING_IN_G1
-  - opt_set MIXING_STEPPERS 2
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Test SWITCHING_EXTRUDER
-  #
-  - restore_configs
-  - opt_set EXTRUDERS 2
-  - opt_enable NUM_SERVOS
-  - opt_set NUM_SERVOS 1
-  - opt_enable SWITCHING_EXTRUDER ULTIMAKERCONTROLLER
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Enable COREXY
-  #
-  - restore_configs
-  - opt_enable COREXY
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Enable COREXZ
-  #
-  - restore_configs
-  - opt_enable COREXZ
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Enable Z_DUAL_STEPPER_DRIVERS, Z_DUAL_ENDSTOPS
-  #
-  - restore_configs
-  - opt_enable_adv Z_DUAL_STEPPER_DRIVERS Z_DUAL_ENDSTOPS
-  - pins_set RAMPS X_MAX_PIN -1
-  - opt_add_adv Z2_MAX_PIN 2
-  - opt_enable USE_XMAX_PLUG
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-
-  #############################
-  # DUE default config test
-  #############################
-
-  - export TEST_PLATFORM="-e DUE"
-  - restore_configs
-  - opt_set MOTHERBOARD BOARD_RAMPS4DUE_EFB
-  - opt_enable S_CURVE_ACCELERATION
-  - opt_set E0_AUTO_FAN_PIN 8
-  - opt_set EXTRUDER_AUTO_FAN_SPEED 100
-  - update_defaults
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-
-  #############################
-  # LPC1768 default config test
-  #############################
-
-  - export TEST_PLATFORM="-e LPC1768"
-  - restore_configs
-  - opt_set MOTHERBOARD BOARD_RAMPS_14_RE_ARM_EFB
-  - update_defaults
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-  #
-  # Enable VIKI2, SDSUPPORT
-  #
-  - restore_configs
-  - opt_set MOTHERBOARD BOARD_RAMPS_14_RE_ARM_EFB
-  - update_defaults
-  - opt_enable VIKI2 SDSUPPORT
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
-
-  #############################
-  # STM32F1 config test
-  #############################
-
-  - export TEST_PLATFORM="-e STM32F1"
-  - restore_configs
-  - opt_set MOTHERBOARD BOARD_STM32F1R
-  - update_defaults
-  - opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT
-  - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
+  - start_tests ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}

+ 24 - 0
buildroot/bin/env_backup

@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+
+if [ ! -z "$1" ]; then
+    cd $1
+fi
+
+if [ -d ".test" ]; then
+  printf "\033[0;31mEnvironment backup already exists!\033[0m\n"
+else
+  mkdir .test
+  cp Marlin/Configuration.h .test/Configuration.h
+  cp Marlin/Configuration_adv.h .test/Configuration_adv.h
+
+  if [ -f Marlin/_Bootscreen.h ]; then
+    cp Marlin/_Bootscreen.h .test/_Bootscreen.h
+  fi
+
+  if [ -f Marlin/_Statusscreen.h ]; then
+    cp Marlin/_Statusscreen.h .test/_Statusscreen.h
+  fi
+
+  cp -r Marlin/src/pins .test/pins
+  printf "\033[0;32mEnvironment Backup created\033[0m\n"
+fi

+ 29 - 0
buildroot/bin/env_clean

@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+if [ -d ".pioenvs" ]; then
+  rm -r .pioenvs
+fi
+
+if [ -d ".piolibdeps" ]; then
+  rm -r .piolibdeps
+fi
+
+if [ -d ".piolib" ]; then
+  rm -r .piolib
+fi
+
+if [ ! -z "$1" ]; then
+  if [ $1 = "--deep" ]; then
+    if [ -d "~/.platformio/packages" ]; then
+      rm -r ~/.platformio/packages/*
+    fi
+
+    if [ -d "~/.platformio/platforms" ]; then
+      rm -r ~/.platformio/platforms/*
+    fi
+
+    if [ -d "~/.platformio/.cache" ]; then
+      rm -r ~/.platformio/.cache/*
+    fi
+  fi
+fi

+ 30 - 0
buildroot/bin/env_restore

@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+
+if [ ! -z "$1" ]; then
+    cd $1
+fi
+
+if [ -d ".test" ]; then
+  cp .test/Configuration.h Marlin/Configuration.h
+  cp .test/Configuration_adv.h Marlin/Configuration_adv.h
+  rm .test/Configuration.h
+  rm .test/Configuration_adv.h
+
+  if [ -f .test/_Bootscreen.h ]; then
+    cp .test/_Bootscreen.h Marlin/_Bootscreen.h
+    rm .test/_Bootscreen.h
+  fi
+
+  if [ -f .test/_Statusscreen.h ]; then
+    cp .test/_Statusscreen.h Marlin/_Statusscreen.h
+    rm .test/_Statusscreen.h
+  fi
+
+  cp -r .test/pins Marlin/src
+  rm -r .test/pins
+
+  rmdir .test
+  printf "\033[0;32mEnvironment Restored\033[0m\n"
+else
+  printf "\033[0;31mEnvironment Backup not available!\033[0m\n"
+fi

+ 11 - 3
buildroot/bin/restore_configs

@@ -2,8 +2,16 @@
 
 cp Marlin/src/config/default/Configuration.h     Marlin/Configuration.h
 cp Marlin/src/config/default/Configuration_adv.h Marlin/Configuration_adv.h
-cp Marlin/src/pins/pins_RAMPS.h.backup           Marlin/src/pins/pins_RAMPS.h
 
-if [ -f Marlin/src/config/_Bootscreen.h ]; then
-  rm Marlin/src/config/_Bootscreen.h
+if [ -f Marlin/src/pins/pins_RAMPS.h.backup ]; then
+  cp Marlin/src/pins/pins_RAMPS.h.backup Marlin/src/pins/pins_RAMPS.h
+  rm Marlin/src/pins/pins_RAMPS.h.backup
+fi
+
+if [ -f Marlin/_Bootscreen.h ]; then
+  rm Marlin/_Bootscreen.h
+fi
+
+if [ -f Marlin/_Statusscreen.h ]; then
+  rm Marlin/_Statusscreen.h
 fi

+ 11 - 0
buildroot/share/tests/DUE_tests

@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+
+# exit on first failure
+set -e
+
+restore_configs
+opt_set MOTHERBOARD BOARD_RAMPS4DUE_EFB
+opt_enable S_CURVE_ACCELERATION
+opt_set E0_AUTO_FAN_PIN 8
+opt_set EXTRUDER_AUTO_FAN_SPEED 100
+exec_test $1 $2 "RAMPS4DUE_EFB S_CURVE_ACCELERATION"

+ 21 - 0
buildroot/share/tests/LPC1768_tests

@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+
+# exit on first failure
+set -e
+
+restore_configs
+opt_set MOTHERBOARD BOARD_RAMPS_14_RE_ARM_EFB
+exec_test $1 $2 "Build Re-ARM Default Configuration"
+
+restore_configs
+opt_set MOTHERBOARD BOARD_RAMPS_14_RE_ARM_EFB
+opt_enable VIKI2 SDSUPPORT
+exec_test $1 $2 "VIKI2 and SDSUPPORT"
+
+restore_configs
+opt_set MOTHERBOARD BOARD_MKS_SBASE
+opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT
+exec_test $1 $2 "MKS SBASE RRDFG SDSUPPORT"
+
+#clean up
+restore_configs

+ 12 - 0
buildroot/share/tests/STM32F1_tests

@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+
+# exit on first failure
+set -e
+
+restore_configs
+opt_set MOTHERBOARD BOARD_STM32F1R
+opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT
+exec_test $1 $2 "STM32F1R EEPROM_SETTINGS EEPROM_CHITCHAT REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT"
+
+#cleanup
+restore_configs

+ 309 - 0
buildroot/share/tests/megaatmega2560_tests

@@ -0,0 +1,309 @@
+#!/usr/bin/env bash
+
+# exit on first failure
+set -e
+
+#
+# Backup pins_RAMPS.h
+#
+cp Marlin/src/pins/pins_RAMPS.h Marlin/src/pins/pins_RAMPS.h.backup
+#
+# Build with the default configurations
+#
+restore_configs
+exec_test $1 $2 "Default Configuration"
+#
+# Test 2 extruders (one MAX6675) and heated bed on basic RAMPS 1.4
+# Test a "Fix Mounted" Probe with Safe Homing, some arc options,
+# linear bed leveling, M48, leveling debug, and firmware retraction.
+#
+opt_set MOTHERBOARD BOARD_RAMPS_14_EEB
+opt_set EXTRUDERS 2
+opt_set TEMP_SENSOR_0 -2
+opt_set TEMP_SENSOR_1 1
+opt_set TEMP_SENSOR_BED 1
+opt_set POWER_SUPPLY 1
+opt_enable PIDTEMPBED FIX_MOUNTED_PROBE Z_SAFE_HOMING
+opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT EEPROM_SETTINGS PINS_DEBUGGING
+opt_enable BLINKM PCA9632 RGB_LED NEOPIXEL_LED AUTO_POWER_CONTROL NOZZLE_PARK_FEATURE FILAMENT_RUNOUT_SENSOR
+opt_enable AUTO_BED_LEVELING_LINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE
+opt_enable_adv ARC_P_CIRCLES ADVANCED_PAUSE_FEATURE CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS POWER_LOSS_RECOVERY
+opt_enable_adv FWRETRACT MAX7219_DEBUG LED_CONTROL_MENU CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CODEPENDENT_XY_HOMING
+opt_set GRID_MAX_POINTS_X 16
+opt_set_adv FANMUX0_PIN 53
+exec_test $1 $2 "Extruders(2) MAX6675 Fixed Probe etc"
+#
+# Test a probeless build of AUTO_BED_LEVELING_UBL, with lots of extruders
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
+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 999
+opt_set TEMP_SENSOR_BED 1
+opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 DEBUG_LEVELING_FEATURE G26_MESH_EDITING ENABLE_LEVELING_FADE_HEIGHT SKEW_CORRECTION
+opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT
+opt_enable_adv SDCARD_SORT_ALPHA STATUS_MESSAGE_SCROLLING SCROLL_LONG_FILENAMES LIGHTWEIGHT_UI
+opt_enable_adv CUSTOM_USER_MENUS I2C_POSITION_ENCODERS BABYSTEPPING BABYSTEP_XY LIN_ADVANCE NANODLP_Z_SYNC QUICK_HOME JUNCTION_DEVIATION
+exec_test $1 $2 "Probeless build of AUTO_BED_LEVELING_UBL, with lots of extruders"
+#
+# Add a Sled Z Probe, use UBL Cartesian moves, use Japanese language
+#
+opt_enable 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_adv BABYSTEP_ZPROBE_OFFSET DOUBLECLICK_FOR_Z_BABYSTEPPING
+exec_test $1 $2 "Add a Sled Z Probe, use UBL Cartesian moves, use Japanese language"
+#
+# Test a Servo Probe
+# ...with AUTO_BED_LEVELING_3POINT, DEBUG_LEVELING_FEATURE, EEPROM_SETTINGS, EEPROM_CHITCHAT, EXTENDED_CAPABILITIES_REPORT, and AUTO_REPORT_TEMPERATURES
+#
+restore_configs
+opt_enable NUM_SERVOS Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE
+opt_set NUM_SERVOS 1
+opt_enable AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS EEPROM_CHITCHAT
+opt_enable_adv NO_VOLUMETRICS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES AUTOTEMP G38_PROBE_TARGET
+exec_test $1 $2 "Servo Probe with AUTO_BED_LEVELING_3POINT, DEBUG_LEVELING_FEATURE, EEPROM_SETTINGS etc"
+#
+# Test MESH_BED_LEVELING feature, with LCD
+#
+restore_configs
+opt_enable MESH_BED_LEVELING G26_MESH_EDITING MESH_G28_REST_ORIGIN LCD_BED_LEVELING ULTIMAKERCONTROLLER
+exec_test $1 $2 "MESH_BED_LEVELING feature, with LCD"
+#
+# Test MINIRAMBO for PWM_MOTOR_CURRENT
+#      PROBE_MANUALLY feature, with LCD support,
+#      ULTIMAKERCONTROLLER, FILAMENT_LCD_DISPLAY, FILAMENT_WIDTH_SENSOR,
+#      PRINTCOUNTER, NOZZLE_PARK_FEATURE, NOZZLE_CLEAN_FEATURE, PCA9632,
+#      Z_DUAL_ENDSTOPS, BEZIER_CURVE_SUPPORT, EXPERIMENTAL_I2CBUS,
+#      ADVANCED_PAUSE_FEATURE, ADVANCED_PAUSE_CONTINUOUS_PURGE, PARK_HEAD_ON_PAUSE, LCD_INFO_MENU,
+#      EEPROM_SETTINGS, EEPROM_CHITCHAT, M100_FREE_MEMORY_WATCHER,
+#      INCH_MODE_SUPPORT, TEMPERATURE_UNITS_SUPPORT
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_MINIRAMBO
+opt_enable PROBE_MANUALLY AUTO_BED_LEVELING_BILINEAR G26_MESH_EDITING LCD_BED_LEVELING ULTIMAKERCONTROLLER
+opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT M100_FREE_MEMORY_WATCHER M100_FREE_MEMORY_DUMPER M100_FREE_MEMORY_CORRUPTOR INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT
+opt_enable ULTIMAKERCONTROLLER SDSUPPORT
+opt_enable PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE PCA9632
+opt_enable_adv BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS
+opt_enable_adv ADVANCED_PAUSE_FEATURE ADVANCED_PAUSE_CONTINUOUS_PURGE FILAMENT_LOAD_UNLOAD_GCODES PARK_HEAD_ON_PAUSE LCD_INFO_MENU M114_DETAIL
+opt_set_adv PWM_MOTOR_CURRENT {1300,1300,1250}
+opt_set_adv I2C_SLAVE_ADDRESS 63
+exec_test $1 $2 "MINIRAMBO for PWM_MOTOR_CURRENT etc"
+#
+# Mixing Extruder with 5 steppers, Cyrillic
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
+opt_enable MIXING_EXTRUDER CR10_STOCKDISPLAY
+opt_set MIXING_STEPPERS 5
+opt_set LCD_LANGUAGE ru
+exec_test $1 $2 "Mixing Extruder with 5 steppers, Cyrillic"
+#
+# Test DUAL_X_CARRIAGE
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_RUMBA
+opt_set EXTRUDERS 2
+opt_set TEMP_SENSOR_1 1
+opt_enable USE_XMAX_PLUG
+opt_enable_adv DUAL_X_CARRIAGE
+exec_test $1 $2 "DUAL_X_CARRIAGE"
+#
+# 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
+#
+# Test SWITCHING_EXTRUDER
+#
+restore_configs
+opt_set MOTHERBOARD BOARD_RUMBA
+opt_set EXTRUDERS 2
+opt_enable NUM_SERVOS
+opt_set NUM_SERVOS 1
+opt_enable SWITCHING_EXTRUDER ULTIMAKERCONTROLLER
+exec_test $1 $2 "SWITCHING_EXTRUDER"
+#
+# Enable COREXY
+#
+#restore_configs
+#opt_enable COREXY
+#exec_test $1 $2 "Stuff"
+#
+# Test many less common options
+#
+restore_configs
+opt_enable COREYX
+opt_set_adv FAN_MIN_PWM 50
+opt_set_adv FAN_KICKSTART_TIME 100
+opt_set_adv XY_FREQUENCY_LIMIT  15
+opt_enable_adv SHOW_TEMP_ADC_VALUES HOME_Y_BEFORE_X EMERGENCY_PARSER FAN_KICKSTART_TIME
+opt_enable_adv ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED ADVANCED_OK
+opt_enable_adv VOLUMETRIC_DEFAULT_ON NO_WORKSPACE_OFFSETS ACTION_ON_KILL
+opt_enable_adv EXTRA_FAN_SPEED FWERETRACT Z_DUAL_STEPPER_DRIVERS Z_DUAL_ENDSTOPS
+opt_enable_adv MENU_ADDAUTOSTART SDCARD_SORT_ALPHA
+opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER BABYSTEPPING DAC_MOTOR_CURRENT_DEFAULT
+opt_enable FILAMENT_LCD_DISPLAY FILAMENT_WIDTH_SENSOR
+opt_enable ENDSTOP_INTERRUPTS_FEATURE FAN_SOFT_PWM SDSUPPORT
+opt_enable USE_XMAX_PLUG
+exec_test $1 $2 "Many less common options"
+#
+######## Other Standard LCD/Panels ##############
+#
+# ULTRA_LCD
+#
+#restore_configs
+#opt_enable ULTRA_LCD
+#exec_test $1 $2 "Stuff"
+#
+# DOGLCD
+#
+#restore_configs
+#opt_enable DOGLCD
+#exec_test $1 $2 "Stuff"
+#
+# MAKRPANEL
+# Needs to use Melzi and Sanguino hardware
+#
+#restore_configs
+#opt_enable MAKRPANEL
+#exec_test $1 $2 "Stuff"
+#
+# 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"
+# #
+# G3D_PANEL with SDCARD_SORT_ALPHA and STATUS_MESSAGE_SCROLLING
+#
+#restore_configs
+#opt_enable G3D_PANEL SDSUPPORT
+#opt_enable_adv SDCARD_SORT_ALPHA STATUS_MESSAGE_SCROLLING SCROLL_LONG_FILENAMES
+#opt_set_adv SDSORT_GCODE true
+#opt_set_adv SDSORT_USES_RAM true
+#opt_set_adv SDSORT_USES_STACK true
+#opt_set_adv SDSORT_CACHE_NAMES true
+#exec_test $1 $2 "Stuff"
+#
+# Test a full-featured CR-10S config
+#
+use_example_configs Creality/CR-10S
+opt_enable SHOW_CUSTOM_BOOTSCREEN
+exec_test $1 $2 "Full-featured CR-10S config"
+#
+# 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"
+#
+# RA_CONTROL_PANEL
+#
+#restore_configs
+#opt_enable RA_CONTROL_PANEL PINS_DEBUGGING
+#exec_test $1 $2 "Stuff"
+#
+######## 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"
+#
+# LCD_I2C_PANELOLU2
+#
+#restore_configs
+#opt_enable LCD_I2C_PANELOLU2
+#exec_test $1 $2 "Stuff"
+#
+# LCD_I2C_VIKI
+#
+#restore_configs
+#opt_enable LCD_I2C_VIKI
+#exec_test $1 $2 "Stuff"
+#
+# LCM1602
+#
+#restore_configs
+#opt_enable LCM1602
+#exec_test $1 $2 "Stuff"
+#
+# 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 zh_CN zh_TW cz da de el el-gr en es eu fi fr gl hr it jp-kana nl pl pt pt-br ru sk tr uk test; do opt_set LCD_LANGUAGE $lang; echo "compile with language $lang ..."; exec_test $1 $2 "Stuff"; done
+#
+#restore_configs
+#opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT
+#for lang in an bg ca zh_CN zh_TW cz da de el el-gr en es eu fi fr gl hr it jp-kana nl pl pt pt-br ru sk tr uk test; do opt_set LCD_LANGUAGE $lang; echo "compile with language $lang ..."; exec_test $1 $2 "Stuff"; done
+#
+#
+######## Example Configurations ##############
+#
+# BQ Hephestos 2
+#restore_configs
+#use_example_configs Hephestos_2
+#exec_test $1 $2 "Stuff"
+#
+# Delta Config (generic) + ABL bilinear + PROBE_MANUALLY
+use_example_configs delta/generic
+opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER DELTA_CALIBRATION_MENU AUTO_BED_LEVELING_BILINEAR PROBE_MANUALLY
+exec_test $1 $2 "Delta Config (generic) + ABL bilinear + PROBE_MANUALLY"
+#
+# Delta Config (generic) + UBL + ALLEN_KEY + OLED_PANEL_TINYBOY2 + EEPROM_SETTINGS
+#
+use_example_configs delta/generic
+opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 Z_PROBE_ALLEN_KEY EEPROM_SETTINGS EEPROM_CHITCHAT
+opt_enable OLED_PANEL_TINYBOY2 MESH_EDIT_GFX_OVERLAY
+exec_test $1 $2 "Delta Config (generic) + UBL + ALLEN_KEY + OLED_PANEL_TINYBOY2 + EEPROM_SETTINGS"
+#
+# Delta Config (FLSUN AC because it's complex)
+#
+use_example_configs delta/FLSUN/auto_calibrate
+exec_test $1 $2 "Delta Config (FLSUN AC because it's complex)"
+#
+# Makibox Config  need to check board type for Teensy++ 2.0
+#
+#use_example_configs makibox
+#exec_test $1 $2 "Stuff"
+#
+# SCARA with TMC2130
+#
+use_example_configs SCARA
+opt_enable AUTO_BED_LEVELING_BILINEAR FIX_MOUNTED_PROBE USE_ZMIN_PLUG EEPROM_SETTINGS EEPROM_CHITCHAT ULTIMAKERCONTROLLER
+opt_enable_adv HAVE_TMC2130 X_IS_TMC2130 Y_IS_TMC2130 Z_IS_TMC2130
+opt_enable_adv MONITOR_DRIVER_STATUS STEALTHCHOP HYBRID_THRESHOLD SENSORLESS_HOMING
+exec_test $1 $2 "SCARA with TMC2130"
+#
+# TMC2208 Config
+#
+restore_configs
+opt_enable_adv HAVE_TMC2208 X_IS_TMC2208 Y_IS_TMC2208 Z_IS_TMC2208
+opt_enable_adv MONITOR_DRIVER_STATUS STEALTHCHOP HYBRID_THRESHOLD TMC_DEBUG
+exec_test $1 $2 "TMC2208 Config"
+#
+# tvrrug Config need to check board type for sanguino atmega644p
+#
+#use_example_configs tvrrug/Round2
+#exec_test $1 $2 "Stuff"
+#
+#
+
+#clean up
+restore_configs

+ 37 - 0
buildroot/share/tests/start_tests

@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+export PATH="$PATH:$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )"
+export PATH="$PATH:./buildroot/bin"
+
+# exit on first failure
+set -e
+
+exec_test () {
+  printf "\033[0;32m[Test $2] \033[0m$3... "
+  if build_marlin_pio $1 "-e $2"; then
+    printf "\033[0;32mPassed\033[0m\n"
+    return 0
+  else
+    env_restore
+    printf "\033[0;31mFailed!\033[0m\n"
+    return 1
+  fi
+}
+export -f exec_test
+
+env_backup
+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[@]/*start_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"
+    $f $1 $testenv
+  done
+else
+  exec_test $1 "$2 --target clean" "Setup Build Environment"
+  $2_tests $1 $2
+fi
+printf "\033[0;32mAll tests completed successfully\033[0m\n"
+env_restore

Some files were not shown because too many files changed in this diff