| //- |
| // 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>; |