mirror of
https://github.com/vale981/ray
synced 2025-03-06 02:21:39 -05:00
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
![]() |
"""Make sure tests will be run by CI.
|
||
|
"""
|
||
|
|
||
|
import glob
|
||
|
import subprocess
|
||
|
import xml.etree.ElementTree as ET
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
# Make sure python unit tests have corresponding bazel targets that will run them.
|
||
|
xml_string = subprocess.run(
|
||
|
["bazel", "query", 'kind("py_test", //...)', "--output=xml"],
|
||
|
stdout=subprocess.PIPE,
|
||
|
).stdout.decode("utf-8")
|
||
|
root_element = ET.fromstring(xml_string)
|
||
|
src_files = set()
|
||
|
for src_element in root_element.findall(".//*[@name='srcs']/label"):
|
||
|
src_file = src_element.attrib["value"][2:].replace(":", "/")
|
||
|
src_files.add(src_file)
|
||
|
|
||
|
missing_bazel_targets = []
|
||
|
for f in glob.glob("python/**/tests/test_*.py", recursive=True):
|
||
|
if f.startswith("python/build/") or f.startswith(
|
||
|
"python/ray/thirdparty_files/"
|
||
|
):
|
||
|
continue
|
||
|
# TODO(jiaodong) Remove this once experimental module is tested
|
||
|
if f.startswith("python/ray/experimental"):
|
||
|
continue
|
||
|
if f not in src_files:
|
||
|
missing_bazel_targets.append(f)
|
||
|
|
||
|
if missing_bazel_targets:
|
||
|
raise Exception(
|
||
|
f"Cannot find bazel targets for tests {missing_bazel_targets} "
|
||
|
f"so they won't be run automatically by CI, "
|
||
|
f"please add them to BUILD files."
|
||
|
)
|