From d032e9607e02436c7c599d4e9a64ab57b3766614 Mon Sep 17 00:00:00 2001 From: Codex Date: Fri, 6 Jun 2025 04:16:46 +0000 Subject: [PATCH] Add tests for parse_repo_url --- tests/test_git_monitor.py | 52 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 tests/test_git_monitor.py diff --git a/tests/test_git_monitor.py b/tests/test_git_monitor.py new file mode 100644 index 0000000..8a286c2 --- /dev/null +++ b/tests/test_git_monitor.py @@ -0,0 +1,52 @@ +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"), + ), + ], +) +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", + "https://gitlabx.com/group/project", + "gitlab.com/group//project", + "github.com/user/repo/extra", + ], +) +def test_parse_repo_url_invalid(url): + assert parse_repo_url(url) == (None, None)