@@ -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 ):