dockertest 0.3.0

A library to control docker containers when running your integration tests.
Documentation
# Changelog
All notable changes to this project will be documented in this file.

## [Unreleased]

## 0.3

### Added
- Added support for static containers that can be used across multiple tests, both internally
    and externally managed.
- Added support for capturing container logs. This is configurable through
    `Composition::with_log_options`.
- Added support to run on an existing docker network. This is configurable through
    `DockerTest::with_external_network`.
- Added support for container network aliases. This is configurable through `Composition::with_alias`
    and `Composition::alias`.
- Added `Composition::publish_all_ports` to publish all exposed ports of a container on an
    ephemeral host port.
- Added optional `tls` feature which when enabled and combined with setting the `DOCKER_TLS_VERIFY`
    env variable the connection with the docker daemon is done via TLS over tcp.

### Changed
- BREAKING Added support for custom docker registries. You may now specify a `Source`
    (renamed from `Remote`).
    Supplying `Source::RegistryWithDockerLogin` will extract the appropriate login token from the
    dockerd daemon credentials file, appropriate to the registry you are attempting to pull
    an image from. If `Source::RegistryWithCredentials` is used, you may specify the appropriate
    registry address, username, and password directly.
- BREAKING: `PullPolicy` is now specified on an `Image`, not the `Remote` (now `Source`) variant.
- BREAKING: `RunningContainer.ports` changed and renamed to `RunningContainer.host_port`.
    A specific port mapping can now be retrieved instead of all of them.

### Fixed
- Anonymous volumes are now cleaned up during teardown.

## 0.2.1

### Changed
- Upgrade tokio from 0.2 to 1.2
- Upgrade bollard from 0.8 t0 0.10

## 0.2.0

### Added
- Ability to communicate with containers when dockertest is ran within a docker container environment.
- Added host port mapping support. Usecase is for Windows where intra-container communication is not feasable with the same API used on Linux.

### Changed
- Upgraded to bollard 0.8
- Fixed compiling on stable
- BREAKING: Reworked volume API
- Container id generation is now all lowercase.
- BREAKING: Set container ip to localhost when running under windows. Network support is lacking on Windows.
- Documentation clarifications and spelling errors.

### Removed
- Diesel dev-dependency.

## 0.1.2

### Added
- Ability to conditionally build docker test images used for running DockerTest's own test suite.

## 0.1.1

### Added
- `DockerTest::run` now has an async version: `DockerTest::run_async`.
    This allows us to run async tests that are already scheduled on a runtime, e.g. async tests
    annotated with `#[tokio::test]`.

## 0.1

### Added
- `DockerTest::source()` is now puplic.
- `RunningContainer::assert_message()` allows one to assert a log outputs presence in the test body.
- `Composition::inject_container_name()` to inject the generated container name as an environmental
    variable for in other containers through its handle.
- Every `DockerTest` instance is ran in its own docker network.
- Control the teardown process of a test through the environmental variable `DOCKERTEST_PRUNE`.
    By setting this to one of the following values:
    * "always": [default] remove everything
    * "never": leave all containers running
    * "stop_on_failure": stop containers on execution failure
    * "running_on_failure": leave containers running on execution failure

    This allows us to more easily debug and inspect test failures by leaving the containers
    stopped/running.

### Changed
- BREAKING: `FnOnce` argument to `DockerTest::run` changed its return type to
    `Future<Output = ()> + Send + 'static`.
    This entails that the inline close must be a single async block.
    ```
    test.run(|ops| async move {
        assert!(true);
    });
    ```
- BREAKING: `FnOnce` argument to `DockerTest::run` changed its provided arguments to an owned
    variant of `DockerOperations`.
- BREAKING: `DockerOperations.handle()` changed to panicking method, directly returning a
    `RunningContainer` instead of a `Result`.

### Removed
- BREAKING: The ability to set host ip port mapping for each container.
    There should be no circumstances where using the docker network directly to communicate
    is insufficient.

## [0.0.4]

Last undocumented release.