Struct libcnb_test::TestRunner
source · [−]pub struct TestRunner { /* private fields */ }Expand description
Runner for libcnb integration tests.
Example
use libcnb_test::{assert_contains, assert_empty, BuildConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "test-fixtures/app"),
|context| {
assert_empty!(context.pack_stderr);
assert_contains!(context.pack_stdout, "Expected build output");
},
)Implementations
sourceimpl TestRunner
impl TestRunner
sourcepub fn new(tokio_runtime: Runtime, docker: Docker) -> Self
pub fn new(tokio_runtime: Runtime, docker: Docker) -> Self
Creates a new runner that uses the given Tokio runtime and Docker connection.
This function is meant for advanced use-cases where fine control over the Tokio runtime
and/or Docker connection is required. For the common use-cases, use Runner::default.
sourcepub fn build<C: Borrow<BuildConfig>, F: FnOnce(TestContext<'_>)>(
&self,
config: C,
f: F
)
pub fn build<C: Borrow<BuildConfig>, F: FnOnce(TestContext<'_>)>(
&self,
config: C,
f: F
)
Starts a new integration test build.
This function copies the application to a temporary directory (if necessary), cross-compiles the current
crate, packages it as a buildpack and then invokes pack
to build a new Docker image with the buildpacks specified by the passed BuildConfig.
Since this function is supposed to only be used in integration tests, failures are not
signalled via Result values. Instead, this function panics whenever an unexpected error
occurred to simplify testing code.
Example
use libcnb_test::{assert_contains, assert_empty, BuildConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "test-fixtures/app"),
|context| {
assert_empty!(context.pack_stderr);
assert_contains!(context.pack_stdout, "Expected build output");
},
)