Skip to content

Commit 0b70da3

Browse files
committed
Make gitlab.Gitlab.from_config a classmethod
1 parent a6e10f9 commit 0b70da3

File tree

2 files changed

+41
-9
lines changed

2 files changed

+41
-9
lines changed

gitlab/__init__.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,8 @@ def api_version(self):
165165
"""The API version used (4 only)."""
166166
return self._api_version
167167

168-
@staticmethod
169-
def from_config(gitlab_id=None, config_files=None):
168+
@classmethod
169+
def from_config(cls, gitlab_id=None, config_files=None):
170170
"""Create a Gitlab connection from configuration files.
171171
172172
Args:
@@ -181,13 +181,13 @@ def from_config(gitlab_id=None, config_files=None):
181181
"""
182182
config = gitlab.config.GitlabConfigParser(gitlab_id=gitlab_id,
183183
config_files=config_files)
184-
return Gitlab(config.url, private_token=config.private_token,
185-
oauth_token=config.oauth_token,
186-
ssl_verify=config.ssl_verify, timeout=config.timeout,
187-
http_username=config.http_username,
188-
http_password=config.http_password,
189-
api_version=config.api_version,
190-
per_page=config.per_page)
184+
return cls(config.url, private_token=config.private_token,
185+
oauth_token=config.oauth_token,
186+
ssl_verify=config.ssl_verify, timeout=config.timeout,
187+
http_username=config.http_username,
188+
http_password=config.http_password,
189+
api_version=config.api_version,
190+
per_page=config.per_page)
191191

192192
def auth(self):
193193
"""Performs an authentication.

gitlab/tests/test_gitlab.py

+32
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818

1919
from __future__ import print_function
2020

21+
import os
2122
import pickle
23+
import tempfile
2224
try:
2325
import unittest
2426
except ImportError:
@@ -34,6 +36,17 @@
3436
from gitlab.v4.objects import * # noqa
3537

3638

39+
valid_config = b"""[global]
40+
default = one
41+
ssl_verify = true
42+
timeout = 2
43+
44+
[one]
45+
url = http://one.url
46+
private_token = ABCDEF
47+
"""
48+
49+
3750
class TestSanitize(unittest.TestCase):
3851
def test_do_nothing(self):
3952
self.assertEqual(1, gitlab._sanitize(1))
@@ -536,3 +549,22 @@ def resp_get_user(url, request):
536549
self.assertEqual(type(user), User)
537550
self.assertEqual(user.name, "name")
538551
self.assertEqual(user.id, 1)
552+
553+
def _default_config(self):
554+
fd, temp_path = tempfile.mkstemp()
555+
os.write(fd, valid_config)
556+
os.close(fd)
557+
return temp_path
558+
559+
def test_from_config(self):
560+
config_path = self._default_config()
561+
gitlab.Gitlab.from_config('one', [config_path])
562+
os.unlink(config_path)
563+
564+
def test_subclass_from_config(self):
565+
class MyGitlab(gitlab.Gitlab):
566+
pass
567+
config_path = self._default_config()
568+
gl = MyGitlab.from_config('one', [config_path])
569+
self.assertEqual(type(gl).__name__, 'MyGitlab')
570+
os.unlink(config_path)

0 commit comments

Comments
 (0)