From 2e27cf525e76ec9aa884f354d7a750c226863539 Mon Sep 17 00:00:00 2001 From: Jeremy Soller <jeremy@system76.com> Date: Tue, 10 Mar 2020 20:57:07 -0600 Subject: [PATCH] Work on adding cargo test capability --- src/header/time/mod.rs | 2 +- src/platform/mod.rs | 3 ++ src/platform/test/epoll.rs | 1 + src/platform/test/mod.rs | 70 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 src/platform/test/epoll.rs create mode 100644 src/platform/test/mod.rs diff --git a/src/header/time/mod.rs b/src/header/time/mod.rs index 087aa090..7c17155a 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 402ad76d..5b63f1a9 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 00000000..58c750d1 --- /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 00000000..3ac5a171 --- /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); + } +} -- GitLab