Browse Source

Basic framework for parsing test targets

Fred Sundvik 8 years ago
parent
commit
6d7cd639a5
3 changed files with 34 additions and 1 deletions
  1. 15 1
      Makefile
  2. 6 0
      quantum/serial_link/tests/testlist.mk
  3. 13 0
      testlist.mk

+ 15 - 1
Makefile

@@ -224,6 +224,8 @@ define PARSE_RULE
     # PARSE_ALL_KEYBOARDS
     # PARSE_ALL_KEYBOARDS
     ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkb),true)
     ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkb),true)
         $$(eval $$(call PARSE_ALL_KEYBOARDS))
         $$(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
     # If the rule starts with the name of a known keyboard, then continue
     # the parsing from PARSE_KEYBOARD
     # the parsing from PARSE_KEYBOARD
     else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true)
     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)))
     $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS)))
 endef
 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
 # 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 
 # By default it's on in that case, but it can be overriden by specifying silent=false 
 # from the command line
 # 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")
 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")
 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_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
-$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
+$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
+
+include $(ROOT_DIR)/testlist.mk

+ 6 - 0
quantum/serial_link/tests/testlist.mk

@@ -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

+ 13 - 0
testlist.mk

@@ -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))))