• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use rustix::process::Resource;
2 #[cfg(not(target_os = "haiku"))] // No `Core` on Haiku.
3 use rustix::process::Rlimit;
4 
5 #[test]
test_getrlimit()6 fn test_getrlimit() {
7     let lim = rustix::process::getrlimit(Resource::Stack);
8     assert_ne!(lim.current, Some(0));
9     assert_ne!(lim.maximum, Some(0));
10 }
11 
12 #[cfg(not(target_os = "haiku"))] // No `Core` on Haiku.
13 #[test]
test_setrlimit()14 fn test_setrlimit() {
15     let old = rustix::process::getrlimit(Resource::Core);
16     let new = Rlimit {
17         current: Some(0),
18         maximum: Some(4096),
19     };
20     assert_ne!(old, new);
21     rustix::process::setrlimit(Resource::Core, new.clone()).unwrap();
22 
23     let lim = rustix::process::getrlimit(Resource::Core);
24     assert_eq!(lim, new);
25 
26     #[cfg(any(target_os = "android", target_os = "linux"))]
27     {
28         let new = Rlimit {
29             current: Some(0),
30             maximum: Some(0),
31         };
32 
33         let first = rustix::process::getrlimit(Resource::Core);
34 
35         let old = match rustix::process::prlimit(None, Resource::Core, new.clone()) {
36             Ok(rlimit) => rlimit,
37             Err(rustix::io::Errno::NOSYS) => return,
38             Err(err) => Err(err).unwrap(),
39         };
40 
41         assert_eq!(first, old);
42 
43         let other = Rlimit {
44             current: Some(0),
45             maximum: Some(0),
46         };
47 
48         let again =
49             rustix::process::prlimit(Some(rustix::process::getpid()), Resource::Core, other)
50                 .unwrap();
51 
52         assert_eq!(again, new);
53     }
54 }
55