37 lines
1.5 KiB
Python
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()
|