8287828: Fix so that one can select jtreg test case by ID from make
Reviewed-by: erikj, iklam, ihse
This commit is contained in:
parent
476c484e37
commit
c59f9b374b
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2016, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -349,13 +349,24 @@ ExpandJtregPath = \
|
|||||||
)) \
|
)) \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# with test id: dir/Test.java#selection -> Test.java#selection -> .java#selection -> #selection
|
||||||
|
# without: dir/Test.java -> Test.java -> .java -> <<empty string>>
|
||||||
|
TestID = \
|
||||||
|
$(subst .java,,$(suffix $(notdir $1)))
|
||||||
|
|
||||||
|
# The test id starting with a hash (#testid) will be stripped by all
|
||||||
|
# evals in ParseJtregTestSelectionInner and will be reinserted by calling
|
||||||
|
# TestID (if it is present).
|
||||||
|
ParseJtregTestSelection = \
|
||||||
|
$(call IfAppend, $(call ParseJtregTestSelectionInner, $1), $(call TestID, $1))
|
||||||
|
|
||||||
# Helper function to determine if a test specification is a Jtreg test
|
# Helper function to determine if a test specification is a Jtreg test
|
||||||
#
|
#
|
||||||
# It is a Jtreg test if it optionally begins with jtreg:, and then is either
|
# It is a Jtreg test if it optionally begins with jtreg:, and then is either
|
||||||
# an unspecified group name (possibly prefixed by :), or a group in a
|
# an unspecified group name (possibly prefixed by :), or a group in a
|
||||||
# specified test root, or a path to a test or test directory,
|
# specified test root, or a path to a test or test directory,
|
||||||
# either absolute or relative to any of the TEST_BASEDIRS or test roots.
|
# either absolute or relative to any of the TEST_BASEDIRS or test roots.
|
||||||
define ParseJtregTestSelection
|
define ParseJtregTestSelectionInner
|
||||||
$(eval TEST_NAME := $(strip $(patsubst jtreg:%, %, $1))) \
|
$(eval TEST_NAME := $(strip $(patsubst jtreg:%, %, $1))) \
|
||||||
$(if $(or $(findstring :, $(TEST_NAME)), $(findstring /, $(TEST_NAME))), , \
|
$(if $(or $(findstring :, $(TEST_NAME)), $(findstring /, $(TEST_NAME))), , \
|
||||||
$(eval TEST_NAME := :$(TEST_NAME)) \
|
$(eval TEST_NAME := :$(TEST_NAME)) \
|
||||||
@ -419,28 +430,19 @@ ifeq ($(TEST), )
|
|||||||
$(error Cannot continue)
|
$(error Cannot continue)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ParseTestSelection = \
|
||||||
|
$(strip $(or \
|
||||||
|
$(call ParseCustomTestSelection, $1) \
|
||||||
|
$(call ParseGtestTestSelection, $1) \
|
||||||
|
$(call ParseMicroTestSelection, $1) \
|
||||||
|
$(call ParseJtregTestSelection, $1) \
|
||||||
|
$(call ParseSpecialTestSelection, $1) \
|
||||||
|
))
|
||||||
|
|
||||||
# Now intelligently convert the test selection given by the user in TEST
|
# Now intelligently convert the test selection given by the user in TEST
|
||||||
# into a list of fully qualified test descriptors of the tests to run.
|
# into a list of fully qualified test descriptors of the tests to run.
|
||||||
TESTS_TO_RUN :=
|
TESTS_TO_RUN := $(strip $(foreach test, $(TEST), $(call ParseTestSelection, $(test))))
|
||||||
$(foreach test, $(TEST), \
|
UNKNOWN_TEST := $(strip $(foreach test, $(TEST), $(if $(call ParseTestSelection, $(test)), , $(test))))
|
||||||
$(eval PARSED_TESTS := $(call ParseCustomTestSelection, $(test))) \
|
|
||||||
$(if $(strip $(PARSED_TESTS)), , \
|
|
||||||
$(eval PARSED_TESTS += $(call ParseGtestTestSelection, $(test))) \
|
|
||||||
) \
|
|
||||||
$(if $(strip $(PARSED_TESTS)), , \
|
|
||||||
$(eval PARSED_TESTS += $(call ParseMicroTestSelection, $(test))) \
|
|
||||||
) \
|
|
||||||
$(if $(strip $(PARSED_TESTS)), , \
|
|
||||||
$(eval PARSED_TESTS += $(call ParseJtregTestSelection, $(test))) \
|
|
||||||
) \
|
|
||||||
$(if $(strip $(PARSED_TESTS)), , \
|
|
||||||
$(eval PARSED_TESTS += $(call ParseSpecialTestSelection, $(test))) \
|
|
||||||
) \
|
|
||||||
$(if $(strip $(PARSED_TESTS)), , \
|
|
||||||
$(eval UNKNOWN_TEST := $(test)) \
|
|
||||||
) \
|
|
||||||
$(eval TESTS_TO_RUN += $(PARSED_TESTS)) \
|
|
||||||
)
|
|
||||||
|
|
||||||
ifneq ($(UNKNOWN_TEST), )
|
ifneq ($(UNKNOWN_TEST), )
|
||||||
$(info Unknown test selection: '$(UNKNOWN_TEST)')
|
$(info Unknown test selection: '$(UNKNOWN_TEST)')
|
||||||
@ -448,9 +450,6 @@ ifneq ($(UNKNOWN_TEST), )
|
|||||||
$(error Cannot continue)
|
$(error Cannot continue)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
TESTS_TO_RUN := $(strip $(TESTS_TO_RUN))
|
|
||||||
|
|
||||||
|
|
||||||
# Present the result of our parsing to the user
|
# Present the result of our parsing to the user
|
||||||
$(info Test selection '$(TEST)', will run:)
|
$(info Test selection '$(TEST)', will run:)
|
||||||
$(foreach test, $(TESTS_TO_RUN), $(info * $(test)))
|
$(foreach test, $(TESTS_TO_RUN), $(info * $(test)))
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -68,6 +68,12 @@ _sequence-do = \
|
|||||||
$(words $(SEQUENCE_COUNT)) \
|
$(words $(SEQUENCE_COUNT)) \
|
||||||
$(call _sequence-do,$1))
|
$(call _sequence-do,$1))
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Strip both arguments. Append the first argument to the second argument. If the
|
||||||
|
# first argument is empty, return the empty string.
|
||||||
|
IfAppend = \
|
||||||
|
$(if $(strip $1),$(strip $1)$(strip $2),)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Replace question marks with space in string. This macro needs to be called on
|
# Replace question marks with space in string. This macro needs to be called on
|
||||||
# files from FindFiles in case any of them contains space in their file name,
|
# files from FindFiles in case any of them contains space in their file name,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user