92 lines
3.1 KiB
Python
92 lines
3.1 KiB
Python
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()
|