diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9a196725..5c62a478 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,6 +36,8 @@ jobs: env: # NOTE: use env to pass the output in order to avoid possible injection attacks FILES: "${{ steps.files.outputs.added_modified }}" + - name: Lint and format Python with Ruff + uses: astral-sh/ruff-action@v1 typo: runs-on: ubuntu-latest diff --git a/tests/conftest.py b/tests/conftest.py index 74c91c8a..4f9e0db6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -4,13 +4,15 @@ import pytest from helper import TempRepository -def create_repo(dirname = None): + +def create_repo(dirname=None): repo = TempRepository(dirname) - tmp_file_a = repo.create_tmp_file() - tmp_file_b = repo.create_tmp_file() + repo.create_tmp_file() + repo.create_tmp_file() repo.switch_cwd_under_repo() return repo + def init_repo_git_status(repo): git = repo.get_repo_git() git.add(".") @@ -18,12 +20,14 @@ def init_repo_git_status(repo): git.config("--local", "user.email", "test@git-extras.com") git.commit("-m", "chore: initial commit") + @pytest.fixture(scope="module") def temp_repo(): repo = create_repo() init_repo_git_status(repo) return repo + @pytest.fixture(scope="module") def named_temp_repo(request): dirname = request.param diff --git a/tests/helper.py b/tests/helper.py index 1c9349f9..e4e931df 100644 --- a/tests/helper.py +++ b/tests/helper.py @@ -1,6 +1,8 @@ -import os, subprocess, shutil, tempfile +import os +import subprocess +import shutil +import tempfile from git import Repo, GitCommandError -from testpath import MockCommand, modified_env CURRENT_DIR = os.path.dirname(os.path.abspath(__file__)) GIT_EXTRAS_BIN = os.path.abspath(os.path.join(CURRENT_DIR, "..", "bin")) @@ -10,15 +12,16 @@ GITLAB_ORIGIN = "https://gitlab.com/tj/git-extras.git" BITBUCKET_ORIGIN = "https://bitbucket.org/tj/git-extras.git" + class TempRepository: - def __init__(self, repo_work_dir = None): + def __init__(self, repo_work_dir=None): self._system_tmpdir = tempfile.gettempdir() - if repo_work_dir == None: + if repo_work_dir is None: repo_work_dir = tempfile.mkdtemp() else: repo_work_dir = os.path.join(self._system_tmpdir, repo_work_dir) self._cwd = repo_work_dir - self._tempdirname = self._cwd[len(self._system_tmpdir) + 1:] + self._tempdirname = self._cwd[len(self._system_tmpdir) + 1 :] self._git_repo = Repo.init(repo_work_dir, b="default") self._files = [] self.change_origin_to_github() @@ -50,8 +53,8 @@ def create_tmp_dir(self): tmp_dir = tempfile.mkdtemp() return tmp_dir - def create_tmp_file(self, temp_dir = None): - if temp_dir == None: + def create_tmp_file(self, temp_dir=None): + if temp_dir is None: temp_dir = self._cwd tmp_file = tempfile.mkstemp(dir=temp_dir) @@ -63,7 +66,7 @@ def remove_tmp_file(self, file_path): print(f"File {file_path} has been removed") def writefile(self, temp_file, data): - if data == None: + if data is None: return with open(temp_file, "w", encoding="utf-8") as f: @@ -86,8 +89,9 @@ def invoke_installed_extras_command(self, name, *params): origin_extras_command = os.path.join(GIT_EXTRAS_BIN, command_name) temp_extras_command = os.path.join(self._cwd, command_name) helpers = [ - os.path.join(GIT_EXTRAS_HELPER, "git-extra-utility"), - os.path.join(GIT_EXTRAS_HELPER, "is-git-repo")] + os.path.join(GIT_EXTRAS_HELPER, "git-extra-utility"), + os.path.join(GIT_EXTRAS_HELPER, "is-git-repo"), + ] if not os.path.exists(temp_extras_command): whole = [] @@ -106,7 +110,7 @@ def invoke_installed_extras_command(self, name, *params): os.chmod(temp_extras_command, 0o775) script = [temp_extras_command, *params] - print(f"Run the script \"{script}\"") + print(f'Run the script "{script}"') return subprocess.run(script, capture_output=True) def change_origin(self, origin_url): diff --git a/tests/pyproject.toml b/tests/pyproject.toml index 43266570..f12d4871 100644 --- a/tests/pyproject.toml +++ b/tests/pyproject.toml @@ -21,3 +21,66 @@ testpaths = ["."] [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" + +[tool.ruff] +# Exclude a variety of commonly ignored directories. +exclude = [ + ".bzr", + ".direnv", + ".eggs", + ".git", + ".git-rewrite", + ".hg", + ".ipynb_checkpoints", + ".mypy_cache", + ".nox", + ".pants.d", + ".pyenv", + ".pytest_cache", + ".pytype", + ".ruff_cache", + ".svn", + ".tox", + ".venv", + ".vscode", + "__pypackages__", + "_build", + "buck-out", + "build", + "dist", + "node_modules", + "site-packages", + "venv", +] + +# Same as Black. +line-length = 88 +indent-width = 4 + +# Assume Python 3.9 +target-version = "py39" + +[tool.ruff.lint] +# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. +select = ["E4", "E7", "E9", "F"] +ignore = [] + +# Allow fix for all enabled rules (when `--fix`) is provided. +fixable = ["ALL"] +unfixable = [] + +# Allow unused variables when underscore-prefixed. +dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" + +[tool.ruff.format] +# Like Black, use double quotes for strings. +quote-style = "double" + +# Like Black, indent with spaces, rather than tabs. +indent-style = "space" + +# Like Black, respect magic trailing commas. +skip-magic-trailing-comma = false + +# Like Black, automatically detect the appropriate line ending. +line-ending = "auto" diff --git a/tests/test_git_abort.py b/tests/test_git_abort.py index 38e52c57..1e3785fe 100644 --- a/tests/test_git_abort.py +++ b/tests/test_git_abort.py @@ -1,5 +1,6 @@ from git import GitCommandError + class TestGitAbort: def test_init(self, temp_repo): git = temp_repo.get_repo_git() diff --git a/tests/test_git_archive_file.py b/tests/test_git_archive_file.py index 68743222..ddf117e1 100644 --- a/tests/test_git_archive_file.py +++ b/tests/test_git_archive_file.py @@ -1,4 +1,6 @@ -import os, pytest +import os +import pytest + class TestGitArchiveFile: def test_init(self, temp_repo): @@ -16,14 +18,17 @@ def test_archive_file_on_tags_branch(self, temp_repo): filename = "{0}.{1}.zip".format(temp_repo.get_repo_dirname(), git.describe()) assert filename in os.listdir() - def test_archive_file_on_any_not_tags_branch_without_default_branch(self, temp_repo): + def test_archive_file_on_any_not_tags_branch_without_default_branch( + self, temp_repo + ): git = temp_repo.get_repo_git() git.checkout("-b", "not-tags-branch") temp_repo.invoke_installed_extras_command("archive-file") filename = "{0}.{1}.{2}.zip".format( - temp_repo.get_repo_dirname(), - git.describe("--always", "--long"), - "not-tags-branch") + temp_repo.get_repo_dirname(), + git.describe("--always", "--long"), + "not-tags-branch", + ) assert filename in os.listdir() def test_archive_file_on_any_not_tags_branch_with_default_branch(self, temp_repo): @@ -32,8 +37,8 @@ def test_archive_file_on_any_not_tags_branch_with_default_branch(self, temp_repo git.config("git-extras.default-branch", "default") temp_repo.invoke_installed_extras_command("archive-file") filename = "{0}.{1}.zip".format( - temp_repo.get_repo_dirname(), - git.describe("--always", "--long")) + temp_repo.get_repo_dirname(), git.describe("--always", "--long") + ) assert filename in os.listdir() def test_archive_file_on_branch_name_has_slash(self, temp_repo): @@ -41,9 +46,10 @@ def test_archive_file_on_branch_name_has_slash(self, temp_repo): git.checkout("-b", "feature/slash") temp_repo.invoke_installed_extras_command("archive-file") filename = "{0}.{1}.{2}.zip".format( - temp_repo.get_repo_dirname(), - git.describe("--always", "--long"), - "feature-slash") + temp_repo.get_repo_dirname(), + git.describe("--always", "--long"), + "feature-slash", + ) assert filename in os.listdir() @pytest.mark.parametrize("named_temp_repo", ["backslash\\dir"], indirect=True) @@ -51,9 +57,8 @@ def test_archive_file_on_dirname_has_backslash(self, named_temp_repo): named_temp_repo.invoke_installed_extras_command("archive-file") git = named_temp_repo.get_repo_git() filename = "{0}.{1}.{2}.zip".format( - "backslash-dir", - git.describe("--always", "--long"), - "default") + "backslash-dir", git.describe("--always", "--long"), "default" + ) assert filename in os.listdir() def test_archive_file_on_tag_name_has_slash(self, temp_repo): @@ -65,6 +70,6 @@ def test_archive_file_on_tag_name_has_slash(self, temp_repo): temp_repo.invoke_installed_extras_command("archive-file") description_include_version = git.describe("--always", "--long") filename = "{0}.{1}.zip".format( - temp_repo.get_repo_dirname(), - description_include_version.replace("/", "-")) + temp_repo.get_repo_dirname(), description_include_version.replace("/", "-") + ) assert filename in os.listdir() diff --git a/tests/test_git_authors.py b/tests/test_git_authors.py index 8eb3cf9a..f3424338 100644 --- a/tests/test_git_authors.py +++ b/tests/test_git_authors.py @@ -1,9 +1,10 @@ -import os, subprocess - -expected_authors_list = "test <test@git-extras.com>\ntestagain <testagain@git-extras.com>\n" +expected_authors_list = ( + "test <test@git-extras.com>\ntestagain <testagain@git-extras.com>\n" +) expected_authors_list_without_email = "test\ntestagain\n" authors_file = "AUTHORS" + class TestGitAuthors: def test_init(self, temp_repo): git = temp_repo.get_repo_git() @@ -18,8 +19,8 @@ def test_init(self, temp_repo): git.commit("-m", "test: add data B") def test_output_authors_has_email_without_any_parameter(self, temp_repo): - git = temp_repo.get_repo_git() - rs = temp_repo.invoke_extras_command("authors") + temp_repo.get_repo_git() + temp_repo.invoke_extras_command("authors") with open(authors_file) as f: content = f.read() print(content) @@ -27,7 +28,7 @@ def test_output_authors_has_email_without_any_parameter(self, temp_repo): assert content == expected_authors_list def test_list_authors_has_email_defaultly(self, temp_repo): - git = temp_repo.get_repo_git() + temp_repo.get_repo_git() actual = temp_repo.invoke_extras_command("authors", "--list") actual = actual.stdout.decode() assert actual == expected_authors_list @@ -36,7 +37,7 @@ def test_list_authors_has_email_defaultly(self, temp_repo): assert actual == expected_authors_list def test_list_authors_has_not_email(self, temp_repo): - git = temp_repo.get_repo_git() + temp_repo.get_repo_git() actual = temp_repo.invoke_extras_command("authors", "--list", "--no-email") actual = actual.stdout.decode() assert actual == expected_authors_list_without_email diff --git a/tests/test_git_browse.py b/tests/test_git_browse.py index ff4b4db9..39822bfb 100644 --- a/tests/test_git_browse.py +++ b/tests/test_git_browse.py @@ -1,22 +1,23 @@ -import os, subprocess from testpath import MockCommand, modified_env UNKNOWN_SITE_ORIGIN = "https://unknown-site.com/tj/git-extras.git" + def get_file_uri(mode, filename, git): commit_hash = git.rev_parse("HEAD") if mode == "github": - return "https://github.com/tj/git-extras/blob/" + commit_hash + '/' + filename + return "https://github.com/tj/git-extras/blob/" + commit_hash + "/" + filename if mode == "gitlab": - return "https://gitlab.com/tj/git-extras/-/blob/" + commit_hash + '/' + filename + return "https://gitlab.com/tj/git-extras/-/blob/" + commit_hash + "/" + filename if mode == "bitbucket": - return "https://bitbucket.org/tj/git-extras/src/" + commit_hash + '/' + filename + return "https://bitbucket.org/tj/git-extras/src/" + commit_hash + "/" + filename + class TestGitBrowse: def test_browse_github_file_on_mac(self, temp_repo): git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "darwin" }), MockCommand("open") as openCommand: + with modified_env({"OSTYPE": "darwin"}), MockCommand("open") as openCommand: temp_repo.invoke_extras_command("browse", "origin", filename) expected_url = get_file_uri("github", filename, git) openCommand.assert_called([expected_url]) @@ -25,7 +26,7 @@ def test_browse_gitlab_file_on_mac(self, temp_repo): temp_repo.change_origin_to_gitlab() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "darwin" }), MockCommand("open") as openCommand: + with modified_env({"OSTYPE": "darwin"}), MockCommand("open") as openCommand: temp_repo.invoke_extras_command("browse", "origin", filename) expected_url = get_file_uri("gitlab", filename, git) openCommand.assert_called([expected_url]) @@ -34,7 +35,7 @@ def test_browse_bitbucket_file_on_mac(self, temp_repo): temp_repo.change_origin_to_bitbucket() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "darwin" }), MockCommand("open") as openCommand: + with modified_env({"OSTYPE": "darwin"}), MockCommand("open") as openCommand: temp_repo.invoke_extras_command("browse", "origin", filename) expected_url = get_file_uri("bitbucket", filename, git) openCommand.assert_called([expected_url]) @@ -43,7 +44,7 @@ def test_browse_github_file_on_git_bash_on_window(self, temp_repo): temp_repo.change_origin_to_github() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "msys" }), MockCommand("start") as openCommand: + with modified_env({"OSTYPE": "msys"}), MockCommand("start") as openCommand: temp_repo.invoke_extras_command("browse", "origin", filename) expected_url = get_file_uri("github", filename, git) openCommand.assert_called([expected_url]) @@ -52,7 +53,7 @@ def test_browse_gitlab_file_on_git_bash_on_window(self, temp_repo): temp_repo.change_origin_to_gitlab() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "msys" }), MockCommand("start") as openCommand: + with modified_env({"OSTYPE": "msys"}), MockCommand("start") as openCommand: temp_repo.invoke_extras_command("browse", "origin", filename) expected_url = get_file_uri("gitlab", filename, git) openCommand.assert_called([expected_url]) @@ -61,7 +62,7 @@ def test_browse_bitbucket_file_on_git_bash_on_window(self, temp_repo): temp_repo.change_origin_to_bitbucket() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "msys" }), MockCommand("start") as openCommand: + with modified_env({"OSTYPE": "msys"}), MockCommand("start") as openCommand: temp_repo.invoke_extras_command("browse", "origin", filename) expected_url = get_file_uri("bitbucket", filename, git) openCommand.assert_called([expected_url]) @@ -70,8 +71,12 @@ def test_browse_github_file_on_WSL_with_microsoft_key(self, temp_repo): temp_repo.change_origin_to_github() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "microsoft"), \ - MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("powershell.exe") as openCommand: + with ( + modified_env({"OSTYPE": "linux"}), + MockCommand.fixed_output("uname", "microsoft"), + MockCommand.fixed_output("command", "/powershell.exe"), + MockCommand("powershell.exe") as openCommand, + ): temp_repo.invoke_extras_command("browse", "origin", filename) expected_url = get_file_uri("github", filename, git) openCommand.assert_called(["-NoProfile", "start", expected_url]) @@ -80,8 +85,12 @@ def test_browse_gitlab_file_on_WSL_with_microsoft_key(self, temp_repo): temp_repo.change_origin_to_gitlab() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "microsoft"), \ - MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("powershell.exe") as openCommand: + with ( + modified_env({"OSTYPE": "linux"}), + MockCommand.fixed_output("uname", "microsoft"), + MockCommand.fixed_output("command", "/powershell.exe"), + MockCommand("powershell.exe") as openCommand, + ): temp_repo.invoke_extras_command("browse", "origin", filename) expected_url = get_file_uri("gitlab", filename, git) openCommand.assert_called(["-NoProfile", "start", expected_url]) @@ -90,8 +99,12 @@ def test_browse_bitbucket_file_on_WSL_with_microsoft_key(self, temp_repo): temp_repo.change_origin_to_bitbucket() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "microsoft"), \ - MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("powershell.exe") as openCommand: + with ( + modified_env({"OSTYPE": "linux"}), + MockCommand.fixed_output("uname", "microsoft"), + MockCommand.fixed_output("command", "/powershell.exe"), + MockCommand("powershell.exe") as openCommand, + ): temp_repo.invoke_extras_command("browse", "origin", filename) expected_url = get_file_uri("bitbucket", filename, git) openCommand.assert_called(["-NoProfile", "start", expected_url]) @@ -100,8 +113,12 @@ def test_browse_github_file_on_WSL_without_microsoft_key(self, temp_repo): temp_repo.change_origin_to_github() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "no-micro-soft"), \ - MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "linux"}), + MockCommand.fixed_output("uname", "no-micro-soft"), + MockCommand.fixed_output("command", "/powershell.exe"), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse", "origin", filename) expected_url = get_file_uri("github", filename, git) openCommand.assert_called([expected_url]) @@ -110,8 +127,12 @@ def test_browse_gitlab_file_on_WSL_without_microsoft_key(self, temp_repo): temp_repo.change_origin_to_gitlab() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "no-micro-soft"), \ - MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "linux"}), + MockCommand.fixed_output("uname", "no-micro-soft"), + MockCommand.fixed_output("command", "/powershell.exe"), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse", "origin", filename) expected_url = get_file_uri("gitlab", filename, git) openCommand.assert_called([expected_url]) @@ -120,8 +141,12 @@ def test_browse_bitbucket_file_on_WSL_without_microsoft_key(self, temp_repo): temp_repo.change_origin_to_bitbucket() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "no-micro-soft"), \ - MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "linux"}), + MockCommand.fixed_output("uname", "no-micro-soft"), + MockCommand.fixed_output("command", "/powershell.exe"), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse", "origin", filename) expected_url = get_file_uri("bitbucket", filename, git) openCommand.assert_called([expected_url]) @@ -130,7 +155,10 @@ def test_browse_github_file_not_mac_or_msys_or_linux(self, temp_repo): temp_repo.change_origin_to_github() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "unique-system"}), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse", "origin", filename) expected_url = get_file_uri("github", filename, git) openCommand.assert_called([expected_url]) @@ -139,7 +167,10 @@ def test_browse_gitlab_file_not_mac_or_msys_or_linux(self, temp_repo): temp_repo.change_origin_to_gitlab() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "unique-system"}), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse", "origin", filename) expected_url = get_file_uri("gitlab", filename, git) openCommand.assert_called([expected_url]) @@ -148,7 +179,10 @@ def test_browse_bitbucket_file_not_mac_or_msys_or_linux(self, temp_repo): temp_repo.change_origin_to_bitbucket() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "unique-system"}), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse", "origin", filename) expected_url = get_file_uri("bitbucket", filename, git) openCommand.assert_called([expected_url]) @@ -157,7 +191,10 @@ def test_browse_github_file_with_line_number(self, temp_repo): temp_repo.change_origin_to_github() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "unique-system"}), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse", "origin", filename, "10", "20") expected_url = get_file_uri("github", filename, git) openCommand.assert_called([expected_url + "#L10-L20"]) @@ -166,7 +203,10 @@ def test_browse_gitlab_file_with_line_number(self, temp_repo): temp_repo.change_origin_to_gitlab() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "unique-system"}), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse", "origin", filename, "10", "20") expected_url = get_file_uri("gitlab", filename, git) openCommand.assert_called([expected_url + "#L10-20"]) @@ -175,21 +215,30 @@ def test_browse_bitbucket_file_with_line_number(self, temp_repo): temp_repo.change_origin_to_bitbucket() git = temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "unique-system"}), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse", "origin", filename, "10", "20") expected_url = get_file_uri("bitbucket", filename, git) openCommand.assert_called([expected_url + "#lines-10:20"]) def test_browse_unknown_site_file(self, temp_repo): temp_repo.change_origin(UNKNOWN_SITE_ORIGIN) - git = temp_repo.get_repo_git() - with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand: + temp_repo.get_repo_git() + with ( + modified_env({"OSTYPE": "unique-system"}), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse", "origin") openCommand.assert_called([UNKNOWN_SITE_ORIGIN[0:-4]]) def test_browse_unknown_site_file_with_line_number(self, temp_repo): - git = temp_repo.get_repo_git() + temp_repo.get_repo_git() filename = temp_repo.get_filename(0) - with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "unique-system"}), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse", "origin", filename, "10", "20") openCommand.assert_called([UNKNOWN_SITE_ORIGIN[0:-4]]) diff --git a/tests/test_git_browse_ci.py b/tests/test_git_browse_ci.py index 761d86d6..b69e5540 100644 --- a/tests/test_git_browse_ci.py +++ b/tests/test_git_browse_ci.py @@ -1,8 +1,8 @@ -import os, subprocess from testpath import MockCommand, modified_env UNKNOWN_SITE_ORIGIN = "https://unknown-site.com/tj/git-extras.git" + def get_ci_uri_by_domain(mode): if mode == "github": return "https://github.com/tj/git-extras/actions" @@ -11,119 +11,156 @@ def get_ci_uri_by_domain(mode): if mode == "bitbucket": return "https://bitbucket.org/tj/git-extras/addon/pipelines/home" + class TestGitBrowse: def test_browse_github_ci_on_mac(self, temp_repo): - with modified_env({ "OSTYPE": "darwin" }), MockCommand("open") as openCommand: + with modified_env({"OSTYPE": "darwin"}), MockCommand("open") as openCommand: temp_repo.invoke_extras_command("browse-ci", "origin") expected_url = get_ci_uri_by_domain("github") openCommand.assert_called([expected_url]) def test_browse_gitlab_ci_on_mac(self, temp_repo): temp_repo.change_origin_to_gitlab() - with modified_env({ "OSTYPE": "darwin" }), MockCommand("open") as openCommand: + with modified_env({"OSTYPE": "darwin"}), MockCommand("open") as openCommand: temp_repo.invoke_extras_command("browse-ci", "origin") expected_url = get_ci_uri_by_domain("gitlab") openCommand.assert_called([expected_url]) def test_browse_bitbucket_ci_on_mac(self, temp_repo): temp_repo.change_origin_to_bitbucket() - with modified_env({ "OSTYPE": "darwin" }), MockCommand("open") as openCommand: + with modified_env({"OSTYPE": "darwin"}), MockCommand("open") as openCommand: temp_repo.invoke_extras_command("browse-ci", "origin") expected_url = get_ci_uri_by_domain("bitbucket") openCommand.assert_called([expected_url]) def test_browse_github_ci_on_git_bash_on_window(self, temp_repo): temp_repo.change_origin_to_github() - with modified_env({ "OSTYPE": "msys" }), MockCommand("start") as openCommand: + with modified_env({"OSTYPE": "msys"}), MockCommand("start") as openCommand: temp_repo.invoke_extras_command("browse-ci", "origin") expected_url = get_ci_uri_by_domain("github") openCommand.assert_called([expected_url]) def test_browse_gitlab_ci_on_git_bash_on_window(self, temp_repo): temp_repo.change_origin_to_gitlab() - with modified_env({ "OSTYPE": "msys" }), MockCommand("start") as openCommand: + with modified_env({"OSTYPE": "msys"}), MockCommand("start") as openCommand: temp_repo.invoke_extras_command("browse-ci", "origin") expected_url = get_ci_uri_by_domain("gitlab") openCommand.assert_called([expected_url]) def test_browse_bitbucket_ci_on_git_bash_on_window(self, temp_repo): temp_repo.change_origin_to_bitbucket() - with modified_env({ "OSTYPE": "msys" }), MockCommand("start") as openCommand: + with modified_env({"OSTYPE": "msys"}), MockCommand("start") as openCommand: temp_repo.invoke_extras_command("browse-ci", "origin") expected_url = get_ci_uri_by_domain("bitbucket") openCommand.assert_called([expected_url]) def test_browse_github_ci_on_WSL_with_microsoft_key(self, temp_repo): temp_repo.change_origin_to_github() - with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "microsoft"), \ - MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("powershell.exe") as openCommand: + with ( + modified_env({"OSTYPE": "linux"}), + MockCommand.fixed_output("uname", "microsoft"), + MockCommand.fixed_output("command", "/powershell.exe"), + MockCommand("powershell.exe") as openCommand, + ): temp_repo.invoke_extras_command("browse-ci", "origin") expected_url = get_ci_uri_by_domain("github") openCommand.assert_called(["-NoProfile", "start", expected_url]) def test_browse_gitlab_ci_on_WSL_with_microsoft_key(self, temp_repo): temp_repo.change_origin_to_gitlab() - with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "microsoft"), \ - MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("powershell.exe") as openCommand: + with ( + modified_env({"OSTYPE": "linux"}), + MockCommand.fixed_output("uname", "microsoft"), + MockCommand.fixed_output("command", "/powershell.exe"), + MockCommand("powershell.exe") as openCommand, + ): temp_repo.invoke_extras_command("browse-ci", "origin") expected_url = get_ci_uri_by_domain("gitlab") openCommand.assert_called(["-NoProfile", "start", expected_url]) def test_browse_bitbucket_ci_on_WSL_with_microsoft_key(self, temp_repo): temp_repo.change_origin_to_bitbucket() - with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "microsoft"), \ - MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("powershell.exe") as openCommand: + with ( + modified_env({"OSTYPE": "linux"}), + MockCommand.fixed_output("uname", "microsoft"), + MockCommand.fixed_output("command", "/powershell.exe"), + MockCommand("powershell.exe") as openCommand, + ): temp_repo.invoke_extras_command("browse-ci", "origin") expected_url = get_ci_uri_by_domain("bitbucket") openCommand.assert_called(["-NoProfile", "start", expected_url]) def test_browse_github_ci_on_WSL_without_microsoft_key(self, temp_repo): temp_repo.change_origin_to_github() - with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "no-micro-soft"), \ - MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "linux"}), + MockCommand.fixed_output("uname", "no-micro-soft"), + MockCommand.fixed_output("command", "/powershell.exe"), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse-ci", "origin") expected_url = get_ci_uri_by_domain("github") openCommand.assert_called([expected_url]) def test_browse_gitlab_ci_on_WSL_without_microsoft_key(self, temp_repo): temp_repo.change_origin_to_gitlab() - with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "no-micro-soft"), \ - MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "linux"}), + MockCommand.fixed_output("uname", "no-micro-soft"), + MockCommand.fixed_output("command", "/powershell.exe"), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse-ci", "origin") expected_url = get_ci_uri_by_domain("gitlab") openCommand.assert_called([expected_url]) def test_browse_bitbucket_ci_on_WSL_without_microsoft_key(self, temp_repo): temp_repo.change_origin_to_bitbucket() - with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "no-micro-soft"), \ - MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "linux"}), + MockCommand.fixed_output("uname", "no-micro-soft"), + MockCommand.fixed_output("command", "/powershell.exe"), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse-ci", "origin") expected_url = get_ci_uri_by_domain("bitbucket") openCommand.assert_called([expected_url]) def test_browse_github_ci_not_mac_or_msys_or_linux(self, temp_repo): temp_repo.change_origin_to_github() - with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "unique-system"}), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse-ci", "origin") expected_url = get_ci_uri_by_domain("github") openCommand.assert_called([expected_url]) def test_browse_gitlab_ci_not_mac_or_msys_or_linux(self, temp_repo): temp_repo.change_origin_to_gitlab() - with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "unique-system"}), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse-ci", "origin") expected_url = get_ci_uri_by_domain("gitlab") openCommand.assert_called([expected_url]) def test_browse_bitbucket_ci_not_mac_or_msys_or_linux(self, temp_repo): temp_repo.change_origin_to_bitbucket() - with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "unique-system"}), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse-ci", "origin") expected_url = get_ci_uri_by_domain("bitbucket") openCommand.assert_called([expected_url]) def test_browse_unknown_site_file(self, temp_repo): temp_repo.change_origin(UNKNOWN_SITE_ORIGIN) - with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand: + with ( + modified_env({"OSTYPE": "unique-system"}), + MockCommand("xdg-open") as openCommand, + ): temp_repo.invoke_extras_command("browse-ci", "origin") - openCommand.assert_called(['']) + openCommand.assert_called([""])