Skip to content

Commit ca2979a

Browse files
committed
test: test changes
1 parent ec858fc commit ca2979a

1 file changed

Lines changed: 65 additions & 0 deletions

File tree

crates/suppaftp/src/list.rs

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,31 @@ mod tests {
655655
);
656656
}
657657

658+
#[test]
659+
fn parse_dos_line_with_space_before_ampm() {
660+
let file: File = ListParser::parse_dos("04-08-14 03:09 PM 1234 readme.txt")
661+
.ok()
662+
.unwrap();
663+
pretty_assertions::assert_eq!(file.name(), "readme.txt");
664+
pretty_assertions::assert_eq!(file.size, 1234);
665+
assert!(file.is_file());
666+
667+
let file: File = ListParser::parse_dos("04-08-14 10:30 AM <DIR> somedir")
668+
.ok()
669+
.unwrap();
670+
pretty_assertions::assert_eq!(file.name(), "somedir");
671+
assert!(file.is_directory());
672+
673+
// Verify both formats produce the same timestamp
674+
let with_space = ListParser::parse_dos("04-08-14 03:09 PM 1234 readme.txt")
675+
.ok()
676+
.unwrap();
677+
let without_space = ListParser::parse_dos("04-08-14 03:09PM 1234 readme.txt")
678+
.ok()
679+
.unwrap();
680+
pretty_assertions::assert_eq!(with_space.modified, without_space.modified);
681+
}
682+
658683
#[test]
659684
fn parse_dos_line_with_comma_separated_size() {
660685
let file: File = ListParser::parse_dos("04-08-14 03:09PM 1,234 readme.txt")
@@ -830,6 +855,36 @@ mod tests {
830855
.unwrap(),
831856
Duration::from_secs(1396969740)
832857
);
858+
// Space before AM/PM
859+
pretty_assertions::assert_eq!(
860+
ListParser::parse_dostime("04-08-14 03:09 PM")
861+
.ok()
862+
.unwrap()
863+
.duration_since(SystemTime::UNIX_EPOCH)
864+
.ok()
865+
.unwrap(),
866+
Duration::from_secs(1396969740)
867+
);
868+
// AM variant without space
869+
pretty_assertions::assert_eq!(
870+
ListParser::parse_dostime("04-08-14 03:09AM")
871+
.ok()
872+
.unwrap()
873+
.duration_since(SystemTime::UNIX_EPOCH)
874+
.ok()
875+
.unwrap(),
876+
Duration::from_secs(1396926540)
877+
);
878+
// AM variant with space
879+
pretty_assertions::assert_eq!(
880+
ListParser::parse_dostime("04-08-14 03:09 AM")
881+
.ok()
882+
.unwrap()
883+
.duration_since(SystemTime::UNIX_EPOCH)
884+
.ok()
885+
.unwrap(),
886+
Duration::from_secs(1396926540)
887+
);
833888
// Not enough argument for datetime
834889
assert!(ListParser::parse_dostime("04-08-14").is_err());
835890
}
@@ -860,6 +915,16 @@ mod tests {
860915
pretty_assertions::assert_eq!(file.name(), "docs");
861916
assert!(file.is_directory());
862917

918+
// cdir (current directory) should parse as directory
919+
let file = ListParser::parse_mlsd("type=cdir;size=4096;modify=20181105163248; .").unwrap();
920+
pretty_assertions::assert_eq!(file.name(), ".");
921+
assert!(file.is_directory());
922+
923+
// pdir (parent directory) should parse as directory
924+
let file = ListParser::parse_mlsd("type=pdir;size=4096;modify=20181105163248; ..").unwrap();
925+
pretty_assertions::assert_eq!(file.name(), "..");
926+
assert!(file.is_directory());
927+
863928
let file = ListParser::parse_mlsd(
864929
"type=file;size=4096;modify=20181105163248;unix.mode=644; omar.txt",
865930
)

0 commit comments

Comments
 (0)