Files
aipackage/tests/deployment/test_python_runtime_profile.py

42 lines
1.7 KiB
Python

import hashlib
import importlib.util
import tempfile
import unittest
from pathlib import Path
MODULE_PATH = Path(__file__).parents[2] / "autoinstall/offline/validate-python-runtime-profile.py"
SPEC = importlib.util.spec_from_file_location("validate_python_runtime_profile", MODULE_PATH)
MODULE = importlib.util.module_from_spec(SPEC)
assert SPEC.loader
SPEC.loader.exec_module(MODULE)
class PythonRuntimeProfileTests(unittest.TestCase):
def test_accepts_required_wheel_with_matching_digest(self):
with tempfile.TemporaryDirectory() as directory:
wheel = Path(directory) / "torch-cpu.whl"
wheel.write_bytes(b"cpu")
contract = {"profiles": {"cpu-only": {
"required": {wheel.name: hashlib.sha256(b"cpu").hexdigest()},
"forbidden_filename_patterns": ["cu12"],
}}}
self.assertEqual(MODULE.validate(contract, "cpu-only", Path(directory)), [])
def test_rejects_forbidden_gpu_wheel_and_digest_mismatch(self):
with tempfile.TemporaryDirectory() as directory:
root = Path(directory)
(root / "torch-cpu.whl").write_bytes(b"changed")
(root / "nvidia_cuda_cu12.whl").write_bytes(b"gpu")
contract = {"profiles": {"cpu-only": {
"required": {"torch-cpu.whl": hashlib.sha256(b"cpu").hexdigest()},
"forbidden_filename_patterns": ["nvidia_", "cu12"],
}}}
errors = MODULE.validate(contract, "cpu-only", root)
self.assertTrue(any("forbidden pattern" in error for error in errors))
self.assertIn("digest mismatch: torch-cpu.whl", errors)
if __name__ == "__main__":
unittest.main()