()
| 971 | // Ensure that the package entry iterator short-circuits after finding all known entries. |
| 972 | #[test] |
| 973 | fn package_entry_iterator() -> TestResult { |
| 974 | init_logger(); |
| 975 | |
| 976 | let temp_dir = TempDir::new()?; |
| 977 | let package = create_package( |
| 978 | &temp_dir, |
| 979 | &InputDirConfig { |
| 980 | build_info: true, |
| 981 | data_files: true, |
| 982 | mtree: true, |
| 983 | package_info: true, |
| 984 | scriptlet: true, |
| 985 | }, |
| 986 | CompressionSettings::Xz { |
| 987 | compression_level: Default::default(), |
| 988 | }, |
| 989 | )?; |
| 990 | |
| 991 | let mut reader: PackageReader = package.clone().try_into()?; |
| 992 | let mut entries = reader.entries()?; |
| 993 | |
| 994 | assert!(matches!( |
| 995 | assert_metadata_entry(entries.next())?, |
| 996 | MetadataEntry::BuildInfo(_) |
| 997 | )); |
| 998 | assert!(matches!( |
| 999 | entries.next(), |
| 1000 | Some(Ok(PackageEntry::InstallScriptlet(_))) |
| 1001 | )); |
| 1002 | assert!(matches!( |
| 1003 | assert_metadata_entry(entries.next())?, |
| 1004 | MetadataEntry::Mtree(_) |
| 1005 | )); |
| 1006 | assert!(matches!( |
| 1007 | assert_metadata_entry(entries.next())?, |
| 1008 | MetadataEntry::PackageInfo(_) |
| 1009 | )); |
| 1010 | // Make sure that the iterator no longer returns any values. |
| 1011 | // This should not advance the iterator, as all metadata files have been found. |
| 1012 | assert!(entries.next().is_none()); |
| 1013 | |
| 1014 | // Now test that the short-circuit of the iterator actually worked. |
| 1015 | // Get the underlying raw Entries iterator and make sure that this non-filtering iterator still |
| 1016 | // produces data files. |
| 1017 | let mut inner_iter = entries.into_inner(); |
| 1018 | assert!( |
| 1019 | inner_iter.next().is_some(), |
| 1020 | "Expected the non-filtering iterator to still return a value." |
| 1021 | ); |
| 1022 | |
| 1023 | Ok(()) |
| 1024 | } |
| 1025 | |
| 1026 | // Ensure that the package entry iterator short-circuits even if install scriptlet is missing. |
| 1027 | #[test] |
nothing calls this directly
no test coverage detected