You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
3.1 KiB
59 lines
3.1 KiB
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 |
|
|
|
help: |
|
@echo "Tasks for local development:" |
|
@echo "* tests-single-ci: Run a single test from inside the CI" |
|
@echo "* tests-single-local: Run a single test locally" |
|
@echo "* tests-single-local-docker: Run a single test locally, using docker" |
|
@echo "* tests-all-local: Run all tests locally" |
|
@echo "* tests-all-local-docker: Run all tests locally, using docker" |
|
@echo "* setup-local-docker: Build the local docker image" |
|
@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 |
|
$(MAKE) tests-single-local TEST_TARGET=$(TEST_TARGET) |
|
.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 |
|
export PATH="./buildroot/bin/:./buildroot/tests/:${PATH}" \ |
|
&& 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 |
|
@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)" |
|
.PHONY: tests-single-local-docker |
|
|
|
tests-all-local: |
|
export PATH="./buildroot/bin/:./buildroot/tests/:${PATH}" \ |
|
&& export VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) \ |
|
&& for TEST_TARGET in $$($(SCRIPTS_DIR)/get_test_targets.py) ; do echo "Running tests for $$TEST_TARGET" ; run_tests . $$TEST_TARGET ; done |
|
.PHONY: tests-all-local |
|
|
|
tests-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) tests-all-local VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) GIT_RESET_HARD=$(GIT_RESET_HARD) |
|
.PHONY: tests-all-local-docker |
|
|
|
setup-local-docker: |
|
$(CONTAINER_RT_BIN) build -t $(CONTAINER_IMAGE) -f docker/Dockerfile . |
|
.PHONY: setup-local-docker
|
|
|