1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
# 3rd party
import pytest
from apeye.requests_url import RequestsURL
# this package
from sphinx_toolbox.config import InvalidOptionError, MissingOptionError, validate_config
from tests.common import AttrDict
def test_validate_config():
config = AttrDict({
"source_link_target": "Sphinx",
"github_username": "sphinx-toolbox",
"github_repository": "sphinx-toolbox",
"rst_prolog": '',
})
validate_config(None, config) # type: ignore[arg-type]
assert config == {
"source_link_target": "sphinx",
"github_username": "sphinx-toolbox",
"github_repository": "sphinx-toolbox",
"github_url": RequestsURL("https://github.com/sphinx-toolbox/sphinx-toolbox"),
"github_source_url": RequestsURL("https://github.com/sphinx-toolbox/sphinx-toolbox/blob/master"),
"github_issues_url": RequestsURL("https://github.com/sphinx-toolbox/sphinx-toolbox/issues"),
"github_pull_url": RequestsURL("https://github.com/sphinx-toolbox/sphinx-toolbox/pull"),
"rst_prolog": "\n\n.. |nbsp| unicode:: 0xA0\n :trim:",
}
config = AttrDict({
"source_link_target": "Sphinx",
"github_username": None,
"github_repository": "sphinx-toolbox",
})
with pytest.raises(MissingOptionError, match="The 'github_username' option is required."):
validate_config(None, config) # type: ignore[arg-type]
config = AttrDict({
"source_link_target": "Sphinx",
"github_username": "sphinx-toolbox",
"github_repository": None,
})
with pytest.raises(MissingOptionError, match="The 'github_repository' option is required."):
validate_config(None, config) # type: ignore[arg-type]
config = AttrDict({
"source_link_target": "bananas",
"github_username": "sphinx-toolbox",
"github_repository": "sphinx-toolbox",
})
with pytest.raises(InvalidOptionError, match="Invalid value for 'source_link_target'."):
validate_config(None, config) # type: ignore[arg-type]
@pytest.mark.parametrize(
"target, expects",
[
("Sphinx", "sphinx"),
("sphinx", "sphinx"),
("GitHub", "github"),
("Github", "github"),
("github", "github"),
]
)
def test_source_link_target(target: str, expects: str):
config = AttrDict({
"source_link_target": target,
"github_username": "sphinx-toolbox",
"github_repository": "sphinx-toolbox",
"rst_prolog": '',
})
validate_config(None, config) # type: ignore[arg-type]
assert config.source_link_target == expects
|