Test for BadFile

This commit is contained in:
Jeremy Soller 2016-08-14 19:17:55 -06:00
parent d97e2e4b4a
commit 8a6d9b8c9d
2 changed files with 19 additions and 5 deletions

View file

@ -5,7 +5,12 @@ use super::{Error, Result};
/// Read syscall /// Read syscall
pub fn read(fd: usize, buf: &mut [u8]) -> Result<usize> { pub fn read(fd: usize, buf: &mut [u8]) -> Result<usize> {
println!("Read {}: {}", fd, buf.len()); println!("Read {}: {}", fd, buf.len());
if let Some(file) = unsafe { &mut ::context::CONTEXT }.files.get(fd) {
println!("{:?}", file);
Ok(0) Ok(0)
} else {
Err(Error::BadFile)
}
} }
/// Write syscall /// Write syscall

View file

@ -1,17 +1,19 @@
use arch::interrupt::{enable_interrupts, halt}; use arch::interrupt::{enable_interrupts, halt};
use syscall; use syscall::{self, Error};
/// Test halting
#[test] #[test]
fn halt_with_interrupts() { fn halt_with_interrupts() {
unsafe { unsafe {
enable_interrupts(); //enable_interrupts();
halt(); //halt();
} }
} }
/// Test stdio
#[test] #[test]
fn open_stdio() { fn stdio() {
// Test opening stdin // Test opening stdin
assert_eq!(syscall::open(b"debug:", 0), Ok(0)); assert_eq!(syscall::open(b"debug:", 0), Ok(0));
@ -29,3 +31,10 @@ fn open_stdio() {
let stderr_str = b"STDERR"; let stderr_str = b"STDERR";
assert_eq!(syscall::write(2, stderr_str), Ok(stderr_str.len())); assert_eq!(syscall::write(2, stderr_str), Ok(stderr_str.len()));
} }
/// Test that invalid reads/writes cause errors
#[test]
fn invalid_path() {
assert_eq!(syscall::read(999, &mut []), Err(Error::BadFile));
assert_eq!(syscall::write(999, &[]), Err(Error::BadFile));
}