diff options
Diffstat (limited to 'src/config.rs')
| -rw-r--r-- | src/config.rs | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/config.rs b/src/config.rs index 320661f..0a867e3 100644 --- a/src/config.rs +++ b/src/config.rs | |||
| @@ -562,9 +562,10 @@ impl Config { | |||
| 562 | } | 562 | } |
| 563 | 563 | ||
| 564 | /// Get effective git data path | 564 | /// Get effective git data path |
| 565 | /// Returns a temp directory when using memory backend, otherwise the configured path | 565 | /// Returns a temp directory when using memory backend with default path, otherwise the configured path |
| 566 | pub fn effective_git_data_path(&self) -> String { | 566 | pub fn effective_git_data_path(&self) -> String { |
| 567 | if self.database_backend == DatabaseBackend::Memory { | 567 | if self.database_backend == DatabaseBackend::Memory && self.git_data_path == "./data/git" { |
| 568 | // Only use default temp directory if git_data_path is still the default value | ||
| 568 | std::env::temp_dir() | 569 | std::env::temp_dir() |
| 569 | .join("ngit-grasp-git") | 570 | .join("ngit-grasp-git") |
| 570 | .to_string_lossy() | 571 | .to_string_lossy() |
| @@ -733,9 +734,11 @@ mod tests { | |||
| 733 | } | 734 | } |
| 734 | 735 | ||
| 735 | #[test] | 736 | #[test] |
| 736 | fn test_memory_backend_uses_temp_dir() { | 737 | fn test_memory_backend_uses_temp_dir_with_default_path() { |
| 738 | // When git_data_path is the default value, memory backend uses temp dir | ||
| 737 | let config = Config { | 739 | let config = Config { |
| 738 | database_backend: DatabaseBackend::Memory, | 740 | database_backend: DatabaseBackend::Memory, |
| 741 | git_data_path: "./data/git".to_string(), // Default value | ||
| 739 | ..Config::for_testing() | 742 | ..Config::for_testing() |
| 740 | }; | 743 | }; |
| 741 | let git_path = config.effective_git_data_path(); | 744 | let git_path = config.effective_git_data_path(); |
| @@ -743,6 +746,18 @@ mod tests { | |||
| 743 | } | 746 | } |
| 744 | 747 | ||
| 745 | #[test] | 748 | #[test] |
| 749 | fn test_memory_backend_respects_custom_path() { | ||
| 750 | // When git_data_path is explicitly set, memory backend respects it | ||
| 751 | let config = Config { | ||
| 752 | database_backend: DatabaseBackend::Memory, | ||
| 753 | git_data_path: "./custom/git/path".to_string(), | ||
| 754 | ..Config::for_testing() | ||
| 755 | }; | ||
| 756 | let git_path = config.effective_git_data_path(); | ||
| 757 | assert_eq!(git_path, "./custom/git/path"); | ||
| 758 | } | ||
| 759 | |||
| 760 | #[test] | ||
| 746 | fn test_lmdb_backend_uses_configured_path() { | 761 | fn test_lmdb_backend_uses_configured_path() { |
| 747 | let config = Config { | 762 | let config = Config { |
| 748 | database_backend: DatabaseBackend::Lmdb, | 763 | database_backend: DatabaseBackend::Lmdb, |