discordbot/tests/test_git_monitor.py
Slipstream 5cbece7420 Add Gitea support to git monitor (#9)
Adds polling and URL parsing support for gitea repositories.

Reviewed-on: #9
Co-authored-by: Slipstream <me@slipstreamm.dev>
Co-committed-by: Slipstream <me@slipstreamm.dev>
2025-06-11 13:07:04 -06:00

54 lines
1.8 KiB
Python

import os
import sys
import pytest
# Ensure the project root is on sys.path so we can import modules
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from cogs.git_monitor_cog import parse_repo_url
@pytest.mark.parametrize(
"url,expected",
[
("https://github.com/user/repo", ("github", "user/repo")),
("http://github.com/user/repo", ("github", "user/repo")),
("github.com/user/repo", ("github", "user/repo")),
("https://www.github.com/user/repo/", ("github", "user/repo")),
("https://github.com/user/repo.git", ("github", "user/repo")),
("https://github.com/user-name/re.po", ("github", "user-name/re.po")),
("https://gitlab.com/group/project", ("gitlab", "group/project")),
(
"https://gitlab.com/group/subgroup/project",
("gitlab", "group/subgroup/project"),
),
("gitlab.com/group/subgroup/project.git", ("gitlab", "group/subgroup/project")),
(
"http://www.gitlab.com/group/subgroup/project/",
("gitlab", "group/subgroup/project"),
),
("https://gitea.com/user/repo", ("gitea", "user/repo")),
("https://git.example.com/org/repo", ("gitea", "org/repo")),
],
)
def test_parse_repo_url_valid(url, expected):
assert parse_repo_url(url) == expected
@pytest.mark.parametrize(
"url",
[
"https://github.com/",
"https://github.com/user",
"https://gitlab.com/",
"https://gitlab.com/group",
"ftp://github.com/user/repo",
"http:/github.com/user/repo",
"not a url",
"gitlab.com/group//project",
"github.com/user/repo/extra",
],
)
def test_parse_repo_url_invalid(url):
assert parse_repo_url(url) == (None, None)