mirror of
https://github.com/kevinveenbirkenbach/docker-volume-backup.git
synced 2025-12-27 11:06:35 +00:00
- Replace legacy standalone scripts with a proper src-layout Python package (baudolo backup/restore/configure entrypoints via pyproject.toml) - Remove old scripts/files (backup-docker-to-local.py, recover-docker-from-local.sh, databases.csv.tpl, Todo.md) - Add Dockerfile to build the project image for local/E2E usage - Update Makefile: build image and run E2E via external runner script - Add scripts/test-e2e.sh: - start DinD + dedicated network - recreate DinD data volume (and shared /tmp volume) - pre-pull helper images (alpine-rsync, alpine) - load local baudolo:local image into DinD - run unittest E2E suite inside DinD and abort on first failure - on failure: dump host+DinD diagnostics and archive shared /tmp into artifacts/ - Add artifacts/ debug outputs produced by failing E2E runs (logs, events, tmp archive) https://chatgpt.com/share/694ec23f-0794-800f-9a59-8365bc80f435
37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
import unittest
|
|
from unittest.mock import patch
|
|
|
|
from baudolo.backup.app import requires_stop
|
|
|
|
|
|
class TestRequiresStop(unittest.TestCase):
|
|
@patch("baudolo.backup.app.get_image_info")
|
|
def test_requires_stop_false_when_all_images_are_whitelisted(self, mock_get_image_info):
|
|
# All containers use images containing allowed substrings
|
|
mock_get_image_info.side_effect = [
|
|
"repo/mastodon:v4",
|
|
"repo/wordpress:latest",
|
|
]
|
|
containers = ["c1", "c2"]
|
|
whitelist = ["mastodon", "wordpress"]
|
|
self.assertFalse(requires_stop(containers, whitelist))
|
|
|
|
@patch("baudolo.backup.app.get_image_info")
|
|
def test_requires_stop_true_when_any_image_is_not_whitelisted(self, mock_get_image_info):
|
|
mock_get_image_info.side_effect = [
|
|
"repo/mastodon:v4",
|
|
"repo/nginx:latest",
|
|
]
|
|
containers = ["c1", "c2"]
|
|
whitelist = ["mastodon", "wordpress"]
|
|
self.assertTrue(requires_stop(containers, whitelist))
|
|
|
|
@patch("baudolo.backup.app.get_image_info")
|
|
def test_requires_stop_true_when_whitelist_empty(self, mock_get_image_info):
|
|
mock_get_image_info.return_value = "repo/anything:latest"
|
|
self.assertTrue(requires_stop(["c1"], []))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|