summaryrefslogtreecommitdiff
path: root/defs.bzl
blob: 679937c3ac4cc7c9bf39266102f35c371772c42c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
#
# defs.bzl - Definitions for Facebook-specific buck build integration
# in TARGETS

load("@fbcode_macros//build_defs:coverage.bzl", "coverage")
load("@fbcode_macros//build_defs:cpp_binary.bzl", "cpp_binary")
load("@fbcode_macros//build_defs:custom_unittest.bzl", "custom_unittest")

def test_binary(
        test_name,
        test_cc,
        parallelism,
        rocksdb_arch_preprocessor_flags,
        rocksdb_os_preprocessor_flags,
        rocksdb_compiler_flags,
        rocksdb_preprocessor_flags,
        rocksdb_external_deps,
        rocksdb_os_deps,
        extra_deps,
        extra_compiler_flags):
    TEST_RUNNER = native.package_name() + "/buckifier/rocks_test_runner.sh"

    ttype = "gtest" if parallelism == "parallel" else "simple"
    test_bin = test_name + "_bin"

    cpp_binary(
        name = test_bin,
        srcs = [test_cc],
        arch_preprocessor_flags = rocksdb_arch_preprocessor_flags,
        os_preprocessor_flags = rocksdb_os_preprocessor_flags,
        compiler_flags = rocksdb_compiler_flags + extra_compiler_flags,
        preprocessor_flags = rocksdb_preprocessor_flags,
        deps = [":rocksdb_test_lib"] + extra_deps,
        os_deps = rocksdb_os_deps,
        external_deps = rocksdb_external_deps,
    )

    binary_path = "$(location :{})".format(test_bin)

    base_path = native.package_name()
    tags = []
    if coverage.is_coverage_enabled(base_path):
        # This tag instructs testpilot to use
        # the lower-memory coverage runner
        # (e.g. it tells testpilot that the binary
        # is actually instrumented with coverage info)
        tags = ["coverage"]

    custom_unittest(
        name = test_name,
        command = [TEST_RUNNER, binary_path],
        type = ttype,
        env = {"BUCK_BASE_BINARY": binary_path},
        tags = tags,
    )