Video-ORA-9B / code /tests /test_cli_metadata.py
lyhisme's picture
Add OraRL training and evaluation code
53c10a4 verified
Raw
History Blame Contribute Delete
2.43 kB
from __future__ import annotations
from pathlib import Path
import tomllib
RELEASE_ROOT = Path(__file__).resolve().parents[1]
def test_install_metadata_and_console_scripts() -> None:
with (RELEASE_ROOT / "pyproject.toml").open("rb") as handle:
metadata = tomllib.load(handle)
project = metadata["project"]
assert project["name"] == "orarl"
assert project["requires-python"] == ">=3.10"
# The trainer ships inside this distribution, so no external runtime pin.
assert not any(dependency.startswith("verl") for dependency in project["dependencies"])
assert project["license"] == "Apache-2.0"
assert project["license-files"] == ["LICENSE", "NOTICE"]
assert project["optional-dependencies"]["hf"] == ["huggingface_hub"]
assert project["scripts"] == {
"orarl-train": "orarl.cli.train:main",
"orarl-eval": "orarl.cli.evaluate:main",
"orarl-eval-data": "orarl.cli.eval_data:main",
"orarl-prepare": "orarl.cli.prepare:main",
}
data_files = metadata["tool"]["setuptools"]["data-files"]
assert data_files["share/orarl"] == ["environment.yml", "requirements-cu129.txt"]
assert data_files["share/orarl/configs"] == ["configs/*.yaml"]
assert data_files["share/orarl/docs"] == ["docs/*.md"]
assert data_files["share/orarl/scripts"] == ["scripts/*.py", "scripts/*.sh"]
def test_install_ships_every_evaluator() -> None:
with (RELEASE_ROOT / "pyproject.toml").open("rb") as handle:
metadata = tomllib.load(handle)
installed: set[Path] = set()
for target, patterns in metadata["tool"]["setuptools"]["data-files"].items():
if not target.startswith("share/orarl/eval"):
continue
for pattern in patterns:
installed.update(RELEASE_ROOT.glob(pattern))
# Importing an evaluator during the suite drops bytecode next to the source.
shipped = {
path
for path in (RELEASE_ROOT / "eval").rglob("*")
if path.is_file() and "__pycache__" not in path.parts
}
assert shipped
assert sorted(shipped - installed) == []
def test_apache_attribution_files_are_present() -> None:
license_text = (RELEASE_ROOT / "LICENSE").read_text(encoding="utf-8")
notice_text = (RELEASE_ROOT / "NOTICE").read_text(encoding="utf-8")
assert "Apache License" in license_text
assert "Version 2.0" in license_text
assert "ByteDance Ltd." in notice_text