1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

//! `scoped_task` provides wrappers that kill a child process when the
//! wrapper goes out of scope, or the current process exits.
//!
//! Note that this doesn't guarantee that the child process will be killed in
//! all cases: if the current process is terminated, or exits with
//! [`std::process::abort`], the child process will not be killed. Panics and
//! [`std::process::exit`] are explicitly supported, however.
//!
//! These wrappers are especially useful for tests that spawn child processes.
//! If an assert fails, the child process can live forever. This can cause the
//! test runner to hang if the child process cloned the test's stdout or stderr
//! handle, which is often the case.
//!
//! For this reason, it is recommended that all Rust tests which spawn processes
//! use `scoped_task` to do so.

mod zircon;

pub use zircon::{create_child_job, install_hooks, job_default, spawn, spawn_etc, Scoped};