Files
2026-07-13 13:17:40 +08:00

61 lines
1.7 KiB
Python

import os
import shutil
import subprocess
import sys
import tempfile
import mypy.api as mypy_api
import pyright
import pytest
# Paths are relative to the directory where Bazel is run in the CI
TYPING_GOOD_PATH = "python/ray/tests/typing_files/check_typing_good.py"
TYPING_BAD_PATH = "python/ray/tests/typing_files/check_typing_bad.py"
TYPING_ACTOR_ASYNC_PATH = "python/ray/tests/typing_files/check_typing_actor_async.py"
def test_typing_good():
typing_good_tmp_path = create_tmp_copy(TYPING_GOOD_PATH)
out, msg, status_code = mypy_api.run([typing_good_tmp_path])
assert status_code == 0, out
def test_typing_bad():
typing_bad_tmp_path = create_tmp_copy(TYPING_BAD_PATH)
_, msg, status_code = mypy_api.run([typing_bad_tmp_path])
assert status_code == 1, msg
def test_typing_actor_async():
typing_actor_async_tmp_path = create_tmp_copy(TYPING_ACTOR_ASYNC_PATH)
result = pyright.run(
typing_actor_async_tmp_path,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
cwd=tempfile.gettempdir(),
)
assert (
result.returncode == 0
), f"Pyright check failed. stdout:\n{result.stdout}\n\nstderr:\n{result.stderr}"
def create_tmp_copy(file_path: str) -> str:
"""Copies file at file_path to a temporary file and returns the path."""
base_file_name = os.path.basename(file_path)
tmp_dir = tempfile.gettempdir()
tmp_path = os.path.join(tmp_dir, base_file_name)
shutil.copy(file_path, tmp_path)
print(f"Copied file at {file_path} to {tmp_path}")
return tmp_path
if __name__ == "__main__":
# Make subprocess happy in bazel.
os.environ["LC_ALL"] = "en_US.UTF-8"
os.environ["LANG"] = "en_US.UTF-8"
sys.exit(pytest.main(["-sv", __file__]))