2023-03-29 04:23:27 +00:00
SCRIPTS_DIR := buildroot/share/scripts
CONTAINER_RT_BIN := docker
CONTAINER_RT_OPTS := --rm -v $( PWD) :/code -v platformio-cache:/root/.platformio
CONTAINER_IMAGE := marlin-dev
2020-11-18 02:04:28 +00:00
help :
@echo "Tasks for local development:"
2023-12-15 23:37:36 +00:00
@echo " * format-pins: Reformat all pins files
2020-11-18 02:04:28 +00:00
@echo "* tests-single-ci: Run a single test from inside the CI"
@echo "* tests-single-local: Run a single test locally"
2023-03-29 04:23:27 +00:00
@echo "* tests-single-local-docker: Run a single test locally, using docker"
2020-11-18 02:04:28 +00:00
@echo "* tests-all-local: Run all tests locally"
2023-03-29 04:23:27 +00:00
@echo "* tests-all-local-docker: Run all tests locally, using docker"
@echo "* setup-local-docker: Build the local docker image"
2020-11-18 02:04:28 +00:00
@echo ""
@echo "Options for testing:"
@echo " TEST_TARGET Set when running tests-single-*, to select the"
@echo " test. If you set it to ALL it will run all "
@echo " tests, but some of them are broken: use "
@echo " tests-all-* instead to run only the ones that "
@echo " run on GitHub CI"
@echo " ONLY_TEST Limit tests to only those that contain this, or"
@echo " the index of the test (1-based)"
@echo " VERBOSE_PLATFORMIO If you want the full PIO output, set any value"
@echo " GIT_RESET_HARD Used by CI: reset all local changes. WARNING:"
@echo " THIS WILL UNDO ANY CHANGES YOU'VE MADE!"
.PHONY : help
tests-single-ci :
export GIT_RESET_HARD = true
2023-12-15 23:37:36 +00:00
$( MAKE) tests-single-local TEST_TARGET = $( TEST_TARGET) PLATFORMIO_BUILD_FLAGS = -DGITHUB_ACTION
2020-11-18 02:04:28 +00:00
.PHONY : tests -single -ci
tests-single-local :
@if ! test -n " $( TEST_TARGET) " ; then echo "***ERROR*** Set TEST_TARGET=<your-module> or use make tests-all-local" ; return 1; fi
2022-10-14 23:59:31 +00:00
export PATH = " ./buildroot/bin/:./buildroot/tests/: ${ PATH } " \
2020-11-18 02:04:28 +00:00
&& export VERBOSE_PLATFORMIO = $( VERBOSE_PLATFORMIO) \
&& run_tests . $( TEST_TARGET) " $( ONLY_TEST) "
.PHONY : tests -single -local
tests-single-local-docker :
@if ! test -n " $( TEST_TARGET) " ; then echo "***ERROR*** Set TEST_TARGET=<your-module> or use make tests-all-local-docker" ; return 1; fi
2023-03-29 04:23:27 +00:00
@if ! $( CONTAINER_RT_BIN) images -q $( CONTAINER_IMAGE) > /dev/null ; then $( MAKE) setup-local-docker ; fi
$( CONTAINER_RT_BIN) run $( CONTAINER_RT_OPTS) $( CONTAINER_IMAGE) $( MAKE) tests-single-local TEST_TARGET = $( TEST_TARGET) VERBOSE_PLATFORMIO = $( VERBOSE_PLATFORMIO) GIT_RESET_HARD = $( GIT_RESET_HARD) ONLY_TEST = " $( ONLY_TEST) "
2020-11-18 02:04:28 +00:00
.PHONY : tests -single -local -docker
tests-all-local :
2022-10-14 23:59:31 +00:00
export PATH = " ./buildroot/bin/:./buildroot/tests/: ${ PATH } " \
2020-11-18 02:04:28 +00:00
&& export VERBOSE_PLATFORMIO = $( VERBOSE_PLATFORMIO) \
2023-03-29 04:23:27 +00:00
&& for TEST_TARGET in $$ ( $( SCRIPTS_DIR) /get_test_targets.py) ; do echo " Running tests for $$ TEST_TARGET " ; run_tests . $$ TEST_TARGET ; done
2020-11-18 02:04:28 +00:00
.PHONY : tests -all -local
tests-all-local-docker :
2023-03-29 04:23:27 +00:00
@if ! $( CONTAINER_RT_BIN) images -q $( CONTAINER_IMAGE) > /dev/null ; then $( MAKE) setup-local-docker ; fi
$( CONTAINER_RT_BIN) run $( CONTAINER_RT_OPTS) $( CONTAINER_IMAGE) $( MAKE) tests-all-local VERBOSE_PLATFORMIO = $( VERBOSE_PLATFORMIO) GIT_RESET_HARD = $( GIT_RESET_HARD)
2020-11-18 02:04:28 +00:00
.PHONY : tests -all -local -docker
setup-local-docker :
2023-03-29 04:23:27 +00:00
$( CONTAINER_RT_BIN) build -t $( CONTAINER_IMAGE) -f docker/Dockerfile .
2020-11-18 02:04:28 +00:00
.PHONY : setup -local -docker
2023-12-15 23:37:36 +00:00
PINS := $( shell find Marlin/src/pins -mindepth 2 -name '*.h' )
.PHONY : $( PINS )
$(PINS) : %:
@echo " Formatting $@ " && node buildroot/share/scripts/pinsformat.js $@
format-pins : $( PINS )