From 15054fed819a3020eab00e961fd76955589e62a4 Mon Sep 17 00:00:00 2001 From: Stephan Dilly Date: Sun, 9 May 2021 17:50:52 +0200 Subject: [PATCH] 255 long filename is the limit on macos --- asyncgit/src/sync/utils.rs | 47 ++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/asyncgit/src/sync/utils.rs b/asyncgit/src/sync/utils.rs index 6a7ed4f9..21d273d9 100644 --- a/asyncgit/src/sync/utils.rs +++ b/asyncgit/src/sync/utils.rs @@ -395,9 +395,28 @@ mod tests { Ok(()) } +} + +#[cfg(test)] +mod test_long_paths { + use std::path::Path; + + use crate::sync::{ + stage_add_file, + status::{get_status, StatusType}, + tests::{get_statuses, repo_init}, + utils::repo_write_file, + }; + + fn long_file_name_255() -> String { + format!( + "{}.txt", + std::iter::repeat("a").take(255 - 4).collect::() + ) + } #[test] - fn test_stage_long_filepath() { + fn test_stage_long_filename() { let (_td, repo) = repo_init().unwrap(); let repo_path = repo.workdir().unwrap().to_str().unwrap(); @@ -406,9 +425,9 @@ mod tests { .set_bool("core.longpaths", true) .unwrap(); - let file_name = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.txt"; + let file_name = long_file_name_255(); - repo_write_file(&repo, file_name, "").unwrap(); + repo_write_file(&repo, &file_name, "").unwrap(); assert_eq!(get_statuses(repo_path), (1, 0)); @@ -421,26 +440,4 @@ mod tests { assert_eq!(get_statuses(repo_path), (0, 1)); } - - #[test] - fn test_stage_all_long_filepath() { - let (_td, repo) = repo_init().unwrap(); - - let repo_path = repo.workdir().unwrap().to_str().unwrap(); - - repo.config() - .unwrap() - .set_bool("core.longpaths", true) - .unwrap(); - - let file_name = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.txt"; - - repo_write_file(&repo, file_name, "").unwrap(); - - assert_eq!(get_statuses(repo_path), (1, 0)); - - stage_add_all(repo_path, file_name).unwrap(); - - assert_eq!(get_statuses(repo_path), (0, 1)); - } }