MCPcopy Create free account
hub / github.com/archlinux/alpm / package_metadata_iterator

Function package_metadata_iterator

alpm-package/tests/integration.rs:907–954  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

905// Ensure that the metadata iterator short-circuits after finding all metadata files.
906#[test]
907fn package_metadata_iterator() -> TestResult {
908 init_logger();
909
910 let temp_dir = TempDir::new()?;
911 let package = create_package(
912 &temp_dir,
913 &InputDirConfig {
914 build_info: true,
915 data_files: true,
916 mtree: true,
917 package_info: true,
918 scriptlet: true,
919 },
920 CompressionSettings::Xz {
921 compression_level: Default::default(),
922 },
923 )?;
924
925 let mut reader: PackageReader = package.clone().try_into()?;
926 let mut metadata_entries = reader.metadata_entries()?;
927
928 assert!(matches!(
929 metadata_entries.next(),
930 Some(Ok(MetadataEntry::BuildInfo(_)))
931 ));
932 assert!(matches!(
933 metadata_entries.next(),
934 Some(Ok(MetadataEntry::Mtree(_)))
935 ));
936 assert!(matches!(
937 metadata_entries.next(),
938 Some(Ok(MetadataEntry::PackageInfo(_)))
939 ));
940 // Make sure that the iterator no longer returns any values.
941 // This should not advance the iterator, as all metadata files have been found.
942 assert!(metadata_entries.next().is_none());
943
944 // Now test that the short-circuit of the iterator actually worked.
945 // Get the underlying raw Entries iterator and make sure that this non-filtering iterator still
946 // produces data files.
947 let mut inner_iter = metadata_entries.into_inner().into_inner();
948 assert!(
949 inner_iter.next().is_some(),
950 "Expected the non-filtering iterator to still return a value."
951 );
952
953 Ok(())
954}
955
956// Small helper function to assert that an entry is a metadata entry and then returns
957// that entry.

Callers

nothing calls this directly

Calls 4

create_packageFunction · 0.85
metadata_entriesMethod · 0.80
init_loggerFunction · 0.70
into_innerMethod · 0.45

Tested by

no test coverage detected