diff options
-rw-r--r-- | docs/cli.rst | 5 | ||||
-rw-r--r-- | gitlab/config.py | 12 | ||||
-rw-r--r-- | gitlab/tests/test_config.py | 11 |
3 files changed, 26 insertions, 2 deletions
diff --git a/docs/cli.rst b/docs/cli.rst index b5c8e52..aeff276 100644 --- a/docs/cli.rst +++ b/docs/cli.rst @@ -14,7 +14,10 @@ Configuration Files ----- -``gitlab`` looks up 2 configuration files by default: +``gitlab`` looks up 3 configuration files by default: + +``PYTHON_GITLAB_CFG`` environment variable + An environment variable that contains the path to a configuration file ``/etc/python-gitlab.cfg`` System-wide configuration file diff --git a/gitlab/config.py b/gitlab/config.py index 1b665ed..fa2593b 100644 --- a/gitlab/config.py +++ b/gitlab/config.py @@ -18,7 +18,17 @@ import os import configparser -_DEFAULT_FILES = ["/etc/python-gitlab.cfg", os.path.expanduser("~/.python-gitlab.cfg")] + +def _env_config(): + if "PYTHON_GITLAB_CFG" in os.environ: + return [os.environ["PYTHON_GITLAB_CFG"]] + return [] + + +_DEFAULT_FILES = _env_config() + [ + "/etc/python-gitlab.cfg", + os.path.expanduser("~/.python-gitlab.cfg"), +] class ConfigError(Exception): diff --git a/gitlab/tests/test_config.py b/gitlab/tests/test_config.py index 65bd300..681b3d1 100644 --- a/gitlab/tests/test_config.py +++ b/gitlab/tests/test_config.py @@ -15,6 +15,7 @@ # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +import os import unittest import mock @@ -72,6 +73,16 @@ per_page = 200 """ +class TestEnvConfig(unittest.TestCase): + def test_env_present(self): + with mock.patch.dict(os.environ, {"PYTHON_GITLAB_CFG": "/some/path"}): + self.assertEqual(["/some/path"], config._env_config()) + + def test_env_missing(self): + with mock.patch.dict(os.environ, {}, clear=True): + self.assertEqual([], config._env_config()) + + class TestConfigParser(unittest.TestCase): @mock.patch("os.path.exists") def test_missing_config(self, path_exists): |