@@ -84,8 +84,9 @@ impl Default for FsWatchActorBuilder {
84
84
}
85
85
86
86
impl MessageSource < FsWatchEvent , PathBuf > for FsWatchActorBuilder {
87
- fn register_peer ( & mut self , config : PathBuf , sender : DynSender < FsWatchEvent > ) {
88
- self . watch_dirs . push ( ( config, sender) ) ;
87
+ fn register_peer ( & mut self , path : PathBuf , sender : DynSender < FsWatchEvent > ) {
88
+ let path = path. canonicalize ( ) . unwrap_or_else ( |_| path. to_path_buf ( ) ) ;
89
+ self . watch_dirs . push ( ( path, sender) ) ;
89
90
}
90
91
}
91
92
@@ -173,12 +174,15 @@ mod tests {
173
174
174
175
#[ tokio:: test( flavor = "multi_thread" ) ]
175
176
async fn test_fs_events ( ) -> Result < ( ) , DynError > {
176
- let ttd = TempTedgeDir :: new ( ) ;
177
+ let temp = TempTedgeDir :: new ( ) ;
178
+ let ttd = temp. dir ( "watched-dir" ) ;
179
+ let ttd_link = temp. link_dir ( & ttd, "watched-symlink" ) ;
180
+ let ttd_full = ttd. to_path_buf ( ) . canonicalize ( ) . unwrap ( ) . to_path_buf ( ) ;
177
181
let mut fs_actor_builder = FsWatchActorBuilder :: new ( ) ;
178
182
let client_builder: SimpleMessageBoxBuilder < FsWatchEvent , NoMessage > =
179
183
SimpleMessageBoxBuilder :: new ( "FS Client" , 5 ) ;
180
184
181
- fs_actor_builder. register_peer ( ttd . to_path_buf ( ) , client_builder. get_sender ( ) ) ;
185
+ fs_actor_builder. register_peer ( ttd_link . to_path_buf ( ) , client_builder. get_sender ( ) ) ;
182
186
183
187
let actor = fs_actor_builder. build ( ) ;
184
188
let client_box = client_builder. build ( ) ;
@@ -195,9 +199,9 @@ mod tests {
195
199
client_box
196
200
. with_timeout ( TEST_TIMEOUT )
197
201
. assert_received_unordered ( [
198
- FsWatchEvent :: Modified ( ttd . to_path_buf ( ) . join ( "file_a" ) ) ,
199
- FsWatchEvent :: DirectoryCreated ( ttd . to_path_buf ( ) . join ( "dir_b" ) ) ,
200
- FsWatchEvent :: Modified ( ttd . to_path_buf ( ) . join ( "dir_b" ) . join ( "file_b" ) ) ,
202
+ FsWatchEvent :: Modified ( ttd_full . to_path_buf ( ) . join ( "file_a" ) ) ,
203
+ FsWatchEvent :: DirectoryCreated ( ttd_full . to_path_buf ( ) . join ( "dir_b" ) ) ,
204
+ FsWatchEvent :: Modified ( ttd_full . to_path_buf ( ) . join ( "dir_b" ) . join ( "file_b" ) ) ,
201
205
] )
202
206
. await ;
203
207
0 commit comments