blob: 6fc94a78b86a5e0cceaaf45d7c2ceaa035bedded [file]
#!/usr/bin/env fuchsia-vendored-python
# Copyright 2026 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Unit tests for bazel_invocation.py."""
import unittest
from pathlib import Path
from build.bazel.scripts import bazel_invocation as bi
class SocketEnvVarsTest(unittest.TestCase):
def test_empty_sockets(self) -> None:
self.assertEqual(bi.socket_env_vars(), {})
def test_rbe_socket_only(self) -> None:
env = bi.socket_env_vars(rbe_socket=Path("/tmp/fake-rbe.sock"))
self.assertEqual(
env,
{
bi.ENV_BAZEL_RBE_SOCKET: "/tmp/fake-rbe.sock",
},
)
def test_resultstore_socket_only(self) -> None:
env = bi.socket_env_vars(resultstore_socket="/tmp/fake-rs.sock")
self.assertEqual(
env,
{
bi.ENV_BAZEL_RESULTSTORE_SOCKET: "/tmp/fake-rs.sock",
},
)
def test_both_sockets(self) -> None:
env = bi.socket_env_vars(
rbe_socket="/tmp/fake-rbe.sock",
resultstore_socket="/tmp/fake-rs.sock",
)
self.assertEqual(
env,
{
bi.ENV_BAZEL_RBE_SOCKET: "/tmp/fake-rbe.sock",
bi.ENV_BAZEL_RESULTSTORE_SOCKET: "/tmp/fake-rs.sock",
},
)
class ResultStoreBazelConfigTest(unittest.TestCase):
def test_valid_resultstore_configs(self) -> None:
self.assertEqual(
bi.VALID_RESULTSTORE_CONFIGS,
frozenset({bi.CONFIG_RESULTSTORE, bi.CONFIG_RESULTSTORE_INFRA}),
)
def test_disabled(self) -> None:
self.assertIsNone(
bi.resultstore_bazel_config("none", "loas", in_infra=False)
)
self.assertIsNone(
bi.resultstore_bazel_config("ninja", "loas", in_infra=False)
)
def test_developer_loas(self) -> None:
self.assertEqual(
bi.resultstore_bazel_config("bazel", "loas", in_infra=False),
bi.CONFIG_RESULTSTORE,
)
self.assertEqual(
bi.resultstore_bazel_config("all", "loas", in_infra=False),
bi.CONFIG_RESULTSTORE,
)
def test_developer_oauth(self) -> None:
self.assertEqual(
bi.resultstore_bazel_config("bazel", "oauth", in_infra=False),
bi.CONFIG_RESULTSTORE_INFRA,
)
def test_infra_loas(self) -> None:
self.assertEqual(
bi.resultstore_bazel_config("all", "loas", in_infra=True),
bi.CONFIG_RESULTSTORE_INFRA,
)
self.assertEqual(
bi.resultstore_bazel_config("bazel", "loas", in_infra=True),
bi.CONFIG_RESULTSTORE_INFRA,
)
class EnabledBazelResultStoreTest(unittest.TestCase):
def test_modes(self) -> None:
self.assertTrue(bi._enabled_bazel_resultstore("all"))
self.assertTrue(bi._enabled_bazel_resultstore("bazel"))
self.assertFalse(bi._enabled_bazel_resultstore("ninja"))
self.assertFalse(bi._enabled_bazel_resultstore("none"))
self.assertFalse(bi._enabled_bazel_resultstore(""))
class NeedsGcertauthTest(unittest.TestCase):
def test_loas_rbe(self) -> None:
self.assertTrue(bi._needs_gcertauth("loas", "none"))
def test_loas_resultstore(self) -> None:
self.assertTrue(bi._needs_gcertauth("none", "loas"))
def test_loas_both(self) -> None:
self.assertTrue(bi._needs_gcertauth("loas", "loas"))
def test_neither_loas(self) -> None:
self.assertFalse(bi._needs_gcertauth("oauth", "oauth"))
self.assertFalse(bi._needs_gcertauth("machine", "machine"))
self.assertFalse(bi._needs_gcertauth("none", "none"))
class GenerateBazelrcTest(unittest.TestCase):
def test_service_proxies_empty(self) -> None:
self.assertEqual(list(bi.generate_service_proxies_bazelrc({})), [])
def test_service_proxies_rbe(self) -> None:
lines = list(
bi.generate_service_proxies_bazelrc(
{bi.ENV_BAZEL_RBE_SOCKET: "/tmp/fake-rbe.sock"}
)
)
self.assertEqual(
lines,
[
f"build:{bi.CONFIG_REMOTE_COMMON} --remote_proxy=unix:///tmp/fake-rbe.sock"
],
)
def test_service_proxies_resultstore(self) -> None:
lines = list(
bi.generate_service_proxies_bazelrc(
{bi.ENV_BAZEL_RESULTSTORE_SOCKET: "/tmp/fake-rs.sock"}
)
)
self.assertEqual(
lines,
[
f"build:{bi.CONFIG_RESULTSTORE_COMMON} --bes_proxy=unix:///tmp/fake-rs.sock"
],
)
def test_generate_auth_bazelrc_loas(self) -> None:
lines = list(bi.generate_auth_bazelrc("loas", "none"))
self.assertEqual(
lines,
[f"build:{bi.CONFIG_REMOTE_COMMON} --config={bi.CONFIG_GCERTAUTH}"],
)
def test_generate_auth_bazelrc_non_loas(self) -> None:
self.assertEqual(list(bi.generate_auth_bazelrc("oauth", "none")), [])
self.assertEqual(list(bi.generate_auth_bazelrc("none", "none")), [])
if __name__ == "__main__":
unittest.main()