mirror of
https://github.com/tj/git-extras.git
synced 2026-09-10 07:26:17 -04:00
test(git-browse): add unit tests (#1127)
* chore: add the dependency testpath@0.6.0 * test(git-browse): add unit tests * fix: update origin name to `tj/git-extras`
This commit is contained in:
parent
9049967232
commit
b54d8c7c50
3
.github/workflows/ci.yml
vendored
3
.github/workflows/ci.yml
vendored
|
|
@ -50,8 +50,7 @@ jobs:
|
|||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install pytest==7.4.0
|
||||
pip install GitPython==3.1.40
|
||||
pip install pytest==7.4.0 GitPython==3.1.40 testpath==0.6.0
|
||||
- name: Unit test
|
||||
run: make test
|
||||
|
||||
|
|
|
|||
16
tests/poetry.lock
generated
16
tests/poetry.lock
generated
|
|
@ -110,7 +110,21 @@ files = [
|
|||
{file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "testpath"
|
||||
version = "0.6.0"
|
||||
description = "Test utilities for code working with files and commands"
|
||||
optional = false
|
||||
python-versions = ">= 3.5"
|
||||
files = [
|
||||
{file = "testpath-0.6.0-py3-none-any.whl", hash = "sha256:8ada9f80a2ac6fb0391aa7cdb1a7d11cfa8429f693eda83f74dde570fe6fa639"},
|
||||
{file = "testpath-0.6.0.tar.gz", hash = "sha256:2f1b97e6442c02681ebe01bd84f531028a7caea1af3825000f52345c30285e0f"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
test = ["pytest"]
|
||||
|
||||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.11"
|
||||
content-hash = "74f2edc4f13d417cf488f33b42f1e0ef99293b4ddf0bf951c22cf671793c203a"
|
||||
content-hash = "b7e7874dbe3c45aaa4d22378531624f0900b4c86600fbcb4b323ad5eaf616ca1"
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ readme = "README.md"
|
|||
python = "^3.11"
|
||||
pytest = "7.4"
|
||||
gitpython = "3.1.40"
|
||||
testpath = "0.6.0"
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
minversion = "7.4"
|
||||
|
|
|
|||
231
tests/test_git_browse.py
Normal file
231
tests/test_git_browse.py
Normal file
|
|
@ -0,0 +1,231 @@
|
|||
import os, subprocess
|
||||
from testpath import MockCommand, modified_env
|
||||
|
||||
github_origin = "https://github.com/tj/git-extras"
|
||||
gitlab_origin = "https://gitlab.com/tj/git-extras"
|
||||
bitbucket_origin = "https://bitbucket.org/tj/git-extras"
|
||||
unknown_site_origin = "https://unknown-site.com/tj/git-extras"
|
||||
|
||||
def set_origin_url(git, url):
|
||||
git.remote("set-url", "origin", url + ".git")
|
||||
|
||||
def create_expected_filename(git, origin, mode, filename):
|
||||
commit_hash = git.rev_parse("HEAD")
|
||||
connector = ""
|
||||
if mode == "github":
|
||||
connector = "/blob/"
|
||||
if mode == "gitlab":
|
||||
connector = "/-/blob/"
|
||||
if mode == "bitbucket":
|
||||
connector = "/src/"
|
||||
return origin + connector + commit_hash + filename
|
||||
|
||||
class TestGitBrowse:
|
||||
def test_browse_github_file_on_mac(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
git.remote("add", "origin", github_origin + ".git")
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "darwin" }):
|
||||
with MockCommand("open") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:])
|
||||
expected_url = create_expected_filename(git, github_origin, "github", tmp_file)
|
||||
openCommand.assert_called([expected_url])
|
||||
|
||||
def test_browse_gitlab_file_on_mac(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, gitlab_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "darwin" }):
|
||||
with MockCommand("open") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:])
|
||||
expected_url = create_expected_filename(git, gitlab_origin, "gitlab", tmp_file)
|
||||
openCommand.assert_called([expected_url])
|
||||
|
||||
def test_browse_bitbucket_file_on_mac(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, bitbucket_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "darwin" }):
|
||||
with MockCommand("open") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:])
|
||||
expected_url = create_expected_filename(git, bitbucket_origin, "bitbucket", tmp_file)
|
||||
openCommand.assert_called([expected_url])
|
||||
|
||||
def test_browse_github_file_on_git_bash_on_window(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, github_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "msys" }):
|
||||
with MockCommand("start") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:])
|
||||
expected_url = create_expected_filename(git, github_origin, "github", tmp_file)
|
||||
openCommand.assert_called([expected_url])
|
||||
|
||||
def test_browse_gitlab_file_on_git_bash_on_window(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, gitlab_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "msys" }):
|
||||
with MockCommand("start") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:])
|
||||
expected_url = create_expected_filename(git, gitlab_origin, "gitlab", tmp_file)
|
||||
openCommand.assert_called([expected_url])
|
||||
|
||||
def test_browse_bitbucket_file_on_git_bash_on_window(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, bitbucket_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "msys" }):
|
||||
with MockCommand("start") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:])
|
||||
expected_url = create_expected_filename(git, bitbucket_origin, "bitbucket", tmp_file)
|
||||
openCommand.assert_called([expected_url])
|
||||
|
||||
def test_browse_github_file_on_WSL_with_microsoft_key(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, github_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "linux" }):
|
||||
with MockCommand.fixed_output("uname", "microsoft"):
|
||||
with MockCommand.fixed_output("command", "/powershell.exe"):
|
||||
with MockCommand("powershell.exe") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:])
|
||||
expected_url = create_expected_filename(git, github_origin, "github", tmp_file)
|
||||
openCommand.assert_called(["-NoProfile", "start", expected_url])
|
||||
|
||||
def test_browse_gitlab_file_on_WSL_with_microsoft_key(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, gitlab_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "linux" }):
|
||||
with MockCommand.fixed_output("uname", "microsoft"):
|
||||
with MockCommand.fixed_output("command", "/powershell.exe"):
|
||||
with MockCommand("powershell.exe") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:])
|
||||
expected_url = create_expected_filename(git, gitlab_origin, "gitlab", tmp_file)
|
||||
openCommand.assert_called(["-NoProfile", "start", expected_url])
|
||||
|
||||
def test_browse_bitbucket_file_on_WSL_with_microsoft_key(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, bitbucket_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "linux" }):
|
||||
with MockCommand.fixed_output("uname", "microsoft"):
|
||||
with MockCommand.fixed_output("command", "/powershell.exe"):
|
||||
with MockCommand("powershell.exe") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:])
|
||||
expected_url = create_expected_filename(git, bitbucket_origin, "bitbucket", tmp_file)
|
||||
openCommand.assert_called(["-NoProfile", "start", expected_url])
|
||||
|
||||
def test_browse_github_file_on_WSL_without_microsoft_key(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, github_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "linux" }):
|
||||
with MockCommand.fixed_output("uname", "no-micro-soft"):
|
||||
with MockCommand.fixed_output("command", "/powershell.exe"):
|
||||
with MockCommand("xdg-open") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:])
|
||||
expected_url = create_expected_filename(git, github_origin, "github", tmp_file)
|
||||
openCommand.assert_called([expected_url])
|
||||
|
||||
def test_browse_gitlab_file_on_WSL_without_microsoft_key(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, gitlab_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "linux" }):
|
||||
with MockCommand.fixed_output("uname", "no-micro-soft"):
|
||||
with MockCommand.fixed_output("command", "/powershell.exe"):
|
||||
with MockCommand("xdg-open") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:])
|
||||
expected_url = create_expected_filename(git, gitlab_origin, "gitlab", tmp_file)
|
||||
openCommand.assert_called([expected_url])
|
||||
|
||||
def test_browse_bitbucket_file_on_WSL_without_microsoft_key(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, bitbucket_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "linux" }):
|
||||
with MockCommand.fixed_output("uname", "no-micro-soft"):
|
||||
with MockCommand.fixed_output("command", "/powershell.exe"):
|
||||
with MockCommand("xdg-open") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:])
|
||||
expected_url = create_expected_filename(git, bitbucket_origin, "bitbucket", tmp_file)
|
||||
openCommand.assert_called([expected_url])
|
||||
|
||||
def test_browse_github_file_not_mac_or_msys_or_linux(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, github_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "unique-system" }):
|
||||
with MockCommand("xdg-open") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:])
|
||||
expected_url = create_expected_filename(git, github_origin, "github", tmp_file)
|
||||
openCommand.assert_called([expected_url])
|
||||
|
||||
def test_browse_gitlab_file_not_mac_or_msys_or_linux(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, gitlab_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "unique-system" }):
|
||||
with MockCommand("xdg-open") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:])
|
||||
expected_url = create_expected_filename(git, gitlab_origin, "gitlab", tmp_file)
|
||||
openCommand.assert_called([expected_url])
|
||||
|
||||
def test_browse_bitbucket_file_not_mac_or_msys_or_linux(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, bitbucket_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "unique-system" }):
|
||||
with MockCommand("xdg-open") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:])
|
||||
expected_url = create_expected_filename(git, bitbucket_origin, "bitbucket", tmp_file)
|
||||
openCommand.assert_called([expected_url])
|
||||
|
||||
def test_browse_github_file_with_line_number(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, github_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "unique-system" }):
|
||||
with MockCommand("xdg-open") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:], "10", "20")
|
||||
expected_url = create_expected_filename(git, github_origin, "github", tmp_file)
|
||||
openCommand.assert_called([expected_url + "#L10-20"])
|
||||
|
||||
def test_browse_gitlab_file_with_line_number(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, gitlab_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "unique-system" }):
|
||||
with MockCommand("xdg-open") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:], "10", "20")
|
||||
expected_url = create_expected_filename(git, gitlab_origin, "gitlab", tmp_file)
|
||||
openCommand.assert_called([expected_url + "#L10-20"])
|
||||
|
||||
def test_browse_github_file_with_line_number(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, bitbucket_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "unique-system" }):
|
||||
with MockCommand("xdg-open") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:], "10", "20")
|
||||
expected_url = create_expected_filename(git, bitbucket_origin, "bitbucket", tmp_file)
|
||||
openCommand.assert_called([expected_url + "#lines-10:20"])
|
||||
|
||||
def test_browse_unknown_site_file(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, unknown_site_origin)
|
||||
with modified_env({ "OSTYPE": "unique-system" }):
|
||||
with MockCommand("xdg-open") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin")
|
||||
openCommand.assert_called([unknown_site_origin])
|
||||
|
||||
def test_browse_unknown_site_file_with_line_number(self, temp_repo):
|
||||
git = temp_repo.get_repo_git()
|
||||
set_origin_url(git, unknown_site_origin)
|
||||
tmp_file = temp_repo.get_file(0)
|
||||
with modified_env({ "OSTYPE": "unique-system" }):
|
||||
with MockCommand("xdg-open") as openCommand:
|
||||
temp_repo.invoke_extras_command("browse", "origin", tmp_file[1:], "10", "20")
|
||||
openCommand.assert_called([unknown_site_origin])
|
||||
Loading…
Reference in a new issue