Download .github/scripts/test_rusty_v8_bazel.py from SaylorTwift/codex: direct link, hf CLI and curl.
- Browser
- Download file 16.6 kB
-
https://huggingface.co/SaylorTwift/codex/resolve/main/.github/scripts/test_rusty_v8_bazel.py
- Command line
-
hf download hf://SaylorTwift/codex/.github/scripts/test_rusty_v8_bazel.py
-
curl -L -o test_rusty_v8_bazel.py https://huggingface.co/SaylorTwift/codex/resolve/main/.github/scripts/test_rusty_v8_bazel.py
16.6 kB
| #!/usr/bin/env python3 | |
| from __future__ import annotations | |
| import textwrap | |
| import unittest | |
| from os import environ | |
| from pathlib import Path | |
| from tempfile import TemporaryDirectory | |
| from unittest.mock import patch | |
| import rusty_v8_bazel | |
| import rusty_v8_module_bazel | |
| class RustyV8BazelTest(unittest.TestCase): | |
| def test_consumer_selectors_track_resolved_crate_version(self) -> None: | |
| build_bazel = ( | |
| rusty_v8_bazel.ROOT / "third_party" / "v8" / "BUILD.bazel" | |
| ).read_text() | |
| version_suffix = rusty_v8_bazel.resolved_v8_crate_version().replace(".", "_") | |
| for selector in [ | |
| "aarch64_apple_darwin_bazel", | |
| "aarch64_pc_windows_gnullvm", | |
| "aarch64_pc_windows_msvc", | |
| "aarch64_unknown_linux_gnu_bazel", | |
| "aarch64_unknown_linux_musl_release_base", | |
| "x86_64_apple_darwin_bazel", | |
| "x86_64_pc_windows_gnullvm", | |
| "x86_64_pc_windows_msvc", | |
| "x86_64_unknown_linux_gnu_bazel", | |
| "x86_64_unknown_linux_musl_release", | |
| ]: | |
| self.assertIn( | |
| f":v8_{version_suffix}_{selector}", | |
| build_bazel, | |
| ) | |
| for selector in [ | |
| "aarch64_apple_darwin", | |
| "aarch64_pc_windows_gnullvm", | |
| "aarch64_pc_windows_msvc", | |
| "aarch64_unknown_linux_gnu", | |
| "aarch64_unknown_linux_musl", | |
| "x86_64_apple_darwin", | |
| "x86_64_pc_windows_gnullvm", | |
| "x86_64_pc_windows_msvc", | |
| "x86_64_unknown_linux_gnu", | |
| "x86_64_unknown_linux_musl", | |
| ]: | |
| self.assertIn( | |
| f":src_binding_release_{selector}_{version_suffix}_release", | |
| build_bazel, | |
| ) | |
| def test_command_version_tracks_remaining_http_file_assets(self) -> None: | |
| with TemporaryDirectory() as temp_dir: | |
| module_bazel = Path(temp_dir) / "MODULE.bazel" | |
| module_bazel.write_text( | |
| 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", | |
| urls = ["https://example.test/archive.gz"], | |
| ) | |
| """ | |
| ) | |
| ) | |
| with patch.object(rusty_v8_bazel, "MODULE_BAZEL", module_bazel): | |
| self.assertEqual("146.4.0", rusty_v8_bazel.command_version(None)) | |
| def test_artifact_bazel_configs_always_enable_upstream_libcxx(self) -> None: | |
| self.assertEqual( | |
| ["rusty-v8-upstream-libcxx"], | |
| rusty_v8_bazel.artifact_bazel_configs(), | |
| ) | |
| self.assertEqual( | |
| ["rusty-v8-upstream-libcxx", "v8-release-compat"], | |
| rusty_v8_bazel.artifact_bazel_configs(["v8-release-compat"]), | |
| ) | |
| self.assertEqual( | |
| ["rusty-v8-upstream-libcxx", "v8-release-compat"], | |
| rusty_v8_bazel.artifact_bazel_configs( | |
| ["rusty-v8-upstream-libcxx", "v8-release-compat"] | |
| ), | |
| ) | |
| def test_bazel_commands_use_shared_buildbuddy_remote_config_library(self) -> None: | |
| with patch.dict(environ, {}, clear=True): | |
| self.assertEqual( | |
| [ | |
| "bazel", | |
| "build", | |
| "//third_party/v8:release", | |
| ], | |
| rusty_v8_bazel.bazel_command( | |
| "build", | |
| "--config=ci-v8", | |
| "//third_party/v8:release", | |
| ), | |
| ) | |
| with patch.dict(environ, {"BUILDBUDDY_API_KEY": "token"}, clear=True): | |
| self.assertEqual( | |
| [ | |
| "bazel", | |
| "build", | |
| "--config=buildbuddy-generic-rbe", | |
| "--remote_header=x-buildbuddy-api-key=token", | |
| "--config=ci-v8", | |
| "//third_party/v8:release", | |
| ], | |
| rusty_v8_bazel.bazel_command( | |
| "build", | |
| "--config=ci-v8", | |
| "//third_party/v8:release", | |
| ), | |
| ) | |
| def test_release_pair_labels_and_staged_names_distinguish_sandbox_artifacts( | |
| self, | |
| ) -> None: | |
| self.assertEqual( | |
| "//third_party/v8:rusty_v8_release_pair_x86_64_unknown_linux_musl", | |
| rusty_v8_bazel.release_pair_label("x86_64-unknown-linux-musl"), | |
| ) | |
| self.assertEqual( | |
| "//third_party/v8:rusty_v8_sandbox_release_pair_x86_64_unknown_linux_musl", | |
| rusty_v8_bazel.release_pair_label( | |
| "x86_64-unknown-linux-musl", sandbox=True | |
| ), | |
| ) | |
| self.assertEqual( | |
| "//third_party/v8:rusty_v8_sandbox_release_pair_x86_64_apple_darwin", | |
| rusty_v8_bazel.release_pair_label("x86_64-apple-darwin", sandbox=True), | |
| ) | |
| self.assertEqual( | |
| "librusty_v8_release_x86_64-unknown-linux-musl.a.gz", | |
| rusty_v8_bazel.staged_archive_name( | |
| "x86_64-unknown-linux-musl", | |
| Path("libv8.a"), | |
| rusty_v8_bazel.RELEASE_ARTIFACT_PROFILE, | |
| ), | |
| ) | |
| self.assertEqual( | |
| "rusty_v8_ptrcomp_sandbox_release_x86_64-pc-windows-msvc.lib.gz", | |
| rusty_v8_bazel.staged_archive_name( | |
| "x86_64-pc-windows-msvc", | |
| Path("v8.a"), | |
| rusty_v8_bazel.SANDBOX_ARTIFACT_PROFILE, | |
| ), | |
| ) | |
| self.assertEqual( | |
| "src_binding_ptrcomp_sandbox_release_x86_64-unknown-linux-musl.rs", | |
| rusty_v8_bazel.staged_binding_name( | |
| "x86_64-unknown-linux-musl", | |
| rusty_v8_bazel.SANDBOX_ARTIFACT_PROFILE, | |
| ), | |
| ) | |
| self.assertEqual( | |
| "rusty_v8_ptrcomp_sandbox_release_x86_64-unknown-linux-musl.sha256", | |
| rusty_v8_bazel.staged_checksums_name( | |
| "x86_64-unknown-linux-musl", | |
| rusty_v8_bazel.SANDBOX_ARTIFACT_PROFILE, | |
| ), | |
| ) | |
| def test_stage_artifacts(self) -> None: | |
| with TemporaryDirectory() as source_dir, TemporaryDirectory() as output_dir: | |
| source_root = Path(source_dir) | |
| archive = source_root / "librusty_v8.a" | |
| binding = source_root / "src_binding.rs" | |
| archive.write_bytes(b"archive") | |
| binding.write_text("binding") | |
| rusty_v8_bazel.stage_artifacts( | |
| "aarch64-apple-darwin", | |
| archive, | |
| binding, | |
| Path(output_dir), | |
| sandbox=True, | |
| ) | |
| self.assertEqual( | |
| { | |
| "librusty_v8_ptrcomp_sandbox_release_aarch64-apple-darwin.a.gz", | |
| "src_binding_ptrcomp_sandbox_release_aarch64-apple-darwin.rs", | |
| "rusty_v8_ptrcomp_sandbox_release_aarch64-apple-darwin.sha256", | |
| }, | |
| {path.name for path in Path(output_dir).iterdir()}, | |
| ) | |
| checksums = ( | |
| Path(output_dir) | |
| / "rusty_v8_ptrcomp_sandbox_release_aarch64-apple-darwin.sha256" | |
| ).read_bytes() | |
| self.assertNotIn(b"\r", checksums) | |
| def test_upstream_release_pair_paths(self) -> None: | |
| self.assertEqual( | |
| ( | |
| Path( | |
| "/tmp/rusty_v8/target/x86_64-apple-darwin/release/gn_out/obj/" | |
| "librusty_v8.a" | |
| ), | |
| Path( | |
| "/tmp/rusty_v8/target/x86_64-apple-darwin/release/gn_out/" | |
| "src_binding.rs" | |
| ), | |
| ), | |
| rusty_v8_bazel.upstream_release_pair_paths( | |
| "x86_64-apple-darwin", | |
| Path("/tmp/rusty_v8/target"), | |
| ), | |
| ) | |
| self.assertEqual( | |
| ( | |
| Path( | |
| "/tmp/rusty_v8/target/x86_64-pc-windows-msvc/release/gn_out/" | |
| "obj/rusty_v8.lib" | |
| ), | |
| Path( | |
| "/tmp/rusty_v8/target/x86_64-pc-windows-msvc/release/gn_out/" | |
| "src_binding.rs" | |
| ), | |
| ), | |
| rusty_v8_bazel.upstream_release_pair_paths( | |
| "x86_64-pc-windows-msvc", | |
| Path("/tmp/rusty_v8/target"), | |
| ), | |
| ) | |
| def test_stage_upstream_release_pair(self) -> None: | |
| with ( | |
| TemporaryDirectory() as target_dir, | |
| TemporaryDirectory() as output_dir, | |
| ): | |
| gn_out = Path(target_dir) / "x86_64-pc-windows-msvc" / "release" / "gn_out" | |
| (gn_out / "obj").mkdir(parents=True) | |
| (gn_out / "obj" / "rusty_v8.lib").write_bytes(b"archive") | |
| (gn_out / "src_binding.rs").write_text("binding") | |
| rusty_v8_bazel.stage_upstream_release_pair( | |
| "x86_64-pc-windows-msvc", | |
| Path(output_dir), | |
| Path(target_dir), | |
| sandbox=True, | |
| ) | |
| self.assertEqual( | |
| { | |
| "rusty_v8_ptrcomp_sandbox_release_x86_64-pc-windows-msvc.lib.gz", | |
| "src_binding_ptrcomp_sandbox_release_x86_64-pc-windows-msvc.rs", | |
| "rusty_v8_ptrcomp_sandbox_release_x86_64-pc-windows-msvc.sha256", | |
| }, | |
| {path.name for path in Path(output_dir).iterdir()}, | |
| ) | |
| def test_ensure_bazel_output_files_rebuilds_existing_outputs(self) -> None: | |
| with TemporaryDirectory() as output_dir: | |
| output = Path(output_dir) / "libv8.a" | |
| output.write_bytes(b"archive") | |
| with ( | |
| patch.object(rusty_v8_bazel, "bazel_build") as bazel_build, | |
| patch.object( | |
| rusty_v8_bazel, | |
| "bazel_output_files", | |
| return_value=[output], | |
| ) as bazel_output_files, | |
| ): | |
| self.assertEqual( | |
| [output], | |
| rusty_v8_bazel.ensure_bazel_output_files( | |
| "macos_arm64", | |
| ["//third_party/v8:pair"], | |
| "opt", | |
| ["rusty-v8-upstream-libcxx"], | |
| ), | |
| ) | |
| bazel_build.assert_called_once_with( | |
| "macos_arm64", | |
| ["//third_party/v8:pair"], | |
| "opt", | |
| ["rusty-v8-upstream-libcxx"], | |
| download_toplevel=True, | |
| ) | |
| bazel_output_files.assert_called_once_with( | |
| "macos_arm64", | |
| ["//third_party/v8:pair"], | |
| "opt", | |
| ["rusty-v8-upstream-libcxx"], | |
| ) | |
| 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", | |
| ) | |
| def test_rusty_v8_http_file_versions(self) -> None: | |
| module_bazel = textwrap.dedent( | |
| """\ | |
| http_file( | |
| name = "rusty_v8_146_4_0_x86_64_unknown_linux_gnu_archive", | |
| downloaded_file_path = "archive.gz", | |
| urls = ["https://example.test/archive.gz"], | |
| ) | |
| http_file( | |
| name = "rusty_v8_147_4_0_x86_64_unknown_linux_gnu_archive", | |
| downloaded_file_path = "new-archive.gz", | |
| urls = ["https://example.test/new-archive.gz"], | |
| ) | |
| http_file( | |
| name = "unrelated_archive", | |
| downloaded_file_path = "other.gz", | |
| urls = ["https://example.test/other.gz"], | |
| ) | |
| """ | |
| ) | |
| self.assertEqual( | |
| ["146.4.0", "147.4.0"], | |
| rusty_v8_module_bazel.rusty_v8_http_file_versions(module_bazel), | |
| ) | |
| if __name__ == "__main__": | |
| unittest.main() | |