Files
werkrevisor/tests/test_release_tools.py
claude-code 6418abe71d
werkator build succeeded after 00:39
werkator/werkrevisor-statistics build succeeded after 00:31
werkrevisor 0.31.3: release tools keep only the two newest archives (#69)
Co-authored-by: claude-code <claude-code@javagil.de>
2026-10-10 00:10:59 +02:00

37 lines
1.5 KiB
Python

import importlib.util
import os
import unittest
from tests.fakes import ROOT
spec = importlib.util.spec_from_file_location("release_files", os.path.join(ROOT, "tools", "release_files.py"))
release_files = importlib.util.module_from_spec(spec)
spec.loader.exec_module(release_files)
def archive(version):
return f"werkrevisor-rootfs-{version}.tar.zst"
class ReleaseToolsTest(unittest.TestCase):
def test_keep_newest_keeps_the_two_highest_versions(self):
"""Scenario#69.01"""
names = [archive(v) for v in ("0.9.0", "0.31.2", "0.30.1", "0.31.0", "0.31.1")]
self.assertEqual(release_files.to_remove(names), [archive("0.31.0"), archive("0.30.1"), archive("0.9.0")])
tags = ["werkrevisor:0.31.1", "werkrevisor:0.9.0", "werkrevisor:0.31.2", "werkrevisor:latest"]
self.assertEqual(release_files.to_remove(tags), ["werkrevisor:0.9.0"])
def test_an_archive_in_use_is_never_removed(self):
"""Scenario#69.02"""
names = [archive(v) for v in ("0.30.0", "0.31.0", "0.31.1", "0.31.2")]
self.assertEqual(release_files.to_remove(names, 2, [archive("0.30.0")]), [archive("0.31.0")])
def test_backups_without_a_version_stay(self):
names = [".werkator.yml.bak-before-slim", ".werkator.yml.bak-before-0.31.0",
".werkator.yml.bak-before-0.31.1", ".werkator.yml.bak-before-0.30.1"]
self.assertEqual(release_files.to_remove(names), [".werkator.yml.bak-before-0.30.1"])
if __name__ == "__main__":
unittest.main()