~ruther/qmk_firmware

6d7cd639a5e4503f00162c7cfa4bc7302b82c71c — Fred Sundvik 9 years ago cfddec1
Basic framework for parsing test targets
3 files changed, 34 insertions(+), 1 deletions(-)

M Makefile
A quantum/serial_link/tests/testlist.mk
A testlist.mk
M Makefile => Makefile +15 -1
@@ 224,6 224,8 @@ define PARSE_RULE
    # PARSE_ALL_KEYBOARDS
    ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkb),true)
        $$(eval $$(call PARSE_ALL_KEYBOARDS))
    else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,test),true)
        $$(eval $$(call PARSE_TEST))
    # If the rule starts with the name of a known keyboard, then continue
    # the parsing from PARSE_KEYBOARD
    else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true)


@@ 396,6 398,16 @@ define PARSE_ALL_KEYMAPS
    $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS)))
endef

define PARSE_TEST
    TEST_NAME := $$(firstword $$(subst -, ,$$(RULE)))
    TEST_TARGET := $$(subst $$(TEST_NAME),,$$(subst $$(TEST_NAME)-,,$$(RULE)))
    MATCHED_TESTS := $$(foreach TEST,$$(TEST_LIST),$$(if $$(findstring $$(TEST_NAME),$$(TEST)),$$(TEST),))
    $$(info Test name $$(TEST_NAME))
    $$(info Test target $$(TEST_TARGET))
    $$(info $$(MATCHED_TESTS))
endef


# Set the silent mode depending on if we are trying to compile multiple keyboards or not
# By default it's on in that case, but it can be overriden by specifying silent=false 
# from the command line


@@ 459,4 471,6 @@ all-keyboards-defaults: allkb-allsp-default
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
\ No newline at end of file
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)

include $(ROOT_DIR)/testlist.mk
\ No newline at end of file

A quantum/serial_link/tests/testlist.mk => quantum/serial_link/tests/testlist.mk +6 -0
@@ 0,0 1,6 @@
TEST_LIST +=\
	serial_link_byte_stuffer\
	serial_link_frame_router\
	serial_link_frame_validator\
	serial_link_transport\
	serial_link_triple_buffered_object
\ No newline at end of file

A testlist.mk => testlist.mk +13 -0
@@ 0,0 1,13 @@
include $(ROOT_DIR)/quantum/serial_link/tests/testlist.mk

define VALIDATE_TEST_LIST
    ifneq ($1,)
        ifeq ($$(findstring -,$1),-)
            $$(error Test names can't contain '-', but '$1' does)
        else
            $$(eval $$(call VALIDATE_TEST_LIST,$$(firstword $2),$$(wordlist 2,9999,$2)))
        endif
    endif
endef

$(eval $(call VALIDATE_TEST_LIST,$(firstword $(TEST_LIST)),$(wordlist 2,9999,$(TEST_LIST))))
\ No newline at end of file