filedesc 0.6.3

thin wrapper around raw file descriptors
Documentation
use crate::FileDesc;
use assert2::{assert, let_assert};

#[test]
fn test_get_close_on_exec() {
	let fd = unsafe { FileDesc::duplicate_raw_fd(2i32).unwrap() };
	assert!(let Ok(true) = fd.get_close_on_exec());
	assert!(let Ok(()) = fd.set_close_on_exec(false));
	assert!(let Ok(false) = fd.get_close_on_exec());
	assert!(let Ok(_) = fd.duplicate());
}

#[test]
fn duplicate_convert_stdout() {
	let_assert!(Ok(fd) = FileDesc::duplicate_from(&std::io::stdout()));
	assert!(fd.as_raw_fd() != 0);
	assert!(fd.as_raw_fd() != 1);
	assert!(fd.as_raw_fd() != 2);

	let raw = fd.as_raw_fd();
	let fd = FileDesc::new(fd.into_fd());
	assert!(fd.as_raw_fd() == raw);
}