mirror of
https://github.com/google/nomulus.git
synced 2025-05-13 16:07:15 +02:00
Import code from internal repository to git
This commit is contained in:
commit
0ef0c933d2
2490 changed files with 281594 additions and 0 deletions
1
java/com/google/testing/builddefs/BUILD
Normal file
1
java/com/google/testing/builddefs/BUILD
Normal file
|
@ -0,0 +1 @@
|
|||
package(default_visibility = ["//visibility:public"])
|
109
java/com/google/testing/builddefs/GenTestRules.bzl
Normal file
109
java/com/google/testing/builddefs/GenTestRules.bzl
Normal file
|
@ -0,0 +1,109 @@
|
|||
# -*- mode:python; -*-
|
||||
#
|
||||
# Copyright 2016 Google Inc. All rights reserved.
|
||||
#
|
||||
# Licensed 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.
|
||||
|
||||
"""Generate java test rules from given test_files.
|
||||
|
||||
Instead of having to create one test rule per test in the BUILD file, this rule
|
||||
provides a handy way to create a bunch of test rules for the specified test
|
||||
files.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
def GenTestRules(name,
|
||||
test_files,
|
||||
deps,
|
||||
exclude_tests=[],
|
||||
default_test_size="small",
|
||||
small_tests=[],
|
||||
medium_tests=[],
|
||||
large_tests=[],
|
||||
enormous_tests=[],
|
||||
resources=[],
|
||||
flaky_tests=[],
|
||||
tags=[],
|
||||
prefix="",
|
||||
jvm_flags=["-XX:MaxPermSize=128m"],
|
||||
args=[],
|
||||
visibility=None,
|
||||
shard_count=1):
|
||||
for test in _get_test_names(test_files):
|
||||
if test in exclude_tests:
|
||||
continue
|
||||
test_size = default_test_size
|
||||
if test in small_tests:
|
||||
test_size = "small"
|
||||
if test in medium_tests:
|
||||
test_size = "medium"
|
||||
if test in large_tests:
|
||||
test_size = "large"
|
||||
if test in enormous_tests:
|
||||
test_size = "enormous"
|
||||
flaky = 0
|
||||
if (test in flaky_tests) or ("flaky" in tags):
|
||||
flaky = 1
|
||||
java_class = _package_from_path(
|
||||
PACKAGE_NAME + "/" + _strip_right(test, ".java"))
|
||||
package = java_class[:java_class.rfind(".")]
|
||||
native.java_test(name = prefix + test,
|
||||
runtime_deps = deps,
|
||||
resources = resources,
|
||||
size = test_size,
|
||||
jvm_flags = jvm_flags,
|
||||
args = args,
|
||||
flaky = flaky,
|
||||
tags = tags,
|
||||
test_class = java_class,
|
||||
visibility = visibility,
|
||||
shard_count = shard_count)
|
||||
|
||||
|
||||
def _get_test_names(test_files):
|
||||
test_names = []
|
||||
for test_file in test_files:
|
||||
if not test_file.endswith("Test.java"):
|
||||
continue
|
||||
test_names += [test_file[:-5]]
|
||||
return test_names
|
||||
|
||||
|
||||
def _package_from_path(package_path, src_impls=None):
|
||||
src_impls = src_impls or ['javatests/', 'java/']
|
||||
for src_impl in src_impls:
|
||||
if not src_impl.endswith('/'):
|
||||
src_impl += '/'
|
||||
index = _index_of_end(package_path, src_impl)
|
||||
if index >= 0:
|
||||
package_path = package_path[index:]
|
||||
break
|
||||
return package_path.replace('/', '.')
|
||||
|
||||
|
||||
def _strip_right(str, suffix):
|
||||
"""Returns str without the suffix if it ends with suffix."""
|
||||
if str.endswith(suffix):
|
||||
return str[0: len(str) - len(suffix)]
|
||||
else:
|
||||
return str
|
||||
|
||||
|
||||
def _index_of_end(str, part):
|
||||
"""If part is in str, return the index of the first character after part.
|
||||
Return -1 if part is not in str."""
|
||||
index = str.find(part)
|
||||
if index >= 0:
|
||||
return index + len(part)
|
||||
return -1
|
Loading…
Add table
Add a link
Reference in a new issue