bollard 0.21.0

An asynchronous Docker daemon API
Documentation
use bollard::models::SystemVersion;
#[cfg(unix)]
use bollard::ClientVersion;
use bollard::Docker;
use tokio::runtime::Runtime;

#[macro_use]
mod common;

#[cfg(windows)]
#[test]
fn test_version_named_pipe() {
    rt_exec!(
        Docker::connect_with_named_pipe_defaults()
            .unwrap()
            .version(),
        |version: SystemVersion| assert_eq!(version.os.unwrap(), "windows")
    )
}

#[cfg(all(unix, not(feature = "test_http")))]
#[test]
#[allow(clippy::redundant_closure_call)]
fn test_version_unix() {
    rt_exec!(
        Docker::connect_with_unix_defaults().unwrap().version(),
        |version: SystemVersion| assert_eq!(version.os.unwrap(), "linux")
    )
}

#[cfg(feature = "test_ssl")]
#[test]
fn test_version_ssl() {
    rt_exec!(
        Docker::connect_with_ssl_defaults().unwrap().version(),
        |version: SystemVersion| assert_eq!(version.os.unwrap(), "linux")
    )
}

#[cfg(feature = "test_http")]
#[test]
fn test_version_http() {
    #[cfg(unix)]
    rt_exec!(
        Docker::connect_with_http_defaults().unwrap().version(),
        |version: SystemVersion| assert_eq!(version.os.unwrap(), "linux")
    );
    #[cfg(windows)]
    rt_exec!(
        Docker::connect_with_http_defaults().unwrap().version(),
        |version: SystemVersion| assert_eq!(version.os.unwrap(), "windows")
    )
}

#[cfg(feature = "test_ssh")]
#[test]
fn test_version_ssh() {
    rt_exec!(
        Docker::connect_with_ssh_defaults().unwrap().version(),
        |version: SystemVersion| assert_eq!(version.os.unwrap(), "linux")
    );
}

#[cfg(all(unix, feature = "test_podman"))]
#[test]
#[allow(clippy::redundant_closure_call)]
fn test_version_podman() {
    rt_exec!(
        Docker::connect_with_podman_defaults().unwrap().version(),
        |version: SystemVersion| assert_eq!(version.os.unwrap(), "linux")
    )
}

#[cfg(unix)]
#[test]
fn test_downversioning() {
    let rt = Runtime::new().unwrap();

    let docker = Docker::connect_with_unix(
        "unix:///var/run/docker.sock",
        120,
        &ClientVersion {
            major_version: 1,
            minor_version: 24,
        },
    )
    .unwrap();

    let fut = async move {
        let docker = &docker.negotiate_version().await.unwrap();

        let _ = &docker.version().await.unwrap();

        assert_eq!(docker.client_version().to_string(), "1.24".to_string());
    };
    rt.block_on(fut);
}

#[test]
#[allow(clippy::redundant_closure_call)]
fn test_connect_with_defaults() {
    #[cfg(unix)]
    rt_exec!(
        Docker::connect_with_defaults().unwrap().version(),
        |version: SystemVersion| assert_eq!(version.os.unwrap(), "linux")
    );
    #[cfg(windows)]
    rt_exec!(
        Docker::connect_with_defaults().unwrap().version(),
        |version: SystemVersion| assert_eq!(version.os.unwrap(), "windows")
    )
}