github.com/ajguerrer/rules_go@v0.20.3/go/tools/bazel_testing/def.bzl (about) 1 # Copyright 2019 The Bazel Authors. All rights reserved. 2 # 3 # Licensed under the Apache License, Version 2.0 (the "License"); 4 # you may not use this file except in compliance with the License. 5 # You may obtain a copy of the License at 6 # 7 # http://www.apache.org/licenses/LICENSE-2.0 8 # 9 # Unless required by applicable law or agreed to in writing, software 10 # distributed under the License is distributed on an "AS IS" BASIS, 11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 # See the License for the specific language governing permissions and 13 # limitations under the License. 14 15 load("@io_bazel_rules_go//go:def.bzl", "go_test") 16 17 def go_bazel_test(rule_files = None, **kwargs): 18 """go_bazel_test is a wrapper for go_test that simplifies the use of 19 //go/tools/bazel_testing:go_default_library. Tests may be written 20 that don't explicitly depend on bazel_testing or rules_go files. 21 """ 22 23 if not rule_files: 24 rule_files = ["@io_bazel_rules_go//:all_files"] 25 26 # Add dependency on bazel_testing library. 27 kwargs.setdefault("deps", []) 28 29 bazel_testing_library = "@io_bazel_rules_go//go/tools/bazel_testing:go_default_library" 30 if bazel_testing_library not in kwargs["deps"]: 31 kwargs["deps"] += [bazel_testing_library] 32 33 # Add data dependency on rules_go files. bazel_testing will copy or link 34 # these files in an external repo. 35 kwargs.setdefault("data", []) 36 kwargs["data"] += rule_files 37 38 # Add paths to rules_go files to arguments. bazel_testing will copy or link 39 # these files. 40 kwargs.setdefault("args", []) 41 kwargs["args"] = (["-begin_files"] + 42 ["$(locations {})".format(t) for t in rule_files] + 43 ["-end_files"] + 44 kwargs["args"]) 45 46 # Set rundir to the workspace root directory to ensure relative paths 47 # are interpreted correctly. 48 kwargs.setdefault("rundir", ".") 49 50 # Set tags. 51 # local: don't run in sandbox or on remote executor. 52 # exclusive: run one test at a time, since they share a Bazel 53 # output directory. If we don't do this, tests must extract the bazel 54 # installation and start with a fresh cache every time, making them 55 # much slower. 56 kwargs.setdefault("tags", []) 57 if "local" not in kwargs["tags"]: 58 kwargs["tags"] += ["local"] 59 if "exclusive" not in kwargs["tags"]: 60 kwargs["tags"] += ["exclusive"] 61 62 go_test(**kwargs)