From 3351805fffadcb9747f772ca9ea05e0d6d13619c Mon Sep 17 00:00:00 2001 From: Sven-Hendrik Haase Date: Sun, 9 Mar 2025 07:55:03 +0100 Subject: Fix dir size calculation for percent-encoded paths with spaces --- tests/api.rs | 12 ++++++++++-- tests/fixtures/mod.rs | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/api.rs b/tests/api.rs index 32d6cef..fe313b0 100644 --- a/tests/api.rs +++ b/tests/api.rs @@ -1,5 +1,6 @@ use std::collections::HashMap; +use percent_encoding::{NON_ALPHANUMERIC, utf8_percent_encode}; use reqwest::{StatusCode, blocking::Client}; use rstest::rstest; @@ -7,10 +8,17 @@ mod fixtures; use crate::fixtures::{DIRECTORIES, Error, TestServer, server}; +/// Test that we can get dir size for plain paths as well as percent-encoded paths #[rstest] -fn api_dir_size(server: TestServer) -> Result<(), Error> { +#[case(DIRECTORIES[0].to_string())] +#[case(DIRECTORIES[1].to_string())] +#[case(DIRECTORIES[2].to_string())] +#[case(utf8_percent_encode(DIRECTORIES[0], NON_ALPHANUMERIC).to_string())] +#[case(utf8_percent_encode(DIRECTORIES[1], NON_ALPHANUMERIC).to_string())] +#[case(utf8_percent_encode(DIRECTORIES[2], NON_ALPHANUMERIC).to_string())] +fn api_dir_size(#[case] dir: String, server: TestServer) -> Result<(), Error> { let mut command = HashMap::new(); - command.insert("DirSize", DIRECTORIES[0]); + command.insert("DirSize", dir); let resp = Client::new() .post(server.url().join(&format!("__miniserve_internal/api"))?) diff --git a/tests/fixtures/mod.rs b/tests/fixtures/mod.rs index f2869b7..5b331e9 100644 --- a/tests/fixtures/mod.rs +++ b/tests/fixtures/mod.rs @@ -34,10 +34,10 @@ pub static FILES: &[&str] = &[ pub static HIDDEN_FILES: &[&str] = &[".hidden_file1", ".hidden_file2"]; /// Directory names for testing purpose -pub static DIRECTORIES: &[&str] = &["dira/", "dirb/", "dirc/"]; +pub static DIRECTORIES: &[&str] = &["dira/", "dirb/", "dir space/"]; /// Hidden directories for testing purpose -pub static HIDDEN_DIRECTORIES: &[&str] = &[".hidden_dir1/", ".hidden_dir2/"]; +pub static HIDDEN_DIRECTORIES: &[&str] = &[".hidden_dir1/", ".hidden space dir/"]; /// Name of a deeply nested file pub static DEEPLY_NESTED_FILE: &str = "very/deeply/nested/test.rs"; -- cgit v1.2.3