Skip to content

Commit 3bf2052

Browse files
committed
🚒 Fixes for gitlab API update
1 parent 02b95df commit 3bf2052

File tree

46 files changed

+2243
-1261
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+2243
-1261
lines changed

git_repo/services/ext/gitlab.py

+14-11
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,13 @@ def connect(self):
4343

4444
def create(self, user, repo, add=False):
4545
try:
46-
group = self.gl.groups.search(user)
47-
data = {'name': repo, 'path': repo}
46+
group = self.gl.groups.list(search=user)
47+
data = {'name': repo}
4848
if group:
4949
data['namespace_id'] = group[0].id
5050
self.gl.projects.create(data=data)
5151
except GitlabCreateError as err:
52-
if json.loads(err.response_body.decode('utf-8'))['message']['name'][0] == 'has already been taken':
52+
if json.loads(err.response_body.decode('utf-8')).get('message', {}).get('name', [None])[0] == 'has already been taken':
5353
raise ResourceExistsError("Project already exists.") from err
5454
else:
5555
raise ResourceError("Unhandled error.") from err
@@ -60,7 +60,7 @@ def fork(self, user, repo):
6060
try:
6161
return self.gl.projects.get('{}/{}'.format(user, repo)).forks.create({}).path_with_namespace
6262
except GitlabCreateError as err:
63-
if json.loads(err.response_body.decode('utf-8'))['message']['name'][0] == 'has already been taken':
63+
if json.loads(err.response_body.decode('utf-8')).get('message', {}).get('name', [None])[0] == 'has already been taken':
6464
raise ResourceExistsError("Project already exists.") from err
6565
else:
6666
raise ResourceError("Unhandled error: {}".format(err)) from err
@@ -71,8 +71,8 @@ def delete(self, repo, user=None):
7171
try:
7272
repository = self.gl.projects.get('{}/{}'.format(user, repo))
7373
if repository:
74-
result = self.gl.delete(repository.__class__, repository.id)
75-
if not repository or not result:
74+
result = self.gl.projects.delete(repository.id)
75+
if not repository:
7676
raise ResourceNotFoundError("Cannot delete: repository {}/{} does not exists.".format(user, repo))
7777
except GitlabGetError as err:
7878
if err.response_code == 404:
@@ -197,7 +197,7 @@ def load_file(fname, path='.'):
197197

198198
data = {
199199
'title': description,
200-
'visibility_level': 0 if secret else 20
200+
'visibility': 'private' if secret else 'public'
201201
}
202202

203203
try:
@@ -211,12 +211,11 @@ def load_file(fname, path='.'):
211211
namespace = self.username
212212
gist_path = gist_pathes[1]
213213
data.update({
214-
'project_id': '/'.join([namespace, project]),
215214
'code': load_file(gist_path),
216215
'file_name': os.path.basename(gist_path),
217216
}
218217
)
219-
gist = self.gl.project_snippets.create(data)
218+
gist = self.gl.projects.get('/'.join([namespace, project])).snippets.create(data)
220219

221220
elif len(gist_pathes) == 1:
222221
gist_path = gist_pathes[0]
@@ -231,6 +230,7 @@ def load_file(fname, path='.'):
231230
except GitlabCreateError as err:
232231
if err.response_code == 422:
233232
raise ResourceNotFoundError('Feature not available, please upgrade your gitlab instance.') from err
233+
breakpoint()
234234
raise ResourceError('Cannot create snippet') from err
235235

236236
def gist_delete(self, snippet):
@@ -302,7 +302,7 @@ def request_create(self, onto_user, onto_repo, from_branch, onto_branch, title=N
302302
if not title and not description:
303303
raise ArgumentError('Missing message for request creation')
304304

305-
request = self.gl.projects.get(project.id).mergerequests.create(
305+
request = self.gl.projects.get(from_project.id).mergerequests.create(
306306
{
307307
'source_branch': from_branch,
308308
'target_branch': onto_branch,
@@ -323,14 +323,17 @@ def request_create(self, onto_user, onto_repo, from_branch, onto_branch, title=N
323323

324324
except GitlabGetError as err:
325325
raise ResourceNotFoundError(err) from err
326+
except GitlabCreateError as err:
327+
raise ResourceError("Creation error: {}".format(err)) from err
326328
except Exception as err:
329+
breakpoint()
327330
raise ResourceError("Unhandled error: {}".format(err)) from err
328331

329332
def request_list(self, user, repo):
330333
project = self.gl.projects.get('/'.join([user, repo]))
331334
yield "{:>3}\t{:<60}\t{:2}"
332335
yield ('id', 'title', 'URL')
333-
for mr in self.gl.projects.get(project.id).mergerequests.list() :
336+
for mr in self.gl.projects.get(project).mergerequests.list() :
334337
yield ( str(mr.iid),
335338
mr.title,
336339
mr.web_url

tests/helpers.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,7 @@ def action_request_fetch(self, namespace, repository, request, pull=False, fail=
654654
with self.recorder.use_cassette(self._make_cassette_name()):
655655
with self.mockup_git(namespace, repository):
656656
self.set_mock_popen_commands([
657+
('git init', b'Initialized empty Git repository in /tmp/bar/.git/', b'', 0),
657658
('git remote add all {}'.format(local_slug), b'', b'', 0),
658659
('git remote add {} {}'.format(self.service.name, local_slug), b'', b'', 0),
659660
('git remote get-url --all all', local_slug.encode('utf-8'), b'', 0),
@@ -762,15 +763,15 @@ def prepare_project_for_test():
762763
if will_record:
763764
self.repository.git.push(self.service.name, 'master')
764765
# create a new branch
765-
new_branch = self.repository.create_head(source_branch, 'HEAD')
766+
new_branch = self.repository.create_head(source_branch or 'master', 'HEAD')
766767
self.repository.head.reference = new_branch
767768
self.repository.head.reset(index=True, working_tree=True)
768769
# make a modification, commit and push it to that branch
769770
with open(os.path.join(self.repository.working_dir, 'second_file'), 'w') as test:
770771
test.write('La meilleure façon de ne pas avancer est de suivre une idée fixe. J.Prévert')
771772
self.repository.git.add('second_file')
772773
self.repository.git.commit(message='Second commit')
773-
self.repository.git.push(service, source_branch)
774+
self.repository.git.push(self.service.name, source_branch or 'master')
774775
else:
775776
import git
776777
self.service._extracts_ref = lambda *a: git.Reference(

0 commit comments

Comments
 (0)