Skip to main content

ic_testkit/pic/
mod.rs

1//! PocketIC re-exports and value-adding host-test harness helpers.
2
3pub use pocket_ic::{ErrorCode, PocketIc, PocketIcBuilder, RejectCode, RejectResponse};
4
5mod baseline;
6mod calls;
7mod diagnostics;
8mod errors;
9mod lifecycle;
10mod snapshot;
11mod standalone;
12mod startup;
13mod time;
14
15pub use baseline::{
16    CachedPocketIcBaseline, CachedPocketIcBaselineGuard,
17    restore_or_rebuild_cached_pocket_ic_baseline,
18};
19pub use calls::CandidCallExt;
20pub use diagnostics::PocketIcDiagnosticsExt;
21pub use errors::{
22    CandidCallContext, CandidCallError, CandidCallErrorKind, CanisterInstallError,
23    StandaloneCanisterFixtureError,
24};
25pub use lifecycle::{CanisterInstallExt, InstallSpec, RetryPolicy};
26pub use snapshot::{
27    ControllerSnapshotError, ControllerSnapshots, PocketIcSnapshotExt, SnapshotAttemptFailure,
28    SnapshotCleanupFailure,
29};
30pub use standalone::{
31    StandaloneCanisterFixture, install_prebuilt_canister, install_prebuilt_canister_from_spec,
32    install_prebuilt_canister_with_cycles, try_install_prebuilt_canister,
33    try_install_prebuilt_canister_from_spec, try_install_prebuilt_canister_with_cycles,
34};
35pub use startup::PocketIcStartError;
36pub use time::PocketIcTimeExt;
37
38/// Create a fresh PocketIC instance with the default application subnet layout.
39#[must_use]
40pub fn pic() -> PocketIc {
41    try_pic().unwrap_or_else(|err| panic!("failed to start PocketIC: {err}"))
42}
43
44/// Create a fresh PocketIC instance without panicking on startup failures.
45pub fn try_pic() -> Result<PocketIc, PocketIcStartError> {
46    try_build_pocket_ic(PocketIcBuilder::new().with_application_subnet())
47}
48
49/// Build a custom PocketIC topology with typed startup diagnostics.
50#[must_use]
51pub fn build_pocket_ic(builder: PocketIcBuilder) -> PocketIc {
52    try_build_pocket_ic(builder).unwrap_or_else(|err| panic!("failed to start PocketIC: {err}"))
53}
54
55/// Build a custom PocketIC topology without panicking on startup failures.
56pub fn try_build_pocket_ic(builder: PocketIcBuilder) -> Result<PocketIc, PocketIcStartError> {
57    startup::try_build_pocket_ic(builder)
58}