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()