Files
sbp/tests/test_net.py
T

45 lines
1.3 KiB
Python

import unittest
from unittest import mock
from sbp import net
ASSETS = [
{"name": "sing-box-1.14.4-linux-amd64-musl.tar.gz"},
{"name": "sing-box-1.14.4-linux-amd64.tar.gz"},
{"name": "sing-box-1.14.4-linux-arm64.tar.gz"},
{"name": "sing-box-1.14.4-linux-amd64.deb"},
]
def pick(machine: str, libc: tuple[str, str]) -> str:
with mock.patch("platform.machine", return_value=machine), mock.patch(
"platform.libc_ver", return_value=libc
):
return net.asset_for(ASSETS, "v1.14.4")["name"]
class AssetTest(unittest.TestCase):
def test_glibc_prefers_plain_build(self) -> None:
self.assertEqual(pick("x86_64", ("glibc", "2.36")), "sing-box-1.14.4-linux-amd64.tar.gz")
def test_musl_prefers_musl_build(self) -> None:
self.assertEqual(
pick("x86_64", ("musl", "1.2")), "sing-box-1.14.4-linux-amd64-musl.tar.gz"
)
def test_arm64_maps_to_arm64(self) -> None:
self.assertEqual(pick("aarch64", ("glibc", "2.36")), "sing-box-1.14.4-linux-arm64.tar.gz")
def test_unknown_arch_fails(self) -> None:
with self.assertRaises(Exception):
pick("riscv64", ("glibc", "2.36"))
class DigestTest(unittest.TestCase):
def test_missing_digest_is_not_verified(self) -> None:
self.assertFalse(net.verify_digest(__file__, {}))
if __name__ == "__main__":
unittest.main()