You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
spiel/tests/conftest.py

69 lines
1.3 KiB
Python

import os
from io import StringIO
from pathlib import Path
from textwrap import dedent
import pytest
from hypothesis import settings
from rich.console import Console
from typer.testing import CliRunner
from spiel import Deck, Slide
from spiel.constants import DECK
settings.register_profile("default", deadline=None)
settings.load_profile(os.getenv("HYPOTHESIS_PROFILE", "default"))
@pytest.fixture
def runner() -> CliRunner:
return CliRunner()
@pytest.fixture
def three_slide_deck() -> Deck:
deck = Deck(name="three-slides", default_transition=None)
deck.add_slides(Slide(), Slide(), Slide())
return deck
@pytest.fixture
def output() -> StringIO:
return StringIO()
@pytest.fixture
def console(output: StringIO) -> Console:
return Console(
file=output,
force_terminal=True,
width=80,
)
@pytest.fixture
def empty_deck_source() -> str:
return dedent(
f"""\
from spiel import Deck
{DECK} = Deck(name="deck")
"""
)
@pytest.fixture
def empty_file(tmp_path: Path) -> Path:
file = tmp_path / "test_deck.py"
file.touch()
return file
@pytest.fixture
def file_with_empty_deck(empty_file: Path, empty_deck_source: str) -> Path:
empty_file.write_text(empty_deck_source)
return empty_file