2023-04-01 07:16:48 +00:00
SCRIPTS_DIR := buildroot/share/scripts
2023-03-29 04:23:27 +00:00
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:"
2024-01-14 00:30:43 +00:00
@echo "make marlin : Build marlin for the configured board"
@echo "make format-pins : Reformat all pins files"
@echo "make tests-single-ci : Run a single test from inside the CI"
@echo "make tests-single-local : Run a single test locally"
@echo "make tests-single-local-docker : Run a single test locally, using docker"
@echo "make tests-all-local : Run all tests locally"
@echo "make tests-all-local-docker : Run all tests locally, using docker"
2024-04-13 19:06:08 +00:00
# @echo "make unit-test-single-ci : Run a single code test from inside the CI"
# @echo "make unit-test-single-local : Run a single code test locally"
# @echo "make unit-test-single-local-docker : Run a single code test locally, using docker-compose"
@echo "make unit-test-all-local : Run all code tests locally"
@echo "make unit-test-all-local-docker : Run all code tests locally, using docker-compose"
@echo "make setup-local-docker : Setup local docker-compose"
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!"
2024-01-14 00:30:43 +00:00
marlin :
./buildroot/bin/mftest -a
.PHONY : marlin
2020-11-18 02:04:28 +00:00
tests-single-ci :
export GIT_RESET_HARD = true
2023-04-26 18:51:33 +00:00
$( MAKE) tests-single-local TEST_TARGET = $( TEST_TARGET) PLATFORMIO_BUILD_FLAGS = -DGITHUB_ACTION
2020-11-18 02:04:28 +00:00
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) "
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
2024-04-13 19:06:08 +00:00
$( 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
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
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
2024-04-13 19:06:08 +00:00
$( CONTAINER_RT_BIN) run $( CONTAINER_RT_OPTS) $( CONTAINER_IMAGE) make tests-all-local VERBOSE_PLATFORMIO = $( VERBOSE_PLATFORMIO) GIT_RESET_HARD = $( GIT_RESET_HARD)
#unit-test-single-ci:
# export GIT_RESET_HARD=true
# $(MAKE) unit-test-single-local TEST_TARGET=$(TEST_TARGET)
# TODO: How can we limit tests with ONLY_TEST with platformio?
#unit-test-single-local:
# @if ! test -n "$(TEST_TARGET)" ; then echo "***ERROR*** Set TEST_TARGET=<your-module> or use make unit-test-all-local" ; return 1; fi
# platformio run -t marlin_$(TEST_TARGET)
#unit-test-single-local-docker:
# @if ! test -n "$(TEST_TARGET)" ; then echo "***ERROR*** Set TEST_TARGET=<your-module> or use make unit-test-all-local-docker" ; return 1; fi
# @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 unit-test-single-local TEST_TARGET=$(TEST_TARGET) ONLY_TEST="$(ONLY_TEST)"
unit-test-all-local :
platformio run -t test-marlin -e linux_native_test
unit-test-all-local-docker :
@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 unit-test-all-local
2020-11-18 02:04:28 +00:00
setup-local-docker :
2024-04-13 19:06:08 +00:00
$( CONTAINER_RT_BIN) buildx build -t $( CONTAINER_IMAGE) -f docker/Dockerfile .
2023-11-21 09:42:44 +00:00
PINS := $( shell find Marlin/src/pins -mindepth 2 -name '*.h' )
$(PINS) : %:
2024-01-14 00:30:43 +00:00
@echo " Formatting $@ " && node $( SCRIPTS_DIR) /pinsformat.js $@
2023-11-21 09:42:44 +00:00
format-pins : $( PINS )