@@ -17,68 +17,37 @@ def fixture_dir(test_dir):
1717return test_dir / "functional" / "fixtures"
1818
1919
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."""
2223for project in gl .projects .list ():
23- logging .info (f"Marking for deletion project:{ project .path_with_namespace !r} " )
2424for deploy_token in project .deploytokens .list ():
2525logging .info (
26- f"Marking for deletion token:{ deploy_token .username !r} in "
26+ f"Deleting deploy token:{ deploy_token .username !r} in "
2727f"project:{ project .path_with_namespace !r} "
2828 )
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 )
3132for group in gl .groups .list ():
32- logging .info (f"Marking for deletion group:{ group .full_path !r} " )
3333for deploy_token in group .deploytokens .list ():
3434logging .info (
35- f"Marking for deletion token:{ deploy_token .username !r} in "
35+ f"Deleting deploy token:{ deploy_token .username !r} in "
3636f"group:{ group .path_with_namespace !r} "
3737 )
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 )
4041for topic in gl .topics .list ():
41- topic .delete ()
42+ logging .info (f"Deleting topic:{ topic .name !r} " )
43+ helpers .safe_delete (topic )
4244for 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 )
4547for user in gl .users .list ():
4648if 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 )
8251
8352
8453def set_token (container ,fixture_dir ):