summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2022-10-15 10:03:51 +0300
committerLars Wirzenius <liw@liw.fi>2022-10-15 10:03:51 +0300
commit5a0e8a1a7bdf9b8dbe8e425643aaef259624fa69 (patch)
tree80c018d12d87427c9b1e974a6c1407b4131546cd
parentde906b71f75bcf34f824f238479403bfa0cfbecb (diff)
downloadriki-5a0e8a1a7bdf9b8dbe8e425643aaef259624fa69.tar.gz
fix: name of SourceDir
Sponsored-by: author
-rw-r--r--src/site.rs4
-rw-r--r--src/srcdir.rs43
2 files changed, 30 insertions, 17 deletions
diff --git a/src/site.rs b/src/site.rs
index b314627..c522fcc 100644
--- a/src/site.rs
+++ b/src/site.rs
@@ -3,7 +3,7 @@ use crate::git::git_whatchanged;
use crate::name::{Name, NameBuilder, Names};
use crate::page::{MarkdownPage, UnprocessedPage, WikitextPage};
use crate::parser::WikitextParser;
-use crate::srcdir::{PathFilter, SouceDir};
+use crate::srcdir::{PathFilter, SourceDir};
use crate::token::TokenPatterns;
use crate::util::make_relative_link;
use log::{debug, info, trace};
@@ -140,7 +140,7 @@ impl Site {
}
fn all_files(&self) -> Result<Vec<Name>, SiteError> {
- let mut srcdir = SouceDir::new(self.builder.srcdir());
+ let mut srcdir = SourceDir::new(self.builder.srcdir());
srcdir.scan()?;
let filter = PathFilter::new(Self::EXCLUDE_SUBSTRINGS, Self::EXCLUDE_ENDS);
diff --git a/src/srcdir.rs b/src/srcdir.rs
index 7958c60..1b87500 100644
--- a/src/srcdir.rs
+++ b/src/srcdir.rs
@@ -3,31 +3,45 @@ use log::trace;
use std::path::{Path, PathBuf};
use walkdir::WalkDir;
-pub struct SouceDir {
+pub struct SourceDir {
path: PathBuf,
files: Vec<PathBuf>,
+ artificial: bool,
}
-impl SouceDir {
+impl SourceDir {
pub fn new(path: &Path) -> Self {
Self {
path: path.into(),
files: vec![],
+ artificial: false,
}
}
+ pub fn insert_for_tests<P>(&mut self, path: P)
+ where
+ P: AsRef<Path>
+ {
+ self.artificial = true;
+ self.insert(path.as_ref());
+ }
+
pub fn insert(&mut self, path: &Path) {
trace!("Source Dir::insert: path={}", path.display());
self.files.push(path.into());
}
pub fn scan(&mut self) -> Result<(), SiteError> {
- trace!("SourceDir::scan: find files in {}", self.path.display());
- for e in WalkDir::new(&self.path) {
- let e = e.map_err(|err| SiteError::WalkDir(self.path.clone(), err))?;
- let path = e.path();
- trace!("SourceDir::scan: found {}", path.display());
- self.insert(path);
+ if self.artificial {
+ trace!("SourceDir::scan: artificial mode, not actually scanning");
+ } else {
+ trace!("SourceDir::scan: find files in {}", self.path.display());
+ for e in WalkDir::new(&self.path) {
+ let e = e.map_err(|err| SiteError::WalkDir(self.path.clone(), err))?;
+ let path = e.path();
+ trace!("SourceDir::scan: found {}", path.display());
+ self.insert(path);
+ }
}
Ok(())
}
@@ -59,10 +73,9 @@ impl PathFilter {
self.excluded_suffixes.push(s);
}
-
pub fn is_included<P>(&self, path: P) -> bool
where
- P: AsRef<Path>
+ P: AsRef<Path>,
{
let path = path.as_ref().to_string_lossy();
for pat in self.excluded_suffixes.iter() {
@@ -85,33 +98,33 @@ mod test {
#[test]
fn includes_dotgit_by_default() {
- let filter = PathFilter::default();
+ let filter = PathFilter::default();
assert!(filter.is_included(".git"));
}
#[test]
fn excludes_dotgit_if_requested() {
- let mut filter = PathFilter::default();
+ let mut filter = PathFilter::default();
filter.exclude_substring(".git");
assert!(!filter.is_included(".git"));
}
#[test]
fn includes_footilde_by_default() {
- let filter = PathFilter::default();
+ let filter = PathFilter::default();
assert!(filter.is_included("foo~"));
}
#[test]
fn includes_footildebar_if_tilde_suffix_is_excluded() {
- let mut filter = PathFilter::default();
+ let mut filter = PathFilter::default();
filter.exclude_suffix("~");
assert!(filter.is_included("foo~bar"));
}
#[test]
fn excludes_footilde_if_tilde_suffix_is_excluded() {
- let mut filter = PathFilter::default();
+ let mut filter = PathFilter::default();
filter.exclude_suffix("~");
assert!(!filter.is_included("foo~"));
}