@@ -244,3 +244,72 @@ pub fn set_mode(path: &Path, mode: u32) -> Result<(), PermissionError> {
244
244
}
245
245
} )
246
246
}
247
+
248
+ #[ cfg( test) ]
249
+ mod test {
250
+ use super :: * ;
251
+ use std:: { fs:: File , io:: Write } ;
252
+
253
+ #[ test]
254
+ fn test_get_uid ( ) {
255
+ let _uid = get_uid ( ) ;
256
+ }
257
+
258
+ #[ test]
259
+ fn test_get_gid ( ) {
260
+ let _gid = get_gid ( ) ;
261
+ }
262
+
263
+ #[ test]
264
+ fn test_get_euid ( ) {
265
+ let _euid = get_euid ( ) ;
266
+ }
267
+
268
+ #[ test]
269
+ fn test_chown ( ) {
270
+ // Only test chown when running as root
271
+ if get_euid ( ) == 0 {
272
+ let temp_dir = tempfile:: tempdir ( )
273
+ . expect ( "failed to create temporary directory" ) ;
274
+ let p = temp_dir. path ( ) . join ( "testfile.txt" ) ;
275
+ let mut f = File :: create ( & p) . expect ( "failed to create file" ) ;
276
+ f. write_all ( b"test content\n " )
277
+ . expect ( "failed to write to file" ) ;
278
+ let r = chown ( "root:root" , & p) ;
279
+ assert ! ( r. is_ok( ) ) ;
280
+ }
281
+ }
282
+
283
+ #[ test]
284
+ fn test_set_mode ( ) {
285
+ let temp_dir = tempfile:: tempdir ( )
286
+ . expect ( "failed to create temporary directory" ) ;
287
+ let p = temp_dir. path ( ) . join ( "testfile.txt" ) ;
288
+ let mut f = File :: create ( & p) . expect ( "failed to create file" ) ;
289
+ f. write_all ( b"test content\n " )
290
+ . expect ( "failed to write to file" ) ;
291
+
292
+ let r = set_mode ( & p, 0o777 ) ;
293
+ assert ! ( r. is_ok( ) ) ;
294
+ }
295
+
296
+ #[ test]
297
+ fn test_try_from_str_for_userids ( ) {
298
+ let r = UserIds :: try_from ( "root:root" ) ;
299
+ assert ! ( r. is_ok( ) ) ;
300
+ let r = UserIds :: try_from ( "invalid:root" ) ;
301
+ assert ! ( r. is_err( ) ) ;
302
+ let r = UserIds :: try_from ( "root:invalid" ) ;
303
+ assert ! ( r. is_err( ) ) ;
304
+ let r = UserIds :: try_from ( "invalid" ) ;
305
+ assert ! ( r. is_err( ) ) ;
306
+ let r = UserIds :: try_from ( "invalid:invalid" ) ;
307
+ assert ! ( r. is_err( ) ) ;
308
+ let r = UserIds :: try_from ( "" ) ;
309
+ assert ! ( r. is_err( ) ) ;
310
+ let r = UserIds :: try_from ( ":invalid" ) ;
311
+ assert ! ( r. is_err( ) ) ;
312
+ let r = UserIds :: try_from ( "invalid:" ) ;
313
+ assert ! ( r. is_err( ) ) ;
314
+ }
315
+ }
0 commit comments