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)