Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb8d3aa5

Browse files
chore: fixtures: after delete() wait to verify deleted
In our fixtures that create: - groups - project merge requests - projects - usersThey delete the created objects after use. Now wait to ensure theobjects are deleted before continuing as having unexpected objectsexisting can impact some of our tests.
1 parentfcbced8 commitb8d3aa5

File tree

2 files changed

+55
-27
lines changed

2 files changed

+55
-27
lines changed

‎tests/functional/conftest.py‎

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@
99

1010
importgitlab
1111
importgitlab.base
12-
13-
SLEEP_INTERVAL=0.5
14-
TIMEOUT=60# seconds before timeout will occur
12+
fromtests.functionalimporthelpers
1513

1614

1715
@pytest.fixture(scope="session")
@@ -49,7 +47,7 @@ def reset_gitlab(gl):
4947
logging.info(f"Marking for deletion user:{user.username!r}")
5048
user.delete(hard_delete=True)
5149

52-
max_iterations=int(TIMEOUT/SLEEP_INTERVAL)
50+
max_iterations=int(helpers.TIMEOUT/helpers.SLEEP_INTERVAL)
5351

5452
# Ensure everything has been reset
5553
start_time=time.perf_counter()
@@ -68,7 +66,7 @@ def wait_for_list_size(
6866
f"Iteration:{count} Waiting for{description!r} items to be deleted: "
6967
f"{[x.nameforxinitems]}"
7068
)
71-
time.sleep(SLEEP_INTERVAL)
69+
time.sleep(helpers.SLEEP_INTERVAL)
7270

7371
elapsed_time=time.perf_counter()-start_time
7472
error_message= (
@@ -280,10 +278,7 @@ def group(gl):
280278

281279
yieldgroup
282280

283-
try:
284-
group.delete()
285-
exceptgitlab.exceptions.GitlabDeleteErrorase:
286-
print(f"Group already deleted:{e}")
281+
helpers.safe_delete(object=group)
287282

288283

289284
@pytest.fixture(scope="module")
@@ -296,10 +291,7 @@ def project(gl):
296291

297292
yieldproject
298293

299-
try:
300-
project.delete()
301-
exceptgitlab.exceptions.GitlabDeleteErrorase:
302-
print(f"Project already deleted:{e}")
294+
helpers.safe_delete(object=project)
303295

304296

305297
@pytest.fixture(scope="function")
@@ -327,7 +319,7 @@ def _merge_request(*, source_branch: str):
327319
assertresultisTrue,"sidekiq process should have terminated but did not"
328320

329321
project.refresh()# Gets us the current default branch
330-
project.branches.create(
322+
mr_branch=project.branches.create(
331323
{"branch":source_branch,"ref":project.default_branch}
332324
)
333325
# NOTE(jlvillal): Must create a commit in the new branch before we can
@@ -359,18 +351,14 @@ def _merge_request(*, source_branch: str):
359351
time.sleep(0.5)
360352
assertmr.merge_status!="checking"
361353

362-
to_delete.append((mr.iid,source_branch))
354+
to_delete.append((mr,mr_branch))
363355
returnmr
364356

365357
yield_merge_request
366358

367-
formr_iid,source_branchinto_delete:
368-
project.mergerequests.delete(mr_iid)
369-
try:
370-
project.branches.delete(source_branch)
371-
exceptgitlab.exceptions.GitlabDeleteError:
372-
# Ignore if branch was already deleted
373-
pass
359+
formr,mr_branchinto_delete:
360+
helpers.safe_delete(object=mr)
361+
helpers.safe_delete(object=mr_branch)
374362

375363

376364
@pytest.fixture(scope="module")
@@ -434,11 +422,8 @@ def user(gl):
434422

435423
yielduser
436424

437-
try:
438-
# Use `hard_delete=True` or a 'Ghost User' may be created.
439-
user.delete(hard_delete=True)
440-
exceptgitlab.exceptions.GitlabDeleteErrorase:
441-
print(f"User already deleted:{e}")
425+
# Use `hard_delete=True` or a 'Ghost User' may be created.
426+
helpers.safe_delete(object=user,hard_delete=True)
442427

443428

444429
@pytest.fixture(scope="module")

‎tests/functional/helpers.py‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
importlogging
2+
importtime
3+
4+
importpytest
5+
6+
importgitlab.base
7+
8+
SLEEP_INTERVAL=0.5
9+
TIMEOUT=60# seconds before timeout will occur
10+
11+
12+
defdelete_object(
13+
*,object:gitlab.base.RESTObject,index:int,hard_delete:bool=False
14+
):
15+
ifindex:
16+
logging.info(f"Attempt{index+1} to delete{object!r}.")
17+
try:
18+
ifhard_delete:
19+
object.delete(hard_delete=True)
20+
else:
21+
object.delete()
22+
exceptgitlab.exceptions.GitlabDeleteError:
23+
logging.info(f"{object!r} already deleted.")
24+
pass
25+
26+
27+
defsafe_delete(
28+
*,
29+
object:gitlab.base.RESTObject,
30+
hard_delete:bool=False,
31+
)->None:
32+
"""Ensure the object specified can not be retrieved. If object still exists after
33+
timeout period, fail the test"""
34+
max_iterations=int(TIMEOUT/SLEEP_INTERVAL)
35+
manager=object.manager
36+
forindexinrange(max_iterations):
37+
try:
38+
object=manager.get(object.get_id())
39+
exceptgitlab.exceptions.GitlabGetError:
40+
return
41+
delete_object(object=object,index=index,hard_delete=hard_delete)
42+
time.sleep(SLEEP_INTERVAL)
43+
pytest.fail(f"{object!r} was not deleted")

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp