blob: 021d0613270ff5ede00db4dfb2a9537b40940b1b [file] [log] [blame]
//-
// Copyright 2018 Jason Lingle
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use std::io;
use cmdline;
quick_error! {
/// Enum for errors produced by the rusty-fork crate.
#[derive(Debug)]
pub enum Error {
/// An unknown flag was encountered when examining the current
/// process's argument list.
///
/// The string is the flag that was encountered.
UnknownFlag(flag: String) {
display("The flag '{:?}' was passed to the Rust test \
process, but rusty-fork does not know how to \
handle it.\n\
If you are using the standard Rust \
test harness and have the latest version of the \
rusty-fork crate, please report a bug to\n\
\thttps://github.com/AltSysrq/rusty-fork/issues\n\
In the mean time, you can tell rusty-fork how to \
handle this flag by setting the environment variable \
`{}` to one of the following values:\n\
\tpass - Pass the flag (alone) to the child process\n\
\tpass-arg - Pass the flag and its following argument \
to the child process.\n\
\tdrop - Don't pass the flag to the child process.\n\
\tdrop-arg - Don't pass the flag or its following \
argument to the child process.",
flag, cmdline::env_var_for_flag(&flag))
}
/// A flag was encountered when examining the current process's
/// argument list which is known but cannot be handled in any sensible
/// way.
///
/// The strings are the flag encountered and a human-readable message
/// about why the flag could not be handled.
DisallowedFlag(flag: String, message: String) {
display("The flag '{:?}' was passed to the Rust test \
process, but rusty-fork cannot handle it; \
reason: {}", flag, message)
}
/// Spawning a subprocess failed.
SpawnError(err: io::Error) {
from()
cause(err)
display("Spawn failed: {}", err)
}
}
}
/// General `Result` type for rusty-fork.
pub type Result<T> = ::std::result::Result<T, Error>;