@@ -3,6 +3,7 @@ use std::process::{Command, ExitStatus, Stdio};
33use std:: io:: Result as IoResult ;
44
55use bon:: bon;
6+ use log:: warn;
67
78use crate :: helpers:: config_manager:: ConfigManager ;
89
@@ -58,25 +59,26 @@ impl TestRunner {
5859 for & user in user_list {
5960 let user_check = Command :: new ( "id" )
6061 . arg ( user)
61- . stdout ( Stdio :: null ( ) )
62- . stderr ( Stdio :: null ( ) )
6362 . status ( ) ;
6463 match user_check {
65- Ok ( _) => { }
66- Err ( e) => {
64+ Ok ( e) => {
6765 //check if error is due to user not existing
68- if e . kind ( ) != std :: io :: ErrorKind :: NotFound {
69- eprintln ! ( "Warning: Failed to check user '{}': {}" , user , e ) ;
70- continue ;
71- }
72- // User does not exist, attempt to create
73- let create_status = Command :: new ( "sudo" )
74- . args ( & [ "useradd" , "-m" , user] )
75- . status ( ) ;
76- if let Err ( e ) = create_status {
77- eprintln ! ( "Warning: Failed to create user '{}': {}" , user , e ) ;
66+ if !e . success ( ) {
67+ // User does not exist, attempt to create
68+ let create_status = Command :: new ( "useradd" )
69+ . args ( & [ "-m" , user ] )
70+ . status ( ) ;
71+ if let Err ( e ) = create_status {
72+ println ! ( "Warning: Failed to create user '{}': {}" , user, e ) ;
73+ }
74+ println ! ( "Created user '{}' for testing purposes" , user ) ;
75+ added_users . push ( user. to_string ( ) ) ;
7876 }
79- added_users. push ( user. to_string ( ) ) ;
77+ println ! ( "User '{}' exists" , user) ;
78+
79+ }
80+ Err ( e) => {
81+ println ! ( "Warning: Failed to check user '{}': {}" , user, e) ;
8082 }
8183 }
8284 }
@@ -86,25 +88,23 @@ impl TestRunner {
8688 for & group in group_list {
8789 let group_check = Command :: new ( "getent" )
8890 . args ( & [ "group" , group] )
89- . stdout ( Stdio :: null ( ) )
90- . stderr ( Stdio :: null ( ) )
9191 . status ( ) ;
9292 match group_check {
93- Ok ( _) => { }
94- Err ( e) => {
95- //check if error is due to group not existing
96- if e. kind ( ) != std:: io:: ErrorKind :: NotFound {
97- eprintln ! ( "Warning: Failed to check group '{}': {}" , group, e) ;
98- continue ;
99- }
100- // Group does not exist, attempt to create
101- let create_status = Command :: new ( "sudo" )
102- . args ( & [ "groupadd" , group] )
103- . status ( ) ;
104- if let Err ( e) = create_status {
105- eprintln ! ( "Warning: Failed to create group '{}': {}" , group, e) ;
93+ Ok ( e) => {
94+ if !e. success ( ) {
95+ // Group does not exist, attempt to create
96+ let create_status = Command :: new ( "groupadd" )
97+ . args ( & [ group] )
98+ . status ( ) ;
99+ if let Err ( e) = create_status {
100+ println ! ( "Warning: Failed to create group '{}': {}" , group, e) ;
101+ }
102+ added_groups. push ( group. to_string ( ) ) ;
103+ println ! ( "Created group '{}' for testing purposes" , group) ;
106104 }
107- added_groups. push ( group. to_string ( ) ) ;
105+ }
106+ Err ( e) => {
107+ println ! ( "Warning: Failed to check group '{}': {}" , group, e) ;
108108 }
109109 }
110110 }
@@ -117,17 +117,19 @@ impl TestRunner {
117117 . stderr ( Stdio :: piped ( ) ) ;
118118
119119 let output = command. output ( ) ?;
120+ println ! ( "Output : {}" , String :: from_utf8( output. stdout. clone( ) ) . unwrap( ) ) ;
121+ println ! ( "Error : {}" , String :: from_utf8( output. stderr. clone( ) ) . unwrap( ) ) ;
120122
121123 // Clean up any users or groups we added
122124 for user in added_users {
123- let _ = Command :: new ( "sudo " )
124- . args ( & [ "userdel" , " -r", & user] )
125- . status ( ) ;
125+ let _ = Command :: new ( "userdel " )
126+ . args ( & [ "-r" , & user] )
127+ . status ( ) ? ;
126128 }
127129 for group in added_groups {
128- let _ = Command :: new ( "sudo " )
129- . args ( & [ "groupdel" , & group] )
130- . status ( ) ;
130+ let _ = Command :: new ( "groupdel " )
131+ . args ( & [ & group] )
132+ . status ( ) ? ;
131133 }
132134
133135 Ok ( CommandResult {
0 commit comments