#!/usr/bin/env python3 from __future__ import annotations import textwrap import unittest import rusty_v8_module_bazel class RustyV8BazelTest(unittest.TestCase): def test_update_module_bazel_replaces_and_inserts_sha256(self) -> None: module_bazel = textwrap.dedent( """\ http_file( name = "rusty_v8_146_4_0_x86_64_unknown_linux_gnu_archive", downloaded_file_path = "librusty_v8_release_x86_64-unknown-linux-gnu.a.gz", sha256 = "0000000000000000000000000000000000000000000000000000000000000000", urls = [ "https://example.test/librusty_v8_release_x86_64-unknown-linux-gnu.a.gz", ], ) http_file( name = "rusty_v8_146_4_0_x86_64_unknown_linux_musl_binding", downloaded_file_path = "src_binding_release_x86_64-unknown-linux-musl.rs", urls = [ "https://example.test/src_binding_release_x86_64-unknown-linux-musl.rs", ], ) http_file( name = "rusty_v8_145_0_0_x86_64_unknown_linux_gnu_archive", downloaded_file_path = "librusty_v8_release_x86_64-unknown-linux-gnu.a.gz", sha256 = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", urls = [ "https://example.test/old.gz", ], ) """ ) checksums = { "librusty_v8_release_x86_64-unknown-linux-gnu.a.gz": ( "1111111111111111111111111111111111111111111111111111111111111111" ), "src_binding_release_x86_64-unknown-linux-musl.rs": ( "2222222222222222222222222222222222222222222222222222222222222222" ), } updated = rusty_v8_module_bazel.update_module_bazel_text( module_bazel, checksums, "146.4.0", ) self.assertEqual( textwrap.dedent( """\ http_file( name = "rusty_v8_146_4_0_x86_64_unknown_linux_gnu_archive", downloaded_file_path = "librusty_v8_release_x86_64-unknown-linux-gnu.a.gz", sha256 = "1111111111111111111111111111111111111111111111111111111111111111", urls = [ "https://example.test/librusty_v8_release_x86_64-unknown-linux-gnu.a.gz", ], ) http_file( name = "rusty_v8_146_4_0_x86_64_unknown_linux_musl_binding", downloaded_file_path = "src_binding_release_x86_64-unknown-linux-musl.rs", sha256 = "2222222222222222222222222222222222222222222222222222222222222222", urls = [ "https://example.test/src_binding_release_x86_64-unknown-linux-musl.rs", ], ) http_file( name = "rusty_v8_145_0_0_x86_64_unknown_linux_gnu_archive", downloaded_file_path = "librusty_v8_release_x86_64-unknown-linux-gnu.a.gz", sha256 = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", urls = [ "https://example.test/old.gz", ], ) """ ), updated, ) rusty_v8_module_bazel.check_module_bazel_text(updated, checksums, "146.4.0") def test_check_module_bazel_rejects_manifest_drift(self) -> None: module_bazel = textwrap.dedent( """\ http_file( name = "rusty_v8_146_4_0_x86_64_unknown_linux_gnu_archive", downloaded_file_path = "librusty_v8_release_x86_64-unknown-linux-gnu.a.gz", sha256 = "1111111111111111111111111111111111111111111111111111111111111111", urls = [ "https://example.test/librusty_v8_release_x86_64-unknown-linux-gnu.a.gz", ], ) """ ) checksums = { "librusty_v8_release_x86_64-unknown-linux-gnu.a.gz": ( "1111111111111111111111111111111111111111111111111111111111111111" ), "orphan.gz": ( "2222222222222222222222222222222222222222222222222222222222222222" ), } with self.assertRaisesRegex( rusty_v8_module_bazel.RustyV8ChecksumError, "manifest has orphan.gz", ): rusty_v8_module_bazel.check_module_bazel_text( module_bazel, checksums, "146.4.0", ) if __name__ == "__main__": unittest.main()