1#![allow(unreachable_pub)]
2//! Mock version of std::fs::OpenOptions;
3use mockall::mock;
4
5use crate::fs::mocks::MockFile;
6#[cfg(unix)]
7use std::os::unix::fs::OpenOptionsExt;
8#[cfg(windows)]
9use std::os::windows::fs::OpenOptionsExt;
10use std::{io, path::Path};
11
12mock! {
13 #[derive(Debug)]
14 pub OpenOptions {
15 pub fn append(&mut self, append: bool) -> &mut Self;
16 pub fn create(&mut self, create: bool) -> &mut Self;
17 pub fn create_new(&mut self, create_new: bool) -> &mut Self;
18 pub fn open<P: AsRef<Path> + 'static>(&self, path: P) -> io::Result<MockFile>;
19 pub fn read(&mut self, read: bool) -> &mut Self;
20 pub fn truncate(&mut self, truncate: bool) -> &mut Self;
21 pub fn write(&mut self, write: bool) -> &mut Self;
22 }
23 impl Clone for OpenOptions {
24 fn clone(&self) -> Self;
25 }
26 #[cfg(unix)]
27 impl OpenOptionsExt for OpenOptions {
28 fn custom_flags(&mut self, flags: i32) -> &mut Self;
29 fn mode(&mut self, mode: u32) -> &mut Self;
30 }
31 #[cfg(windows)]
32 impl OpenOptionsExt for OpenOptions {
33 fn access_mode(&mut self, access: u32) -> &mut Self;
34 fn share_mode(&mut self, val: u32) -> &mut Self;
35 fn custom_flags(&mut self, flags: u32) -> &mut Self;
36 fn attributes(&mut self, val: u32) -> &mut Self;
37 fn security_qos_flags(&mut self, flags: u32) -> &mut Self;
38 }
39}
40