This commit is contained in:
2026-08-10 13:36:44 +02:00
commit c3865d8c72
6 changed files with 359 additions and 0 deletions
+91
View File
@@ -0,0 +1,91 @@
import json
import tempfile
import unittest
from pathlib import Path
from unittest.mock import patch
from scripts import update_librewolf
class VersionOrderingTest(unittest.TestCase):
def test_patch_release_is_newer_than_rebuild_without_patch(self) -> None:
self.assertLess(
update_librewolf.version_key("153.0-3"),
update_librewolf.version_key("153.0.1-1"),
)
def test_cask_and_release_versions_have_same_ordering(self) -> None:
self.assertEqual(
update_librewolf.version_key("153.0.3,1"),
update_librewolf.version_key("153.0.3-1"),
)
class StableReleaseTest(unittest.TestCase):
@patch.object(update_librewolf, "fetch")
def test_prerelease_is_rejected(self, fetch) -> None:
fetch.return_value = json.dumps(
{
"tag_name": "154.0-1",
"draft": False,
"prerelease": True,
}
).encode()
with self.assertRaisesRegex(ValueError, "not stable"):
update_librewolf.latest_stable_release()
class CaskUpdateTest(unittest.TestCase):
CASK = '''cask "librewolf" do
version "152.0.6,1"
sha256 arm: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
intel: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
arm64_linux: "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
x86_64_linux: "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
end
'''
CHECKSUMS = {
"arm": "1" * 64,
"intel": "2" * 64,
"arm64_linux": "3" * 64,
"x86_64_linux": "4" * 64,
}
@patch.object(update_librewolf, "release_checksums")
@patch.object(update_librewolf, "latest_stable_release")
def test_new_stable_release_updates_version_and_all_hashes(
self, latest_stable_release, release_checksums
) -> None:
latest_stable_release.return_value = {"stable_tag": "153.0.3-1"}
release_checksums.return_value = self.CHECKSUMS
with tempfile.TemporaryDirectory() as directory:
cask = Path(directory) / "librewolf.rb"
cask.write_text(self.CASK)
self.assertTrue(update_librewolf.update_cask(cask))
updated = cask.read_text()
self.assertIn('version "153.0.3,1"', updated)
for checksum in self.CHECKSUMS.values():
self.assertIn(checksum, updated)
@patch.object(update_librewolf, "release_checksums")
@patch.object(update_librewolf, "latest_stable_release")
def test_older_release_does_not_downgrade_cask(
self, latest_stable_release, release_checksums
) -> None:
latest_stable_release.return_value = {"stable_tag": "151.0.3-1"}
with tempfile.TemporaryDirectory() as directory:
cask = Path(directory) / "librewolf.rb"
cask.write_text(self.CASK)
self.assertFalse(update_librewolf.update_cask(cask))
self.assertEqual(cask.read_text(), self.CASK)
release_checksums.assert_not_called()
if __name__ == "__main__":
unittest.main()