import os import contextlib import hashlib import io import json from pathlib import Path import subprocess import struct import sys import tempfile import unittest from unittest.mock import patch import warnings import zipfile import zlib sys.path.insert(0, str(Path(__file__).resolve().parents[1])) import build_web def library_zip(entries): buffer = io.BytesIO() with warnings.catch_warnings(), zipfile.ZipFile(buffer, "w", compression=zipfile.ZIP_DEFLATED) as archive: warnings.simplefilter("ignore", UserWarning) for name, data in entries: archive.writestr(name, data) return buffer.getvalue() class LibraryPublicationTests(unittest.TestCase): def test_unicode_path_rewrite_is_rejected_before_decompression(self): original = "libs/../libc.prx" rewritten = "libs/libc.prx" entry = zipfile.ZipInfo(original) unicode_path = b"\x01" + struct.pack("