mirror of
https://github.com/Drop-OSS/drop.git
synced 2026-07-25 01:13:39 +10:00
Initial commit
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,97 @@
|
||||
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)
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
pub mod path;
|
||||
@@ -0,0 +1,18 @@
|
||||
use std::env;
|
||||
use std::path::PathBuf;
|
||||
|
||||
pub fn exe_path() -> PathBuf {
|
||||
env::current_exe().unwrap()
|
||||
}
|
||||
|
||||
pub fn root() -> PathBuf {
|
||||
exe_path().parent().unwrap().parent().unwrap().parent().unwrap().join("tests")
|
||||
}
|
||||
|
||||
pub fn fixtures() -> PathBuf {
|
||||
root().join("fixtures")
|
||||
}
|
||||
|
||||
pub fn fixture(name: &str) -> PathBuf {
|
||||
fixtures().join(name)
|
||||
}
|
||||
Reference in New Issue
Block a user