oni.git

oni

~ A static Git browser written in Rust.
git clone https://github.com/debuman/oni.git

scripts/test_package_site.py (1956B)

      1 #!/usr/bin/env python3
      2 """Verify deployment packaging preserves repository paths without leaking metadata."""
      3 
      4 from pathlib import Path
      5 import tarfile
      6 import tempfile
      7 import unittest
      8 
      9 from package_site import package
     10 
     11 
     12 class PackageTests(unittest.TestCase):
     13     def test_dot_prefixed_repositories_and_paths_are_preserved(self):
     14         with tempfile.TemporaryDirectory() as directory:
     15             root = Path(directory)
     16             public = root / "public"
     17             (public / ".github/file").mkdir(parents=True)
     18             (public / "index.html").write_text("catalog")
     19             (public / ".github/index.html").write_text("repository")
     20             (public / ".github/file/.gitignore.html").write_text("source view")
     21             output = root / "artifact.tar"
     22             package(public, output)
     23             with tarfile.open(output) as archive:
     24                 self.assertIn(".github/index.html", archive.getnames())
     25                 self.assertIn(".github/file/.gitignore.html", archive.getnames())
     26                 self.assertTrue(all(member.isfile() or member.isdir() for member in archive))
     27             with self.assertRaises(ValueError):
     28                 package(public, public / "artifact.tar")
     29             (public / ".git").mkdir()
     30             (public / ".git/config").write_text("private metadata")
     31             with self.assertRaises(ValueError):
     32                 package(public, output)
     33 
     34     def test_links_are_rejected(self):
     35         with tempfile.TemporaryDirectory() as directory:
     36             root = Path(directory)
     37             public = root / "public"
     38             public.mkdir()
     39             (public / "index.html").write_text("catalog")
     40             outside = root / "private.txt"
     41             outside.write_text("private")
     42             (public / "linked.txt").symlink_to(outside)
     43             with self.assertRaises(ValueError):
     44                 package(public, root / "artifact.tar")
     45 
     46 
     47 if __name__ == "__main__":
     48     unittest.main(verbosity=2)