Fixed test failure on Windows
This commit is contained in:
parent
6681322370
commit
d6416e0239
1 changed files with 13 additions and 1 deletions
|
@ -1,9 +1,11 @@
|
||||||
use std::{
|
use std::{
|
||||||
collections::HashMap,
|
collections::HashMap,
|
||||||
|
ops::Deref,
|
||||||
path::{Path, PathBuf},
|
path::{Path, PathBuf},
|
||||||
str::FromStr,
|
str::FromStr,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use regex::Regex;
|
||||||
use rusqlite::Connection;
|
use rusqlite::Connection;
|
||||||
|
|
||||||
use crate::app::{config, index, scanner, Error};
|
use crate::app::{config, index, scanner, Error};
|
||||||
|
@ -86,12 +88,22 @@ fn read_users(db_file_path: &PathBuf) -> Result<HashMap<u32, config::storage::Us
|
||||||
Ok(users)
|
Ok(users)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn sanitize_path(source: &PathBuf) -> PathBuf {
|
||||||
|
let path_string = source.to_string_lossy();
|
||||||
|
let separator_regex = Regex::new(r"\\|/").unwrap();
|
||||||
|
let mut correct_separator = String::new();
|
||||||
|
correct_separator.push(std::path::MAIN_SEPARATOR);
|
||||||
|
let path_string = separator_regex.replace_all(&path_string, correct_separator.as_str());
|
||||||
|
PathBuf::from(path_string.deref())
|
||||||
|
}
|
||||||
|
|
||||||
fn virtualize_path(
|
fn virtualize_path(
|
||||||
real_path: &PathBuf,
|
real_path: &PathBuf,
|
||||||
mount_dirs: &Vec<config::storage::MountDir>,
|
mount_dirs: &Vec<config::storage::MountDir>,
|
||||||
) -> Result<PathBuf, Error> {
|
) -> Result<PathBuf, Error> {
|
||||||
|
let sanitized = sanitize_path(real_path); // Paths in test database use `/` separators, but need `\` when running tests on Windows
|
||||||
for mount_dir in mount_dirs {
|
for mount_dir in mount_dirs {
|
||||||
if let Ok(tail) = real_path.strip_prefix(&mount_dir.source) {
|
if let Ok(tail) = sanitized.strip_prefix(&mount_dir.source) {
|
||||||
return Ok(Path::new(&mount_dir.name).join(tail));
|
return Ok(Path::new(&mount_dir.name).join(tail));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue