diff --git a/src/filetransfer/ftp_transfer.rs b/src/filetransfer/ftp_transfer.rs index 56b2a1a..3fecf55 100644 --- a/src/filetransfer/ftp_transfer.rs +++ b/src/filetransfer/ftp_transfer.rs @@ -719,7 +719,7 @@ mod tests { } #[test] - fn test_filetransfer_ftp_parse_list_line() { + fn test_filetransfer_ftp_parse_list_line_unix() { let ftp: FtpFileTransfer = FtpFileTransfer::new(false); // Simple file let fs_entry: FsEntry = ftp @@ -850,6 +850,95 @@ mod tests { .is_err()); } + #[test] + fn test_filetransfer_ftp_parse_list_line_dos() { + let ftp: FtpFileTransfer = FtpFileTransfer::new(false); + // Simple file + let fs_entry: FsEntry = ftp + .parse_list_line( + PathBuf::from("/tmp").as_path(), + "04-08-14 03:09PM 8192 omar.txt", + ) + .ok() + .unwrap(); + if let FsEntry::File(file) = fs_entry { + assert_eq!(file.abs_path, PathBuf::from("/tmp/omar.txt")); + assert_eq!(file.name, String::from("omar.txt")); + assert_eq!(file.size, 8192); + assert!(file.symlink.is_none()); + assert_eq!(file.user, None); + assert_eq!(file.group, None); + assert_eq!(file.unix_pex, None); + assert_eq!( + file.last_access_time + .duration_since(SystemTime::UNIX_EPOCH) + .ok() + .unwrap(), + Duration::from_secs(1407164940) + ); + assert_eq!( + file.last_change_time + .duration_since(SystemTime::UNIX_EPOCH) + .ok() + .unwrap(), + Duration::from_secs(1407164940) + ); + assert_eq!( + file.creation_time + .duration_since(SystemTime::UNIX_EPOCH) + .ok() + .unwrap(), + Duration::from_secs(1407164940) + ); + } else { + panic!("Expected file, got directory"); + } + // Directory + let fs_entry: FsEntry = ftp + .parse_list_line( + PathBuf::from("/tmp").as_path(), + "04-08-14 03:09PM