diff --git a/src/header/time/mod.rs b/src/header/time/mod.rs index 087aa090fec7fdf9de9f393f1bef446520d3a54c..7c17155a5e0b48c8d9aec1af8a3279196fc860a5 100644 --- a/src/header/time/mod.rs +++ b/src/header/time/mod.rs @@ -5,7 +5,7 @@ use crate::{ platform::{self, types::*, Pal, Sys}, }; -use self::constants::*; +pub use self::constants::*; pub mod constants; mod strftime; diff --git a/src/platform/mod.rs b/src/platform/mod.rs index 402ad76d44174f1b48bf4e9b4570c199a59a3461..5b63f1a997aa3cceca47d8fb54fdc373bf62fa5b 100644 --- a/src/platform/mod.rs +++ b/src/platform/mod.rs @@ -26,6 +26,9 @@ mod sys; #[path = "redox/mod.rs"] mod sys; +#[cfg(test)] +mod test; + mod pte; pub use self::rlb::{Line, RawLineBuffer}; diff --git a/src/platform/test/epoll.rs b/src/platform/test/epoll.rs new file mode 100644 index 0000000000000000000000000000000000000000..58c750d197b359416fcaf710ca8fe0756ff74dd6 --- /dev/null +++ b/src/platform/test/epoll.rs @@ -0,0 +1 @@ +use crate::platform::{PalEpoll, Sys}; diff --git a/src/platform/test/mod.rs b/src/platform/test/mod.rs new file mode 100644 index 0000000000000000000000000000000000000000..3ac5a17166659584384f2661af8051a3849e8dcc --- /dev/null +++ b/src/platform/test/mod.rs @@ -0,0 +1,70 @@ +use crate::platform::{Pal, Sys}; + +// Stub for call used in exit +#[no_mangle] +pub extern "C" fn pthread_terminate() {} + +mod epoll; + +#[test] +fn access() { + use crate::header::{ + errno, + unistd, + }; + + //TODO: create test files + assert_eq!(Sys::access(c_str!("not a file!"), unistd::F_OK), !0); + assert_eq!(Sys::access(c_str!("README.md"), unistd::R_OK), 0); + assert_eq!(Sys::access(c_str!("README.md"), unistd::W_OK), 0); + assert_eq!(Sys::access(c_str!("README.md"), unistd::X_OK), !0); +} + +#[test] +fn brk() { + use core::ptr; + + let current = Sys::brk(ptr::null_mut()); + assert_ne!(current, ptr::null_mut()); + + let request = unsafe { current.add(4096) }; + let next = Sys::brk(request); + assert_eq!(next, request); +} + +#[test] +fn chdir() { + //TODO: create test files + assert_eq!(Sys::chdir(c_str!("src")), 0); +} + +//TODO: chmod + +//TODO: chown + +#[test] +fn clock_gettime() { + use crate::header::{ + time + }; + + { + let mut timespec = time::timespec { + tv_sec: -1, + tv_nsec: -1, + }; + assert_eq!(Sys::clock_gettime(time::CLOCK_REALTIME, &mut timespec), 0); + assert_ne!(timespec.tv_sec, -1); + assert_ne!(timespec.tv_nsec, -1); + } + + { + let mut timespec = time::timespec { + tv_sec: -1, + tv_nsec: -1, + }; + assert_eq!(Sys::clock_gettime(time::CLOCK_MONOTONIC, &mut timespec), 0); + assert_ne!(timespec.tv_sec, -1); + assert_ne!(timespec.tv_nsec, -1); + } +}