@@ -17,68 +17,37 @@ def fixture_dir(test_dir):
17
17
return test_dir / "functional" / "fixtures"
18
18
19
19
20
- def reset_gitlab (gl ):
21
- # previously tools/reset_gitlab.py
20
+ def reset_gitlab (gl : gitlab .Gitlab ) -> None :
21
+ """Delete resources (such as projects, groups, users) that shouldn't
22
+ exist."""
22
23
for project in gl .projects .list ():
23
- logging .info (f"Marking for deletion project: { project .path_with_namespace !r} " )
24
24
for deploy_token in project .deploytokens .list ():
25
25
logging .info (
26
- f"Marking for deletion token: { deploy_token .username !r} in "
26
+ f"Deleting deploy token: { deploy_token .username !r} in "
27
27
f"project: { project .path_with_namespace !r} "
28
28
)
29
- deploy_token .delete ()
30
- project .delete ()
29
+ helpers .safe_delete (deploy_token )
30
+ logging .info (f"Deleting project: { project .path_with_namespace !r} " )
31
+ helpers .safe_delete (project )
31
32
for group in gl .groups .list ():
32
- logging .info (f"Marking for deletion group: { group .full_path !r} " )
33
33
for deploy_token in group .deploytokens .list ():
34
34
logging .info (
35
- f"Marking for deletion token: { deploy_token .username !r} in "
35
+ f"Deleting deploy token: { deploy_token .username !r} in "
36
36
f"group: { group .path_with_namespace !r} "
37
37
)
38
- deploy_token .delete ()
39
- group .delete ()
38
+ helpers .safe_delete (deploy_token )
39
+ logging .info (f"Deleting group: { group .full_path !r} " )
40
+ helpers .safe_delete (group )
40
41
for topic in gl .topics .list ():
41
- topic .delete ()
42
+ logging .info (f"Deleting topic: { topic .name !r} " )
43
+ helpers .safe_delete (topic )
42
44
for variable in gl .variables .list ():
43
- logging .info (f"Marking for deletion variable: { variable .key !r} " )
44
- variable . delete ( )
45
+ logging .info (f"Deleting variable: { variable .key !r} " )
46
+ helpers . safe_delete ( variable )
45
47
for user in gl .users .list ():
46
48
if user .username != "root" :
47
- logging .info (f"Marking for deletion user: { user .username !r} " )
48
- user .delete (hard_delete = True )
49
-
50
- # Ensure everything has been reset
51
- start_time = time .perf_counter ()
52
-
53
- def wait_for_list_size (
54
- rest_manager : gitlab .base .RESTManager , description : str , max_length : int = 0
55
- ) -> None :
56
- """Wait for the list() length to be no greater than expected maximum or fail
57
- test if timeout is exceeded"""
58
- logging .info (f"Checking { description !r} has no more than { max_length } items" )
59
- for count in range (helpers .MAX_ITERATIONS ):
60
- items = rest_manager .list ()
61
- if len (items ) <= max_length :
62
- break
63
- logging .info (
64
- f"Iteration: { count } Waiting for { description !r} items to be deleted: "
65
- f"{ [x .name for x in items ]} "
66
- )
67
- time .sleep (helpers .SLEEP_INTERVAL )
68
-
69
- elapsed_time = time .perf_counter () - start_time
70
- error_message = (
71
- f"More than { max_length } { description !r} items still remaining and timeout "
72
- f"({ elapsed_time } ) exceeded: { [x .name for x in items ]} "
73
- )
74
- if len (items ) > max_length :
75
- logging .error (error_message )
76
- assert len (items ) <= max_length , error_message
77
-
78
- wait_for_list_size (rest_manager = gl .projects , description = "projects" )
79
- wait_for_list_size (rest_manager = gl .groups , description = "groups" )
80
- wait_for_list_size (rest_manager = gl .variables , description = "variables" )
81
- wait_for_list_size (rest_manager = gl .users , description = "users" , max_length = 1 )
49
+ logging .info (f"Deleting user: { user .username !r} " )
50
+ helpers .safe_delete (user , hard_delete = True )
82
51
83
52
84
53
def set_token (container , fixture_dir ):
0 commit comments