mirror of
https://github.com/certbot/certbot.git
synced 2026-07-28 08:45:22 +02:00
Implement a consistent realpath function in certbot.compat.filesystem (#7242)
Fixes #7115 This PR creates a `realpath` method in `filesystem`, whose goal is to replace any call to `os.path.realpath` in Certbot. The reason is that `os.path.realpath` is broken on some versions of Python for Windows. See https://bugs.python.org/issue9949. The function created here works consistently across Linux and Windows. As for the other forbidden functions in `os` module, our `certbot.compat.os` will raise an exception if its `path.realpath` function is invoked, and using the `os` module from Python is forbidden from the pylint check implemented in our CI. Every call to `os.path.realpath` is corrected in `certbot` and `certbot-apache` modules. * Forbid os.path.realpath * Finish implementation * Use filesystem.realpath * Control symlink loops also for Linux * Add a test for forbidden method * Import a new object from os.path module * Use same approach of wrapping than certbot.compat.os * Correct errors * Fix dependencies * Make path module internal
This commit is contained in:
committed by
Brad Warren
parent
41a17f913e
commit
71ff47daad
@@ -486,7 +486,7 @@ def dir_setup(test_dir, pkg): # pragma: no cover
|
||||
link, (ex: OS X) such plugins will be confused. This function prevents
|
||||
such a case.
|
||||
"""
|
||||
return os.path.realpath(tempfile.mkdtemp(prefix))
|
||||
return filesystem.realpath(tempfile.mkdtemp(prefix))
|
||||
|
||||
temp_dir = expanded_tempdir("temp")
|
||||
config_dir = expanded_tempdir("config")
|
||||
|
||||
@@ -31,7 +31,7 @@ class PluginStorageTest(test_util.ConfigTestCase):
|
||||
self.plugin.storage.storagepath = os.path.join(self.config.config_dir,
|
||||
".pluginstorage.json")
|
||||
with mock.patch("six.moves.builtins.open", mock_open):
|
||||
with mock.patch('os.path.isfile', return_value=True):
|
||||
with mock.patch('certbot.compat.os.path.isfile', return_value=True):
|
||||
with mock.patch("certbot.reverter.util"):
|
||||
self.assertRaises(errors.PluginStorageError,
|
||||
self.plugin.storage._load) # pylint: disable=protected-access
|
||||
|
||||
Reference in New Issue
Block a user