@@ -34,79 +34,56 @@ pub fn add_favorite(items: &mut Vec<String>, path: &Path) -> bool {
3434#[ cfg( test) ]
3535mod tests {
3636 use super :: * ;
37+ use crate :: test_support:: { CwdGuard , create_temp_dir} ;
3738 use std:: fs;
38- use std:: path:: PathBuf ;
3939 use std:: sync:: Mutex ;
4040
4141 static CWD_LOCK : Mutex < ( ) > = Mutex :: new ( ( ) ) ;
4242
43- fn create_temp_dir ( prefix : & str ) -> PathBuf {
44- let mut path = std:: env:: temp_dir ( ) ;
45- let nanos = std:: time:: SystemTime :: now ( )
46- . duration_since ( std:: time:: UNIX_EPOCH )
47- . unwrap ( )
48- . as_nanos ( ) ;
49- path. push ( format ! ( "{}_{}" , prefix, nanos) ) ;
50- fs:: create_dir_all ( & path) . unwrap ( ) ;
51- path
52- }
53-
5443 #[ test]
5544 fn test_load_favorites_missing_file_returns_empty ( ) {
5645 let _guard = CWD_LOCK . lock ( ) . unwrap ( ) ;
5746 let base = create_temp_dir ( "favorites_missing" ) ;
58- let original = std:: env:: current_dir ( ) . unwrap ( ) ;
59- std:: env:: set_current_dir ( & base) . unwrap ( ) ;
47+ let _cwd = CwdGuard :: change_to ( & base) ;
6048
6149 let favorites = load_favorites ( ) ;
6250 assert ! ( favorites. is_empty( ) ) ;
63-
64- std:: env:: set_current_dir ( original) . unwrap ( ) ;
6551 }
6652
6753 #[ test]
6854 fn test_save_and_load_favorites_round_trip ( ) {
6955 let _guard = CWD_LOCK . lock ( ) . unwrap ( ) ;
7056 let base = create_temp_dir ( "favorites_roundtrip" ) ;
71- let original = std:: env:: current_dir ( ) . unwrap ( ) ;
72- std:: env:: set_current_dir ( & base) . unwrap ( ) ;
57+ let _cwd = CwdGuard :: change_to ( & base) ;
7358
7459 let items = vec ! [ "/tmp/a" . to_string( ) , "/tmp/b" . to_string( ) ] ;
7560 save_favorites ( & items) ;
7661 let loaded = load_favorites ( ) ;
7762 assert_eq ! ( loaded, items) ;
78-
79- std:: env:: set_current_dir ( original) . unwrap ( ) ;
8063 }
8164
8265 #[ test]
8366 fn test_add_favorite_de_dupes_and_persists ( ) {
8467 let _guard = CWD_LOCK . lock ( ) . unwrap ( ) ;
8568 let base = create_temp_dir ( "favorites_add" ) ;
86- let original = std:: env:: current_dir ( ) . unwrap ( ) ;
87- std:: env:: set_current_dir ( & base) . unwrap ( ) ;
69+ let _cwd = CwdGuard :: change_to ( & base) ;
8870
8971 let mut items = vec ! [ ] ;
9072 let path = Path :: new ( "/tmp/test" ) ;
9173 assert ! ( add_favorite( & mut items, path) ) ;
9274 assert ! ( !add_favorite( & mut items, path) ) ;
9375 let loaded = load_favorites ( ) ;
9476 assert_eq ! ( loaded, vec![ "/tmp/test" . to_string( ) ] ) ;
95-
96- std:: env:: set_current_dir ( original) . unwrap ( ) ;
9777 }
9878
9979 #[ test]
10080 fn test_load_favorites_ignores_empty_lines ( ) {
10181 let _guard = CWD_LOCK . lock ( ) . unwrap ( ) ;
10282 let base = create_temp_dir ( "favorites_empty_lines" ) ;
103- let original = std:: env:: current_dir ( ) . unwrap ( ) ;
104- std:: env:: set_current_dir ( & base) . unwrap ( ) ;
83+ let _cwd = CwdGuard :: change_to ( & base) ;
10584
10685 fs:: write ( "favorites.txt" , "\n /a\n \n /b\n " ) . unwrap ( ) ;
10786 let loaded = load_favorites ( ) ;
10887 assert_eq ! ( loaded, vec![ "/a" . to_string( ) , "/b" . to_string( ) ] ) ;
109-
110- std:: env:: set_current_dir ( original) . unwrap ( ) ;
11188 }
11289}
0 commit comments