test_redirects.py


Tests the redirects plugin


Function

set_directory function

context manager to set the directory

set_directory source


def set_directory(path):
    """
    context manager to set the directory
    """
    cwd = Path.cwd()
    try:
        os.chdir(path)
        yield
    finally:
        os.chdir(cwd)

Function

test_redirect_exists function

ensure that the default workflow works

test_redirect_exists source


def test_redirect_exists(tmp_files: Path, old: str, new: str) -> None:
    "ensure that the default workflow works"
    with set_directory(tmp_files):
        m = Markata()
        redirects.save(m)
        redirect_file = Path("markout") / old / "index.html"
        assert redirect_file.exists()
        assert (
            f'<meta http-equiv="Refresh" content="0; url=\'{new}\'" />'
            in redirect_file.read_text()
        )

Function

test_redirect_ignore_splat function

splats cannot be supported statically, test that they are ignored

test_redirect_ignore_splat source


def test_redirect_ignore_splat(tmp_files: Path, old: str) -> None:
    "splats cannot be supported statically, test that they are ignored"
    with set_directory(tmp_files):
        m = Markata()
        redirects.save(m)
        redirect_file = Path("markout") / old / "index.html"
        assert not redirect_file.exists()

Function

test_redirect_ignore_more_params function

status codes cannot be supported statically as they are issued by the server

test_redirect_ignore_more_params source


def test_redirect_ignore_more_params(tmp_files: Path, old: str) -> None:
    "status codes cannot be supported statically as they are issued by the server"
    with set_directory(tmp_files):
        m = Markata()
        redirects.save(m)
        redirect_file = Path("markout") / old / "index.html"
        assert not redirect_file.exists()

Function

test_redirect_configure_redirect_file function

ensure that the redirects file can be configured

test_redirect_configure_redirect_file source


def test_redirect_configure_redirect_file(
    tmp_files: Path, redirect_file: str, old: str, new: str
) -> None:
    "ensure that the redirects file can be configured"
    with set_directory(tmp_files):
        m = Markata()
        m.config["redirects"] = redirect_file
        redirects.save(m)
        redirect_html = Path("markout") / old / "index.html"
        assert redirect_html.exists()
        assert (
            f'<meta http-equiv="Refresh" content="0; url=\'{new}\'" />'
            in redirect_html.read_text()
        )

Function

test_redirect_custom_template function

ensure the template can be configured

test_redirect_custom_template source


def test_redirect_custom_template(
    tmp_files: Path, redirect_template: str, old: str, new: str
) -> None:
    "ensure the template can be configured"
    with set_directory(tmp_files):
        m = Markata()
        m.config["redirect_template"] = redirect_template
        redirects.save(m)
        redirect_file = Path("markout") / old / "index.html"
        assert redirect_file.exists()
        assert f"{old} is now {new}" in redirect_file.read_text()

Function

test_redirect_empty function

ensure empty redirects files work

test_redirect_empty source


def test_redirect_empty(tmp_files: Path, old: str, new: str) -> None:
    "ensure empty redirects files work"
    with set_directory(tmp_files):
        m = Markata()
        redirects.save(m)

Function

test_redirect_file_missing function

ensure missing redirects file works

test_redirect_file_missing source


def test_redirect_file_missing(tmpdir: Path) -> None:
    "ensure missing redirects file works"
    with set_directory(tmpdir):
        m = Markata()
        redirects.save(m)