38 lines
1.6 KiB
Python
38 lines
1.6 KiB
Python
"""The frozen interpreter must retain its certificate policy resource."""
|
|
import tempfile
|
|
from pathlib import Path
|
|
import unittest
|
|
from unittest.mock import patch
|
|
|
|
from packaging_native import python_ssl_data
|
|
|
|
|
|
class SSLResourceTests(unittest.TestCase):
|
|
def test_managed_runtime_policy_is_bundled_verbatim(self):
|
|
with tempfile.TemporaryDirectory() as directory:
|
|
source = Path(directory) / "ssl.py"
|
|
source.write_text("policy = 'codex-rejected-cas.pem'", encoding="utf-8")
|
|
policy = source.with_name("codex-rejected-cas.pem")
|
|
policy.write_bytes(b"public certificate policy fixture")
|
|
with patch("ssl.__file__", str(source)):
|
|
self.assertEqual(python_ssl_data(), [(str(policy), ".")])
|
|
self.assertEqual(policy.read_bytes(), b"public certificate policy fixture")
|
|
|
|
def test_missing_required_policy_stops_build(self):
|
|
with tempfile.TemporaryDirectory() as directory:
|
|
source = Path(directory) / "ssl.py"
|
|
source.write_text("policy = 'codex-rejected-cas.pem'", encoding="utf-8")
|
|
with patch("ssl.__file__", str(source)), self.assertRaisesRegex(RuntimeError, "missing"):
|
|
python_ssl_data()
|
|
|
|
def test_standard_python_needs_no_extra_resource(self):
|
|
with tempfile.TemporaryDirectory() as directory:
|
|
source = Path(directory) / "ssl.py"
|
|
source.write_text("# Standard SSL module", encoding="utf-8")
|
|
with patch("ssl.__file__", str(source)):
|
|
self.assertEqual(python_ssl_data(), [])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|