Bump the package and runtime version to 1.1.0, add release notes for the UI-focused control panel update, and refresh version assertions for the CLI entrypoint. Refs 1.1
64 lines
2.5 KiB
Python
64 lines
2.5 KiB
Python
from __future__ import annotations
|
|
|
|
from io import StringIO
|
|
from unittest.mock import patch
|
|
|
|
from django.test import SimpleTestCase
|
|
|
|
from pobsync.cli import main
|
|
|
|
|
|
class ConsoleEntrypointTests(SimpleTestCase):
|
|
def test_version_prints_package_version(self) -> None:
|
|
stdout = StringIO()
|
|
with patch("sys.stdout", stdout):
|
|
exit_code = main(["--version"])
|
|
|
|
self.assertEqual(exit_code, 0)
|
|
self.assertEqual(stdout.getvalue().strip(), "pobsync 1.1.0")
|
|
|
|
def test_maps_backup_alias_to_django_command(self) -> None:
|
|
with patch("pobsync.cli.execute_from_command_line") as execute:
|
|
exit_code = main(["backup", "web-01", "--dry-run"])
|
|
|
|
self.assertEqual(exit_code, 0)
|
|
execute.assert_called_once_with(["pobsync", "run_pobsync_backup", "web-01", "--dry-run"])
|
|
|
|
def test_unknown_command_returns_usage_error(self) -> None:
|
|
stderr = StringIO()
|
|
with patch("sys.stderr", stderr):
|
|
exit_code = main(["run-scheduled", "web-01"])
|
|
|
|
self.assertEqual(exit_code, 2)
|
|
self.assertIn("Unknown pobsync command", stderr.getvalue())
|
|
|
|
def test_django_passthrough_keeps_management_command_name(self) -> None:
|
|
with patch("pobsync.cli.execute_from_command_line") as execute:
|
|
exit_code = main(["django", "check"])
|
|
|
|
self.assertEqual(exit_code, 0)
|
|
execute.assert_called_once_with(["pobsync", "check"])
|
|
|
|
def test_maps_discover_snapshots_alias_to_django_command(self) -> None:
|
|
with patch("pobsync.cli.execute_from_command_line") as execute:
|
|
exit_code = main(["discover-snapshots", "--host", "web-01"])
|
|
|
|
self.assertEqual(exit_code, 0)
|
|
execute.assert_called_once_with(["pobsync", "discover_pobsync_snapshots", "--host", "web-01"])
|
|
|
|
def test_maps_worker_alias_to_django_command(self) -> None:
|
|
with patch("pobsync.cli.execute_from_command_line") as execute:
|
|
exit_code = main(["worker", "--once"])
|
|
|
|
self.assertEqual(exit_code, 0)
|
|
execute.assert_called_once_with(["pobsync", "run_pobsync_worker", "--once"])
|
|
|
|
def test_configuration_aliases_are_not_public_commands(self) -> None:
|
|
stderr = StringIO()
|
|
with patch("sys.stderr", stderr):
|
|
exit_code = main(["schedule", "web-01", "--cron", "15 2 * * *"])
|
|
|
|
self.assertEqual(exit_code, 2)
|
|
self.assertIn("Unknown pobsync command", stderr.getvalue())
|
|
self.assertIn("pobsync django <management-command>", stderr.getvalue())
|