1*d6050574SRomain Jobredeaux"""Shared private utilities.""" 2*d6050574SRomain Jobredeaux 3*d6050574SRomain Jobredeauxdef _do_nothing_impl(ctx): 4*d6050574SRomain Jobredeaux _ = ctx # @unused 5*d6050574SRomain Jobredeaux return [] 6*d6050574SRomain Jobredeaux 7*d6050574SRomain Jobredeauxdo_nothing = rule(implementation = _do_nothing_impl) 8*d6050574SRomain Jobredeaux 9*d6050574SRomain Jobredeauxdef get_test_name_from_function(func): 10*d6050574SRomain Jobredeaux """Derives a suitable test name from a function. 11*d6050574SRomain Jobredeaux 12*d6050574SRomain Jobredeaux This can be used for better test feedback. 13*d6050574SRomain Jobredeaux 14*d6050574SRomain Jobredeaux Args: 15*d6050574SRomain Jobredeaux func: (callable) A test implementation or setup function. 16*d6050574SRomain Jobredeaux 17*d6050574SRomain Jobredeaux Returns: 18*d6050574SRomain Jobredeaux (str) The name of the given function, suitable as a test name. 19*d6050574SRomain Jobredeaux """ 20*d6050574SRomain Jobredeaux 21*d6050574SRomain Jobredeaux # Starlark currently stringifies a function as "<function NAME>", so we use 22*d6050574SRomain Jobredeaux # that knowledge to parse the "NAME" portion out. If this behavior ever 23*d6050574SRomain Jobredeaux # changes, we'll need to update this. 24*d6050574SRomain Jobredeaux # TODO(bazel-team): Expose a ._name field on functions to avoid this. 25*d6050574SRomain Jobredeaux func_name = str(func) 26*d6050574SRomain Jobredeaux func_name = func_name.partition("<function ")[-1] 27*d6050574SRomain Jobredeaux func_name = func_name.rpartition(">")[0] 28*d6050574SRomain Jobredeaux func_name = func_name.partition(" ")[0] 29*d6050574SRomain Jobredeaux 30*d6050574SRomain Jobredeaux # Strip leading/trailing underscores so that test functions can 31*d6050574SRomain Jobredeaux # have private names. This better allows unused tests to be flagged by 32*d6050574SRomain Jobredeaux # buildifier (indicating a bug or code to delete) 33*d6050574SRomain Jobredeaux return func_name.strip("_") 34*d6050574SRomain Jobredeaux 35*d6050574SRomain Jobredeauxget_function_name = get_test_name_from_function 36