use pxar::decoder::SeqRead;
use pxar::encoder::sync as encoder;
use pxar::encoder::{LinkOffset, SeqWrite};
-use pxar::format::{self, mode, Device};
+use pxar::format::{mode, Device};
use pxar::EntryKind as PxarEntryKind;
use pxar::Metadata;
self.no_hardlink()?;
let _: () = encoder.add_socket(&self.metadata, &self.name)?;
}
-
- other => bail!("TODO: encode_entry for {:?}", other),
}
Ok(())
}
format_err!("failed to get contents for file entry: {:?}", item.path())
})?
.read_to_end(&mut data)?;
+ if data.len() as u64 != *size {
+ bail!(
+ "file {:?} was advertised to be of size {} but we read {} bytes",
+ item.path(),
+ size,
+ data.len(),
+ );
+ }
contents.push(make_entry()?.entry(EntryKind::File(data)));
}
PxarEntryKind::Directory => {
PxarEntryKind::Socket => {
contents.push(make_entry()?.entry(EntryKind::Socket));
}
- other => todo!("decode for kind {:?}", other),
}
}
let mut encoder =
encoder::Encoder::from_std(&mut file, &test_fs.metadata).expect("failed to create encoder");
encode_directory(&mut encoder, &test_fs).expect("failed to encode test file system");
- encoder.finish();
+ encoder
+ .finish()
+ .expect("failed to finish encoding the pxar archive");
assert!(!file.is_empty(), "encoder did not write any data");