Skip to content

Commit

Permalink
Add server testing utilities that are usable by third parties (#1784)
Browse files Browse the repository at this point in the history
  • Loading branch information
bartfeenstra authored Jul 28, 2024
1 parent 69fe342 commit 32935da
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 34 deletions.
44 changes: 44 additions & 0 deletions betty/test_utils/serve.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
"""
Test utilities for :py:module:`betty.serve`.
"""

from typing import Any

from typing_extensions import override

from betty.locale.localizer import DEFAULT_LOCALIZER
from betty.serve import Server, ProjectServer


class NoOpServer(Server):
"""
A server that does nothing.
"""

def __init__(self, *_: Any, **__: Any):
Server.__init__(self, DEFAULT_LOCALIZER)

@override
@property
def public_url(self) -> str:
return "https://example.com"

@override
async def start(self) -> None:
pass

@override
async def stop(self) -> None:
pass

@override
async def show(self) -> None:
pass


class NoOpProjectServer(NoOpServer, ProjectServer):
"""
A project server that does nothing.
"""

pass
2 changes: 1 addition & 1 deletion betty/tests/cli/commands/test_demo.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

from pytest_mock import MockerFixture

from betty.tests.cli.test___init__ import NoOpServer
from betty.test_utils.cli import run
from betty.test_utils.serve import NoOpServer


class TestDemo:
Expand Down
2 changes: 1 addition & 1 deletion betty/tests/cli/commands/test_docs.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
from pytest_mock import MockerFixture

from betty.app import App
from betty.tests.cli.test___init__ import NoOpServer
from betty.test_utils.cli import run
from betty.test_utils.serve import NoOpServer


class TestDocs:
Expand Down
2 changes: 1 addition & 1 deletion betty/tests/cli/commands/test_serve.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from betty.config import write_configuration_file
from betty.project import Project
from betty.test_utils.cli import run
from betty.tests.cli.test___init__ import NoOpProjectServer
from betty.test_utils.serve import NoOpProjectServer


class TestServe:
Expand Down
30 changes: 0 additions & 30 deletions betty/tests/cli/test___init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,15 @@
from asyncio import to_thread
from collections.abc import AsyncIterator
from logging import CRITICAL, ERROR, WARNING, INFO, DEBUG, FATAL, WARN, NOTSET
from typing import Any

import pytest
from betty.app import App
from betty.cli import _ClickHandler
from betty.cli.commands import command, Command
from betty.config import write_configuration_file
from betty.locale.localizer import DEFAULT_LOCALIZER
from betty.plugin.static import StaticPluginRepository
from betty.project import Project
from betty.serve import Server, ProjectServer
from pytest_mock import MockerFixture
from typing_extensions import override

from betty.test_utils.cli import run

Expand Down Expand Up @@ -54,32 +50,6 @@ async def test(self, new_temporary_app: App) -> None:
assert "Betty" in result.stdout


class NoOpServer(Server):
def __init__(self, *_: Any, **__: Any):
Server.__init__(self, DEFAULT_LOCALIZER)

@override
@property
def public_url(self) -> str:
return "https://example.com"

@override
async def start(self) -> None:
pass

@override
async def stop(self) -> None:
pass

@override
async def show(self) -> None:
pass


class NoOpProjectServer(NoOpServer, ProjectServer):
pass


class TestUnknownCommand:
async def test(self) -> None:
await to_thread(run, "unknown-command", expected_exit_code=2)
Expand Down
1 change: 1 addition & 0 deletions betty/tests/coverage/test_coverage.py
Original file line number Diff line number Diff line change
Expand Up @@ -790,6 +790,7 @@ class TestKnownToBeMissing:
"betty/test_utils/model/event_type.py": TestKnownToBeMissing,
"betty/test_utils/plugin/__init__.py": TestKnownToBeMissing,
"betty/test_utils/project/extension/__init__.py": TestKnownToBeMissing,
"betty/test_utils/serve.py": TestKnownToBeMissing,
},
"betty/typing.py": {
"Void": TestKnownToBeMissing,
Expand Down
2 changes: 1 addition & 1 deletion betty/tests/extension/nginx/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
from betty.config import write_configuration_file
from betty.extension.nginx import Nginx
from betty.project import Project
from betty.tests.cli.test___init__ import NoOpServer
from betty.test_utils.cli import run
from betty.test_utils.serve import NoOpServer


class TestServe:
Expand Down

0 comments on commit 32935da

Please sign in to comment.