diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/test_vendor_libghostty_vt.py | 20 | ||||
| -rw-r--r-- | scripts/vendor_libghostty_vt.py | 7 |
2 files changed, 24 insertions, 3 deletions
diff --git a/scripts/test_vendor_libghostty_vt.py b/scripts/test_vendor_libghostty_vt.py index a26bd204..d73a3477 100644 --- a/scripts/test_vendor_libghostty_vt.py +++ b/scripts/test_vendor_libghostty_vt.py @@ -5,8 +5,9 @@ import tarfile import tempfile import unittest from pathlib import Path +from unittest import mock -from scripts.vendor_libghostty_vt import parse_archive_root +from scripts.vendor_libghostty_vt import ensure_dist_archive, parse_archive_root class VendorLibghosttyVtTests(unittest.TestCase): @@ -21,6 +22,23 @@ class VendorLibghosttyVtTests(unittest.TestCase): self.assertEqual(parse_archive_root(archive), "libghostty-vt-1.0.0") + def test_ensure_dist_archive_refuses_stale_archives_without_head_match(self) -> None: + with tempfile.TemporaryDirectory() as temp_dir: + repo = Path(temp_dir) + dist = repo / "zig-out" / "dist" + dist.mkdir(parents=True) + (dist / "libghostty-vt-1.3.2-main-+deadbeef0.tar.gz").write_bytes(b"stale") + + with ( + mock.patch("scripts.vendor_libghostty_vt.subprocess.run"), + mock.patch( + "scripts.vendor_libghostty_vt.subprocess.check_output", + return_value="0123456789abcdef\n", + ), + ): + with self.assertRaisesRegex(FileNotFoundError, "HEAD 012345678"): + ensure_dist_archive(repo) + def test_vendored_tree_contains_required_upstream_files(self) -> None: root = Path(__file__).resolve().parent.parent / "vendor" / "libghostty-vt" required = [ diff --git a/scripts/vendor_libghostty_vt.py b/scripts/vendor_libghostty_vt.py index f53e809b..b493de03 100644 --- a/scripts/vendor_libghostty_vt.py +++ b/scripts/vendor_libghostty_vt.py @@ -35,15 +35,18 @@ def git_head(repo: Path) -> str: def ensure_dist_archive(source_repo: Path) -> Path: + head = git_head(source_repo)[:9] subprocess.run( ["zig", "build", "dist", "-Demit-lib-vt", "-Doptimize=ReleaseFast"], cwd=source_repo, check=True, ) dist_dir = source_repo / "zig-out" / "dist" - archives = sorted(dist_dir.glob("libghostty-vt-*.tar.gz")) + archives = sorted(dist_dir.glob(f"libghostty-vt-*+{head}.tar.gz")) if not archives: - raise FileNotFoundError(f"no libghostty-vt dist archive found in {dist_dir}") + raise FileNotFoundError( + f"no libghostty-vt dist archive for HEAD {head} found in {dist_dir}" + ) return archives[-1] |
