diff --git a/git/cmd.py b/git/cmd.py index 22b5ea99e..f58e6df5b 100644 --- a/git/cmd.py +++ b/git/cmd.py @@ -450,7 +450,7 @@ def refresh(cls, path: Union[None, PathLike] = None) -> bool: ) if mode in warn: - _logger.critical("WARNING: %s", err) + _logger.critical(err) else: raise ImportError(err) else: diff --git a/test/test_git.py b/test/test_git.py index ea3d067ee..f12428f9e 100644 --- a/test/test_git.py +++ b/test/test_git.py @@ -321,17 +321,17 @@ def test_version(self): self.assertIsInstance(n, int) # END verify number types - def test_cmd_override(self): - with mock.patch.object( - type(self.git), - "GIT_PYTHON_GIT_EXECUTABLE", - osp.join("some", "path", "which", "doesn't", "exist", "gitbinary"), - ): - self.assertRaises(GitCommandNotFound, self.git.version) - def test_git_exc_name_is_git(self): self.assertEqual(self.git.git_exec_name, "git") + def test_cmd_override(self): + """Directly set bad GIT_PYTHON_GIT_EXECUTABLE causes git operations to raise.""" + bad_path = osp.join("some", "path", "which", "doesn't", "exist", "gitbinary") + with mock.patch.object(Git, "GIT_PYTHON_GIT_EXECUTABLE", bad_path): + with self.assertRaises(GitCommandNotFound) as ctx: + self.git.version() + self.assertEqual(ctx.exception.command, [bad_path, "version"]) + @ddt.data(("0",), ("q",), ("quiet",), ("s",), ("silence",), ("silent",), ("n",), ("none",)) def test_initial_refresh_from_bad_git_path_env_quiet(self, case): """In "q" mode, bad initial path sets "git" and is quiet.""" @@ -341,7 +341,7 @@ def test_initial_refresh_from_bad_git_path_env_quiet(self, case): "GIT_PYTHON_REFRESH": mode, } with _rollback_refresh(): - type(self.git).GIT_PYTHON_GIT_EXECUTABLE = None # Simulate startup. + Git.GIT_PYTHON_GIT_EXECUTABLE = None # Simulate startup. with mock.patch.dict(os.environ, set_vars): refresh() @@ -356,14 +356,14 @@ def test_initial_refresh_from_bad_git_path_env_warn(self, case): "GIT_PYTHON_REFRESH": mode, } with _rollback_refresh(): - type(self.git).GIT_PYTHON_GIT_EXECUTABLE = None # Simulate startup. + Git.GIT_PYTHON_GIT_EXECUTABLE = None # Simulate startup. with mock.patch.dict(os.environ, env_vars): with self.assertLogs(cmd.__name__, logging.CRITICAL) as ctx: refresh() self.assertEqual(len(ctx.records), 1) message = ctx.records[0].getMessage() - self.assertRegex(message, r"\AWARNING: Bad git executable.\n") + self.assertRegex(message, r"\ABad git executable.\n") self.assertEqual(self.git.GIT_PYTHON_GIT_EXECUTABLE, "git") @ddt.data(("2",), ("r",), ("raise",), ("e",), ("error",)) @@ -375,7 +375,7 @@ def test_initial_refresh_from_bad_git_path_env_error(self, case): "GIT_PYTHON_REFRESH": mode, } with _rollback_refresh(): - type(self.git).GIT_PYTHON_GIT_EXECUTABLE = None # Simulate startup. + Git.GIT_PYTHON_GIT_EXECUTABLE = None # Simulate startup. with mock.patch.dict(os.environ, env_vars): with self.assertRaisesRegex(ImportError, r"\ABad git executable.\n"): @@ -386,7 +386,7 @@ def test_initial_refresh_from_good_absolute_git_path_env(self): absolute_path = shutil.which("git") with _rollback_refresh(): - type(self.git).GIT_PYTHON_GIT_EXECUTABLE = None # Simulate startup. + Git.GIT_PYTHON_GIT_EXECUTABLE = None # Simulate startup. with mock.patch.dict(os.environ, {"GIT_PYTHON_GIT_EXECUTABLE": absolute_path}): refresh() @@ -397,8 +397,8 @@ def test_initial_refresh_from_good_relative_git_path_env(self): with _rollback_refresh(): # Set the fallback to a string that wouldn't work and isn't "git", so we are # more likely to detect if "git" is not set from the environment variable. - with mock.patch.object(type(self.git), "git_exec_name", ""): - type(self.git).GIT_PYTHON_GIT_EXECUTABLE = None # Simulate startup. + with mock.patch.object(Git, "git_exec_name", ""): + Git.GIT_PYTHON_GIT_EXECUTABLE = None # Simulate startup. # Now observe if setting the environment variable to "git" takes effect. with mock.patch.dict(os.environ, {"GIT_PYTHON_GIT_EXECUTABLE": "git"}): @@ -442,7 +442,7 @@ def test_refresh_from_good_relative_git_path_env(self): """Good relative path from environment is kept relative and set.""" with _rollback_refresh(): # Set as the executable name a string that wouldn't work and isn't "git". - type(self.git).GIT_PYTHON_GIT_EXECUTABLE = "" + Git.GIT_PYTHON_GIT_EXECUTABLE = "" # Now observe if setting the environment variable to "git" takes effect. with mock.patch.dict(os.environ, {"GIT_PYTHON_GIT_EXECUTABLE": "git"}): diff --git a/test/test_index.py b/test/test_index.py index f456f8be0..ffe71450d 100644 --- a/test/test_index.py +++ b/test/test_index.py @@ -174,7 +174,7 @@ def _decode(stdout): except UnicodeDecodeError: pass except LookupError as error: - _logger.warning("%s", str(error)) # Message already says "Unknown encoding:". + _logger.warning(str(error)) # Message already says "Unknown encoding:". # Assume UTF-8. If invalid, substitute Unicode replacement characters. return stdout.decode("utf-8", errors="replace")