55 lines
2.0 KiB
Python
55 lines
2.0 KiB
Python
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
# contributor license agreements. See the NOTICE file distributed with
|
|
# this work for additional information regarding copyright ownership.
|
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
# (the "License"); you may not use this file except in compliance with
|
|
# the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
def generate_unittests(
|
|
name,
|
|
srcs,
|
|
deps,
|
|
copts,
|
|
linkopts = [],
|
|
data = [],
|
|
per_test_tags = {},
|
|
per_test_size = {}):
|
|
tests = []
|
|
for s in srcs:
|
|
ut_name = s.replace(".cpp", "")
|
|
# per_test_size raises Bazel's per-test timeout for a specific file
|
|
# ("large" = 900s vs the default medium = 300s), for binaries whose
|
|
# cumulative real-time waits would otherwise blow the limit on
|
|
# contended CI runners.
|
|
kwargs = {}
|
|
size = per_test_size.get(s)
|
|
if size != None:
|
|
kwargs["size"] = size
|
|
native.cc_test(
|
|
name = ut_name,
|
|
srcs = [s],
|
|
copts = copts,
|
|
deps = deps,
|
|
linkopts = linkopts,
|
|
data = data,
|
|
# Integration tests that fork a real server binary (e.g. redis-server)
|
|
# need extra tags: "external" forces a real run instead of a cached
|
|
# pass, and "local" runs them outside the sandbox so the PATH-located
|
|
# server binary is visible and loopback works.
|
|
tags = per_test_tags.get(s, []),
|
|
**kwargs
|
|
)
|
|
tests.append(":" + ut_name)
|
|
|
|
native.test_suite(
|
|
name = name,
|
|
tests = tests,
|
|
) |