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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
"""Shortening url tests."""
from urllib.parse import urlparse
import pytest
from pydata_sphinx_theme.short_link import ShortenLinkTransform
class Mock:
"""mock object."""
pass
@pytest.mark.parametrize(
"platform,url,expected",
[
# TODO, I belive this is wrong as both github.com and github.com/github
# shorten to just github.
("github", "https://github.com", "github"),
("github", "https://github.com/github", "github"),
("github", "https://github.com/pydata", "pydata"),
(
"github",
"https://github.com/pydata/pydata-sphinx-theme",
"pydata/pydata-sphinx-theme",
),
(
"github",
"https://github.com/pydata/pydata-sphinx-theme/pull/1012",
"pydata/pydata-sphinx-theme#1012",
),
# TODO, I belive this is wrong as both orgs/pydata/projects/2 and
# pydata/projects/issue/2 shorten to the same
("github", "https://github.com/orgs/pydata/projects/2", "pydata/projects#2"),
("github", "https://github.com/pydata/projects/pull/2", "pydata/projects#2"),
# issues and pulls are athe same, so it's ok to normalise to the same here
("github", "https://github.com/pydata/projects/issues/2", "pydata/projects#2"),
# Gitlab
("gitlab", "https://gitlab.com/tezos/tezos/-/issues", "tezos/tezos/issues"),
("gitlab", "https://gitlab.com/tezos/tezos/issues", "tezos/tezos/issues"),
(
"gitlab",
"https://gitlab.com/gitlab-org/gitlab/-/issues/375583",
"gitlab-org/gitlab#375583",
),
(
# TODO, non canonical url, discuss if should maybe be shortened to
# gitlab-org/gitlab#375583
"gitlab",
"https://gitlab.com/gitlab-org/gitlab/issues/375583",
"gitlab-org/gitlab/issues/375583",
),
(
"gitlab",
"https://gitlab.com/gitlab-org/gitlab/-/issues/",
"gitlab-org/gitlab/issues",
),
(
# TODO, non canonical url, discuss if should maybe be shortened to
# gitlab-org/gitlab/issues (no trailing slash)
"gitlab",
"https://gitlab.com/gitlab-org/gitlab/issues/",
"gitlab-org/gitlab/issues/",
),
(
"gitlab",
"https://gitlab.com/gitlab-org/gitlab/-/issues",
"gitlab-org/gitlab/issues",
),
(
"gitlab",
"https://gitlab.com/gitlab-org/gitlab/issues",
"gitlab-org/gitlab/issues",
),
(
"gitlab",
"https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84669",
"gitlab-org/gitlab!84669",
),
(
"gitlab",
"https://gitlab.com/gitlab-org/gitlab/-/pipelines/511894707",
"gitlab-org/gitlab/-/pipelines/511894707",
),
(
"gitlab",
"https://gitlab.com/gitlab-com/gl-infra/production/-/issues/6788",
"gitlab-com/gl-infra/production#6788",
),
],
)
def test_shorten(platform, url, expected):
"""Unit test for url shortening.
Usually you also want a build test in `test_build.py`
"""
document = Mock()
document.settings = Mock()
document.settings.language_code = "en"
document.reporter = None
sl = ShortenLinkTransform(document)
sl.platform = platform
URI = urlparse(url)
assert sl.parse_url(URI) == expected
|