docker_extract 0.2.1

A library to extract the filesystem from a docker image
Documentation
#[cfg(test)]
use docker_extract::extract_image;
use std::io;
use std::path::Path;
use tempdir::TempDir;

#[test]
fn test_extract_ubuntu() {
    let tmp_dir = TempDir::new("docker-extract-test").unwrap();
    let tmp_dir_str = String::from(tmp_dir.path().to_str().unwrap());
    extract_image("ubuntu", "bionic-20200112", Path::new(tmp_dir_str.as_str())).unwrap();
    assert_eq!(
        true,
        Path::new(format!("{}/var/lib/dpkg/status", tmp_dir_str).as_str()).exists()
    );
}

#[test]
fn test_extract_alpine() {
    let tmp_dir = TempDir::new("docker-extract-test").unwrap();
    let tmp_dir_str = String::from(tmp_dir.path().to_str().unwrap());
    extract_image("alpine", "3.11.3", Path::new(tmp_dir_str.as_str())).unwrap();
    assert_eq!(
        true,
        Path::new(format!("{}/lib/apk/db/installed", tmp_dir_str.as_str()).as_str()).exists()
    );
}

#[test]
fn test_extract_non_existing() {
    let tmp_dir = TempDir::new("docker-extract-test").unwrap();
    let tmp_dir_str = String::from(tmp_dir.path().to_str().unwrap());
    let result = extract_image("does-not", "exist", Path::new(tmp_dir_str.as_str()));
    assert_eq!(
        result.err().unwrap().to_string(),
        io::Error::new(
            io::ErrorKind::Other,
            "Error running 'docker save does-not:exist'"
        )
        .to_string()
    );
}

#[test]
fn test_extract_with_absolute_symlinks() {
    let tmp_dir = TempDir::new("docker-extract-test").unwrap();
    let tmp_dir_str = String::from(tmp_dir.path().to_str().unwrap());
    extract_image("tiangolo/uwsgi-nginx-flask", "python3.6", Path::new(tmp_dir_str.as_str())).unwrap();
}