diff --git a/src/fs/real/reader.rs b/src/fs/real/reader.rs index 93ee9a2..31ad158 100644 --- a/src/fs/real/reader.rs +++ b/src/fs/real/reader.rs @@ -1,7 +1,7 @@ // use std::{ fmt::Display, - path::Path, + path::Path, str::Lines, }; use crate::fs::Result; @@ -19,6 +19,10 @@ impl ReaderReal { pub fn as_str(&self) -> &str { &self.contents } + + pub fn lines(&self) -> Lines<'_> { + self.contents.lines() + } } impl Display for ReaderReal { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { diff --git a/tests/fs.rs b/tests/fs.rs index 2c32f7d..15dae46 100644 --- a/tests/fs.rs +++ b/tests/fs.rs @@ -114,6 +114,22 @@ mod file { Ok(()) } + + #[test] + fn read_file_lines() -> TestResult { + let fs = fs::temp().expect("temp fs"); + + let path = fs.base().join("foo"); + let mut file = fs.file(&path); + file.write("line 1\nline 2").expect("write"); + + let reader = file.reader().expect("reader"); + let lines = reader.lines().collect::>(); + + assert_eq!(lines, vec!["line 1", "line 2"]); + + Ok(()) + } } mod dir_create {