Files
drop/libraries/libarchive/tests/lib.rs
T
Jamie Winsor 98168ddcf1 Initial commit
2016-01-09 15:40:08 -08:00

98 lines
3.1 KiB
Rust

extern crate libarchive;
pub mod util;
use std::fs::File;
use libarchive::archive::{self, ReadFilter, ReadFormat};
use libarchive::reader::{self, Reader};
use libarchive::writer;
#[test]
fn reading_from_file() {
let tar = util::path::fixture("sample.tar.gz");
let mut builder = reader::Builder::new();
builder.support_format(ReadFormat::All).ok();
builder.support_filter(ReadFilter::All).ok();
let mut reader = builder.open_file(tar).ok().unwrap();
reader.next_header();
// let entry: &archive::Entry = &reader.entry;
// println!("{:?}", entry.pathname());
// println!("{:?}", entry.size());
// for entry in reader.entries() {
// let file = entry as &archive::Entry;
// println!("{:?}", file.pathname());
// println!("{:?}", file.size());
// }
assert_eq!(4, 4);
}
#[test]
fn read_archive_from_stream() {
let tar = util::path::fixture("sample.tar.gz");
let f = File::open(tar).ok().unwrap();
let mut builder = reader::Builder::new();
builder.support_format(ReadFormat::All).ok();
builder.support_filter(ReadFilter::All).ok();
match builder.open_stream(f) {
Ok(mut reader) => {
println!("{:?}", reader.header_position());
let writer = writer::Disk::new();
writer.write(&mut reader).ok();
println!("{:?}", reader.header_position());
assert_eq!(4, 4)
},
Err(e) => {
println!("{:?}", e);
}
}
}
#[test]
fn extracting_from_file() {
let tar = util::path::fixture("sample.tar.gz");
let mut builder = reader::Builder::new();
builder.support_format(ReadFormat::All).ok();
builder.support_filter(ReadFilter::All).ok();
let mut reader = builder.open_file(tar).ok().unwrap();
println!("{:?}", reader.header_position());
let writer = writer::Disk::new();
writer.write(&mut reader).ok();
println!("{:?}", reader.header_position());
assert_eq!(4, 4)
}
#[test]
fn extracting_an_archive_with_options() {
let tar = util::path::fixture("sample.tar.gz");
let mut builder = reader::Builder::new();
builder.support_format(ReadFormat::All).ok();
builder.support_filter(ReadFilter::All).ok();
let mut reader = builder.open_file(tar).ok().unwrap();
println!("{:?}", reader.header_position());
let mut opts = archive::ExtractOptions::new();
opts.add(archive::ExtractOption::Time);
let writer = writer::Disk::new();
writer.set_options(&opts).ok();
writer.write(&mut reader).ok();
println!("{:?}", reader.header_position());
assert_eq!(4, 4)
}
#[test]
fn extracting_a_reader_twice() {
let tar = util::path::fixture("sample.tar.gz");
let mut builder = reader::Builder::new();
builder.support_format(ReadFormat::All).ok();
builder.support_filter(ReadFilter::All).ok();
let mut reader = builder.open_file(tar).ok().unwrap();
println!("{:?}", reader.header_position());
let writer = writer::Disk::new();
writer.write(&mut reader).ok();
println!("{:?}", reader.header_position());
match writer.write(&mut reader) {
Ok(_) => println!("oops"),
Err(_) => println!("nice")
}
assert_eq!(4, 4)
}